목록분류 전체보기 (68)
모두야
NLR이란? : 호중구 대 림프구 비율 -> 종양 기실, 염증 및 전반적인 예후 상태를 반영한다. NLR = Npercent/Lpercent PLR이란? : 혈소판 값을 절대 림프구 수로 나눈 값 => NLR와 PLR이 낮은 것이 좋다. 림프구 수치는 높으면서, 호중구 수치와 혈소판 수치는 높지 않은 것이 좋다. PLR = plt/(Lpercent*WBC*10) RFE란? Recursive feature elimination 으로, 학습에 필요한 적절한 feature를 선택하는 feature selection 과정 중의 한 방법이다. 모든 feature들로부터, feature를 하나 하나 제거하면서 원하는 갯수의 feature가 남을 때까지 반복하는 것이다. 1. 학습하고 싶은 모델을 정한 후, 해당 모..
파이토치 에러로, num_worker=0 이 아닌 다른 값을 가지게 되면 나타나는 에러라고 한다. num_worker=0으로 지정해주니 에러가 발생하지 않았다.
Linux 우분투 18.04에 nvidia 그래픽 카드를 설치하여 사용하려고 한다. nvidia-smi 기존 그래픽 카드의 정보를 알기 위해서 위의 코드를 실행하게 되면 정보가 떠야하는데 아래와 같은 오류만 계속 난다. nvidia-smi NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running. 이 경우 nvidia GPU 드라이버에 문제가 생겨 발생하는 오류이다. 본인의 경우 nvidia 설치 시 버전 충돌에 문제가 있었던 것으로 판단한다. 오류를 해결하기 위해 설치된 모든 nvidia 드라이버를 삭제 후..
설치된 cuda랑 pytorch 버전이 맞지 않아 생기는 문제였다. print(torch.cuda.is_available()) >> Fasle 기존 cuda 버전은 11.2 였으므로 알맞은 pytorch 버전을 설치해줘야했다. pytorch version : 1.7.1 cuda version : 11.2 pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html Kobert에 알맞은 torch 버전은 1.10.0+cu111 이였다. 참고 자료
기존 Cuda 삭제 프로그램 추가/제거 들어가서 아래 NVIDIA에 관련된 프로그램을 모두 지운다. Cuda 버전 확인 갖고 있는 GPU 성능에 따라 알맞은 버전을 설치해야한다. 기존에 있던 버전이 맞지 않아 설치를 모두 했음에도 불구하고 gpu를 활용하지 못한 경험이 있다. 차근히 버전을 맞춰 설치할 필요성을 느꼈다. 1. 내 GPU 확인하기 나는 GeForce RTX 3060 을 가지고 있다. 아래 링크에 들어가서 확인해보니 나는 compute capability 8.6이 적합하다고 한다. https://en.wikipedia.org/wiki/CUDA#Version_features_and_specifications 2. 알맞은 CUDA 버전 확인하기 위의 링크에서 GPU에 맞는 CUDA SDK 버전을..
seq2seq의 문제점/ 해결 Encoder가 시계열 데이터를 인코딩 할 때, Encoder의 출력은 '고정 길이의 벡터' 이다. 입력 문장 길이에 관계없이, 항상 같은 길이의 벡터로 표현해야한다. -> 아무리 긴 문장이여도 고정 길이의 벡터로 변환 해야한다. ☞ Encoder 개선 Encoder 출력 길이를 입력 문장 길이에 따라 바꿔주는 것이 좋다. 시각별 LSTM 계층의 은닉 상태 벡터를 모두 이용하여 입력된 단어와 같은 수의 벡터를 얻는다. => 시각별 LSTM 계층의 은닉 상태에는 어떤 정보가 담겨 있을까? 직전에 입력된 단어의 정보가 많이 포함되어 있다. 은닉상태의 모든 시각만큼 꺼낸다 ☞ Decoder 개선 1. 맥락벡터 c [ 입력과 출력의 여러 단어 중 어떤 단어끼리 서로 관련이 있는가 ..
seq2seq 시계열 데이터 : 언어,음성,동영상 시계열↔시계열 데이터 변환 : 기계 번역→음성 인식 Encoder-Decoder 모델이다. Encoder : 마지막 은닉상태 h에 입력 문장(출발어)를 번역하는 데 필요한 정보가 인코딩된다. : LSTM의 은닉 상태 h 는 고정 길이 벡터이다. Decoder : LSTM 계층이 벡터 h를 입력 받는다. seq2seq는 LSTM 2개가 은닉 상태를 통해 이어져있다. seq2seq 구현하기 단어 단위가 아닌, 문자 단위의 패턴을 학습한다. 57+5 가 입력 되면, ['5','7','+','5']라는 리스트로 처리된다. (주의) 문자 수가 다 다르다. = 샘플마다 데이터의 시간 방향 크기가 다르다. = 가변 길이 시계열 데이터를 다룬다. ==> 미니배치 처리를..
언어 모델을 사용하여 '문장 생성' 수행 1. 말뭉치로 학습된 언어 모델을 이용하여 새로운 문장 생성 2. 개선된 언어 모델을 이용하여 더 자연스러운 문장 생성 seq2seq 구조 공부하기 : 한 시계열 데이터를 다른 시계열 데이터로 변환한다. : RNN 두 개를 연결한다. RNN을 사용한 문장 생성 순서 언어 모델에게 문장을 생성 시키는 순서 - "you say goodbye and I say hello." 라는 말뭉치로 학습한 언어 모델이다. 학습 된 언어 모델에 "I"라는 단어를 입력으로 준다. 언어 모델은 [그림 7-2]와 같은 확률분포를 출력한다. 다음 단어를 새로 생성한다. (1) [결정적 선택] 확률이 가장 높은 단어를 선택한다. (2) [확률적 선택] 단어의 확률에 맞게 선택한다. 확률 분..
언어 모델 구현하기 # coding: utf-8 import sys sys.path.append('..') from common.time_layers import * from common.base_model import BaseModel class Rnnlm(BaseModel): def __init__(self, vocab_size=10000, wordvec_size=100, hidden_size=100): V, D, H = vocab_size, wordvec_size, hidden_size rn = np.random.randn # 가중치 초기화 embed_W = (rn(V, D) / 100).astype('f') lstm_Wx = (rn(D, 4 * H) / np.sqrt(D)).astype('f') ..
RNN(기울기 폭발/ 기울기 손실) 에 이어서---- 기울기 폭발 원인 : 1보다 큰 Wh를 계속 곱해서 오버플로를 일으키며 NaN 값 발생된다. 해결 : 기울기 클리핑 기울기 손실 원인 : tanh의 계속된 미분, 1보다 작은 Wh를 계속 곱해줘서 기울기가 매우 작아진다. 해결 : 게이트가 추가 된 RNN - LSTM [ RNN 문제점은 어떻게 해결할 수 있을까?] 1) 기울기 폭발 - 기울기 클리핑으로 해결 threshold : 문턱값 g : 신경망에서 사용되는 모든 매개변수의 기울기를 하나로 모은 것 ||g|| (기울기의 L2노름) > 문턱값 초과하면 기울기를 수정하자. # 기울기 클리핑 구현 import numpy as np dW1 = np.random.rand(3, 3) * 10 dW2 = np..