본문 바로가기

DeepLearning

(8)
[PYTORCH] DataLoader worker is killed by signal: killed 오류 그 아무도 돌려놓은 서버에 kill하라는 명령을 내리지 않았지만 밤에 돌려놓고 다음날 오전에 확인하면 이렇게 죽어있는 경우가 있다. 오류 내용은 아래 그림과 같다. 필자는 서버컴퓨터에 docker container를 띄워서 사용하고 있다. 구글링을 요리조리 해봤는데 --ipc=host를 추가하면 해결이 된다라는 말도 있었는데 필자는 이미 항상 써왔던 것이어서 패스. 그리고 shm size가 작아서 그럴수도 있다라는 말도 있었는데 이미 133G로 정말 빵빵하게 늘려져 있어서 패스. 그냥 데이터의 크기가 커서 안돌아간다는 건... 아니지 않을까 싶다... 어쨋든 상황상으로 생각해볼때 작은 데이터셋으로 테스트를 할때에는 문제가 없었는데 큰 데이터셋으로 학습을 돌릴때 저러는 것으로 보아 데이터의 크기가 너무 커..
[Matplotlib] HeatMap 그리기 Introduction Python에서는 정말 많은 라이브러리들이 있다. 그 중에서도 머신러닝/딥러닝을 하는 사람들이라면 Heatmap을 한번쯤 써보지 않나 싶다. Heatmap은 '다양한 정보를 일정한 이미지 위에서 열 분포 형태로 visualization 한 것'을 의미한다. Code import matplotlib.pyplot as plt import numpy as np import torch data = torch.rand(128, 256) # freq, time # data = data.permute(1, 0) print(data.size()) data = data.numpy() plt.figure(figsize=(10, 9)) plt.matshow(data) plt.colorbar() 구현 ..
[Recognition] FoodRecognitionTask 시작(1) Introduction 연구실에서 진행하는 프로젝트 이외에 서브프로젝트로 무언가를 좀 해보고 싶었는데 친구가 일거리를 하나 뿌려주고 가서 겸사겸사 사이드 프로젝트로 Food Recognition을 진행하려 한다. 필자는 연구실에 들어와서 Image processing -> signal processing -> speech recognition -> emotion recognition -> speaker verification -> self-supervised learning 순서대로 타고 흘러갔다. 뭐가이리 많이 바뀌었냐 할 수 있겠지만 Image processing은 딥러닝을 처음 시작하는 사람이라면 누구든지 접해볼 수 있는 task중에 하나이다. 그러면서 어떠한 계기(?)에 의해서 speech 관련 ..
[PYTORCH] Pytorch Lightning이란? Introduction PytorchLightning은 Pytorch를 구조적으로 편하게 사용할 수 있도록 인터페이스 제공 목적의 라이브러이이다. 라이브러리 내부적으로 16bit train, DP (DataParallel), DDP (DistributedDataParallel) 등을 진짜 몇줄만 적어서 사용할 수 있도록 구현되어있다. 필자도 Pytorch를 계속 써오고 다양한 모델들을 implementation하고 buildup 해보면서 신경써야할 여러 부분들이 있었는데, Pytorch lightning 라이브러리를 딱 보고 좋다!라는 생각을 하였다. 그래서 한번 써보려고한다. 기존 코드들을 다 implement 시키는 것은 좀 귀찮겠지만 앞으로 제작하는 프로젝트는 Lightning을 적용하여 코드를 구..
[PYTORCH] 2개 이상의 Loss를 사용할때 주의할 점 model을 모델링할때 loss function을 2개 이상 사용하는 경우가 있다. 이때 아래와 같은 로그가 뜰 수 있다. RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.cuda.FloatTensor [64, 128, 512]], which is output 0 of PermuteBackward, is at version 89; expected version 0 instead. Hint: the backtrace further above shows the operation that failed to compute its gradient. The..
[PYTORCH] torch.max 함수 설명 torch.max torch.max(input) -> Tensor torch.max(input, dim, keepdim=False, *, out=None) -> tuple (max, max_indices) torch.max 함수는 텐서에서 최대값을 구하는 함수이다. import torch import torch.nn as nn data = torch.randn((5, 5)) print(data) print(torch.max(data)) #### # tensor([[ 1.1328, -0.0392, -0.7076, 0.5610, 0.8010], # [-0.0898, -1.4467, -0.7285, -0.1195, -2.1070], # [ 0.4547, 1.7739, 0.1664, -1.0242, 0.0474..
[파이토치] torch.argmax 함수 torch.argmax torch.argmax(input) → LongTensor torch.argmax(input, dim, keepdim=False) → LongTensor 이 함수는 input tensor에 있는 모든 element들 중에서 가장 큰 값을 가지는 공간의 인덱스 번호를 반환하는 함수이다. a = torch.randn(4, 4) print(a) output = torch.argmax(a) print(output) #### output ##### ''' tensor([[-0.5014, -0.1785, 0.2534, 0.7167], [-0.7887, 1.0920, 0.5385, -1.1797], [-1.0129, 0.2337, 0.5757, 0.9139], [ 1.4672, -1.0605,..
[파이토치] torch.mm 함수 torch.mm torch.mm(input, mat2, *, out=None) → Tensor mm은 input과 mat2에 대해서 matrix multiplication을 수행하는 함수이다. 이 함수는 broadcast되지 않는 것이 특징이다. 만약 broadcasting된 것을 원한다면 torch.matul 함수를 사용하여아 한다. torch.mm( torch.tensor([[2, 2], [2, 2]]), torch.tensor([[2, 2], [2, 2]]) ) #### output #### ''' tensor([[8, 8], [8, 8]]) ''' 간단하게 torch를 import 하고 코드를 돌려보면 mm의 동작을 살펴볼 수 있다.