Loading...
2023. 4. 24. 03:53

pytorch를 이용한 inference process 기본기 완벽하게 이해하기 & pytorch lightning

1. model.eval() model.train()과 비슷하게 model을 evaluation mode로 바꾸는 것 evaluation 전에 반드시 설정하는 것이 좋다 batchnorm이나 dropout같은 것들이 training과정과 evalutation과정에서 다르게 동작해야해서 설정해주는 것이 의미 있다 실제로 쓰지 않으면.. 결과가 매우 다르기 때문에 잊지말고 사용해야한다. 2. with torch.no_grad() evaluation은 단지 검증과정이다. 중간에 model의 parameter가 update된다면 문제가 있음 무슨 말이냐면 training 단계에서 update된 parameter를 가지고 evaluation하고 싶은거지 inference과정에서 따로 parameter를 또 upd..

2023. 4. 24. 03:23

pytorch를 이용한 training process 기본기 완벽하게 이해하기

1. training을 위해 필요한 것? training을 위해 dataset, dataloader를 준비해서 data를 효율적으로 뽑아낼 준비를 했고 설계한 model과 loss, optimizer, learning rate, scheduler, metric 등을 준비했다면 학습 준비 완료! 2. model.train() train하기 전에 model을 trainable하게 변경시키는 함수? 그런데 분명 model 설계할 때 나는 각종 parameter의 requires_grad=True로 한것같은데 굳이 해야하나??? batchnorm이나 dropout같은 것이 training 과정이랑 evaluation 과정에서 다르게 작동해야한다고 알려져있어서 train mode와 eval mode를 구분하기 위..

2023. 4. 21. 01:39

개발자가 숫자를 0부터 세야하는 이유 - loss function 사용할때 class는 0부터 시작하기(cuda error)

text classification 모델을 training할려고 하는데.. 익숙한 cuda error를 만났다 경험상 정확한 원인은 알 수 없고 tensor 타입이라든지 gpu cpu 안맞다든지.. 등등 여러가지 이유로 발생하는거고 CUDA_LAUNCH_BLOCKING=1 넣어보라는건 아무 효과도 없음 이런 경우는 가장 좋은건 데이터를 하나만 빼서 model에 넣어봐서 output을 하나만 계산해봐야함 그리고 저 에러만나면 런타임 다시 시작해야함 ------------------------------------------------------------------------------ 근데 뭐 여러가지 시도해봄 device에 torch.device("cuda:0")냐 torch.device("cuda")..

2023. 3. 11. 23:47

pytorch tensor 다루기 재활치료 2편 - view, squeeze, unsqueeze, type, cat, stack, ones_like, zeros_like, inplace -

1. view 원소의 수를 유지하면서 tensor의 크기를 변경하는 방법 numpy의 reshape와 같은 역할 t = np.array([[[0,1,2], [3,4,5]], [[6,7,8], [9,10,11]]]) ft = torch.FloatTensor(t) print(ft.shape) torch.Size([2, 2, 3]) 1-1) 이제 ft tensor를 view를 사용해서 2차원 tensor로 변경 print(ft.view([-1,3])) #ft라는 텐서를 (?,3)의 크기로 변경 print(ft.view([-1,3]).shape) tensor([[ 0., 1., 2.], [ 3., 4., 5.], [ 6., 7., 8.], [ 9., 10., 11.]]) torch.Size([4, 3]) vie..

2023. 3. 6. 02:33

pytorch tensor 다루기 재활치료 1편 -tensor, broadcasting, max, argmax -

1. 벡터, 행렬, 텐서 차원이 없는 값을 스칼라 1차원으로 구성된 값을 벡터(vector) 2차원으로 구성된 값을 행렬(matrix) 3차원 이상으로 구성된 값은 텐서(tensor) 인간은 3차원 세상에 살고 있다보니 4차원 이상부터는 머리로 상상하기 어렵다. 데이터사이언스에서는 3차원 이상의 텐서는 다차원 행렬이나 배열로 간주할 수 있다. 또한 주로 3차원 이상을 텐서라고 하며, 1차원 벡터나 2차원 행렬도 텐서라고 표현하기도 한다. 1차원 벡터 = 1차원 텐서, 2차원 행렬 = 2차원 텐서, ...... 2. tensor의 shape를 표현하는 방법? 2-1) 2차원 tensor 2차원 텐서의 크기를 (batch size * dim)으로 표현할 수 있다 훈련 데이터 하나의 크기를 256이라고 하자...

2023. 1. 8. 02:31

pytorch 재활훈련 -fine tuning 구현해보기-

1. fine tuning 출력층 등을 변경한 모델을 학습된 모델을 기반으로 구축한 후, 직접 준비한 데이터로 신경망 모델의 결합 가중치를 학습시키는 방법 결합 가중치의 초기값은 학습된 모델의 parameter를 사용하는 것이 보통이다. finetuning은 transfer learning과는 다르게 출력층, 출력층에 가까운 부분 뿐만 아니라, 모든 층의 parameter를 재학습시킨다는 것이 특징이다. 일반적으로 입력층에 가까운 부분의 parameter는 learning rate를 작게 설정하고, (경우에 따라서는 바꾸지 않고) 출력층에 가까운 부분의 parameter는 learning rate를 크게 설정한다 transfer learning처럼 학습된 모델을 기반으로 하는 fine tuning은 직접..