'분류 전체보기' 카테고리의 글 목록 (4 Page)

분류 전체보기22

왜 torch.zeros를 쓰지 않고 torch.new_zeros를 사용할까 torch.zeros를 사용하면 torch.Tensor을 scratch부터 만들어내는 것이고 torch.new_zeros를 사용하면 이전에 사용하던 tensor A와 같은 device를 갖게 된다. cpu를 사용할 때 일일이 cpu 설정을 해주지 않고 (gpu에 대해서도 마찬가지) 이전 tensor A에서 사용하던 device를 계속 이어받아 생성하게 된다. 1 2 3 shape = (3,4,5) A = torch.ones((2,3), dtype=torch.int8). B = A.new_zeros((shape)) cs new_zeros 뿐 아니라 new 뒤에 올 수 있는 것은 new_tensor, new_full, new_empty, new_ones, new_zeros가 있다. 2023. 5. 16.
모델을 Evaluation시 필수적으로 넣어줘야 할 것 model.eval() Dropout, batchnorm과 같이 training phase에서만 동작해야하는 layer을 off해준다. with torch.no_grad() gradient를 tracking하지 않아서 모델 파라미터의 변화를 추적하지 않고 gradient 계산을 비활성화 하여 update나 back propagation을 수행하지 않는다. 이를 통해 gradient를 저장할 필요가 없어 메모리 사용량이 감소하고 연산 속도가 빨라진다고 한다. 실제로 이를 빼고 그냥 평가 모델을 돌리게 되면 메모리가 터졌던 경험을 하였다. 2023. 5. 16.
LSTM input, output, hidden으로 보는 동작 과정 LSTM Inputs: input, (\(h_0\), \(c_0\)) Outputs : output, \((h_n, c_n)\) 음성 처리 관점에서 input은 frames이 되겠다. Pytorch document를 보면 비단 input으로 frame만 들어갈 수 있을 뿐만 아니라 input, \((h_0, c_0)\)이 들어갈 수 있다. 5, 6번째 frame이 있고 6번째 frame의 hidden 및 cell state 정보를 0으로 초기화된 값이 아닌 5번째의 정보를 계속 이어서 사용하고 싶을 때 Outputs에서의 \((h_n, c_n)\)을 6번째 frame의 Inputs에서의 \((h_0, c_0)\)으로 넣어준다. 한 frame을 처리하는 동안인 \(h_1, c_1, ..., h_{n-1},.. 2023. 5. 15.
Block convolution인 Overlap add과 Overlap save Block Linear Convolution 언제 사용하는가? 신호의 길이가 굉장히 길고 그에 비해 impulse response의 길이는 짧을 때 \(h[n]\)의 length는 M. Overlap Add 1. \(x[n]\)을 L개씩 잘라낸다. 2. circular convolution으로 linear convolution을 하려면 길이를 N ≥ M+L-1 로 padding하여 맞춰놓아야 한다. 이는 linear convolution을 할 때 처음 0이 아닌 값이 나오는 시점(한 샘플 겹칠 때)부터 마지막 0이 아닌 값(반대편 한 샘플 겹칠 때)을 생각하면 N이 저러한 값이 설정된다. 그러므로 h와 잘린 x에 N의 길이가 되게 zero padding을 해준다. 3. 위처럼 처리된 각 block마다 c.. 2023. 4. 29.

TOP

Designed by 티스토리