본문 바로가기

Deep Learning/PyTorch

PyTorch contiguous Attention을 활용한 NMT를 학습하던 도중 다음과 같은 에러가 발생했다. --------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) in () 108 for epoch in range(N_EPOCHS): 109 start_time = time.time() --> 110 train_loss = train(model, train_iterator, optimizer, criterion, CLIP) 111 valid_loss = evaluate(model, valid_iterator, criterion) 112 end_time = time.tim.. 더보기
PyTorch에서 tensor를 copy하는 법 https://stackoverflow.com/questions/55266154/pytorch-preferred-way-to-copy-a-tensor PyTorch에서 tensor를 복사하는 방법은 여러가지가 있다. y = tensor.new_tensor(x) #a y = x.clone().detach() #b y = torch.empty_like(x).copy_(x) #c y = torch.tensor(x) #d 과연 어떠한 방법이 올바르게 tensor를 복사하는 방법일까? a: y = tensor.new_tensor(x) new_tensor()는 parameter가 뭐든간에 이를 읽어서 leaf variable을 생성한다. 따라서 근본적으로 b와 동일한 코드이다. 만약 grad가 흐르게 하고 싶다면,.. 더보기
torch.expand() vs. torch.repeat() 네트워크에 feed하다보면 차원을 만져줘야 되는 일이 있다. 그때 사용하는 것이 torch.repeat()인데, torch.expand()랑 구체적으로 어떠한 차이가 있는지 모르겠어서 한번 찾아봤다. torch.repeat(*sizes) 특정 텐서의 sizes 차원의 데이터를 반복한다. 예시를 통해 이해해보자. >>> x = torch.tensor([1, 2, 3]) >>> x.repeat(4, 2) tensor([[ 1, 2, 3, 1, 2, 3], [ 1, 2, 3, 1, 2, 3], [ 1, 2, 3, 1, 2, 3], [ 1, 2, 3, 1, 2, 3]]) >>> x.repeat(4, 2, 1).size() torch.Size([4, 2, 3]) x는 [1, 2, 3]으로, 이를 dim=0으로 4.. 더보기