Seq2seq가 내가 하려는 연구의 기초가 되기 때문에

직접 짜지는 않고..... 

있는 코드 돌려보기로 했다.


https://github.com/macournoyer/neuralconvo


코드는 torch 코드



그리고 겪게 되는 에러들 포스팅


1. 

/home/xx/torch/install/share/lua/5.1/nn/Select.lua:10: bad argument #3 to 'select' (out of range at /tmp/luarocks_cutorch-scm-1-5327/cutorch/lib/THC/generic/THCTensor.c:386)


흠.. 잘은 모르겠지만 Select.lua의 10번째 줄에서 에러가 나는 것 같다.


https://github.com/torch/nn/blob/master/Select.lua



근데 웹에 나온 Select.lua랑 코드가 달랐다.


local Select, parent = torch.class('nn.Select', 'nn.Module')

function Select:__init(dimension,index)
   parent.__init(self)
   self.dimension = dimension
   self.index = index 
end

function Select:updateOutput(input)
   local index = self.index < 0 and input:size(self.dimension) + self.index + 1 or self.index
   local output = input:select(self.dimension, index);
   self.output:resizeAs(output)
   return self.output:copy(output)
end

function Select:updateGradInput(input, gradOutput)
   local index = self.index < 0 and input:size(self.dimension) + self.index + 1 or self.index
   self.gradInput:resizeAs(input)  
   self.gradInput:zero()
   self.gradInput:select(self.dimension,index):copy(gradOutput) 
   return self.gradInput
end 

여기서 


local index = self.index < 0 and input:size(self.dimension) + self.index + 1 or self.index

이 부분의 코드가 없고, 대신 select에 인자로 주는 index가 local index가 아니고 self.index



사실 여기가 문제란 걸 발견한 건,

우선 이 값을 찍어봐야 할 것 같아서

self.dimension과 self.index를 찍어봤다.


각각 1과 -1의 값이 나오길래, 왠지 -1이 index이면 안 될 것 같아서 ㅋㅋㅋㅋ

그래서 저 없는 줄을 넣었더니 문제 해결.


nn 패키지를 업데이트를 안 해서 그런 것 같기도 하고.


우선 대충 해결데쓰! 


+ Recent posts