在学习torch的过程中遇到了不少问题,现做一个简单的总结,欢迎补充并批评指正!
%————————————————————————————————-%
错误提示1:
unexpected symbol near ':'
错误举例:
p = 602:add(N+1) --截取有问题的一行代码
分析及解决方案:在使用add() mul() div()等函数时,冒号前面不能使用常数,应提前将常数赋值给一个变量,如将602改为变量即可,即令a = 602,p = a:add(N+1)
%————————————————————————————————-%
错误提示2:
inconsistent tensor size at /home/torch/pkg/torch/lib/TH/generic/THTensorCopy.c:7
原因分析:矩阵或者张量元素的维度大小不匹配,可能是矩阵内元素表示方法不正确
错误举例:
d=image.load('test.png') --test.png为1*301*301大小的图片
dd = d[1]
N = torch.rand(1,1):fill(2)
I = torch.Tensor(305,305):fill(0)
for i=1,2 do
for j=1,2 do
ii = (N+1):add(-i)
jj = (N+1):add(-j)
I[i][j]=dd[{{ii},{jj}}]
end
end
解决方案:在I[i][j]=dd[{{ii},{jj}}]这一句后面补充上[1][1]即可
即:I[i][j]=dd[{{ii},{jj}}][1][1]
%————————————————————————————————-%
错误提示3:
'for' limit must be a number
原因分析:for循环后面所接的格式不对,下面的例子中第二行代码中的N不是一个数,因此提示错误
错误举例:
N = torch.rand(1,1):fill(2)
for i=1,N do
for j=1,N[1][1] do
ii = (N+1):add(-i)
jj = (N+1):add(-j)
I[i][j]=dd[{{ii},{jj}}][1][1]
end
end
解决方案:同上面一个问题类似,在第二行的for循环的N后面加上[1][1]变为N[1][1]即可
%—————————————————————————————————————-%