转自:http://blog.csdn.net/hungryof/article/details/52015006
Matlab不用说了,对于矩阵处理能力很强。一般做研究的用的语言大部分还是matlab。深度学习的基于matlab的框架的matconvnet还是很不错的。当然也有C++(比如caffe,TensorFlow等框架),也有用Python(比如trainer,caffe),亦或是用Lua(Torch)。林林总总吧。 鉴于我以前是用matlab的,所以这里进行总结。以便能更好的学习Torch。
以下对比默认为第一行为Matlab,第二行为Torch
disp([‘The distance is ‘, num2str(100), ’ meters.’])
print(‘The distance is’ .. 100 ..’meters’)
m = [9, 6, 3, 4; 7, 2, 8, 1]
m = torch.Tensor({{9, 6, 3, 4}, {7, 2, 8, 1}})
ndims(m)
m:dim()
size(m)
m:size() or #m –注意#m是相当于m:size()
size(m,2)
m:size(2)
Matlab: v(2), v(end-1), v(2:4)
Torch: v[2], v[-2], v[ { {2, 4} }]
Matlab: m(2,3), m(2,:), m(2, 2:4)
Torch: m[2][3], m[{ {2},{} }], m[{ {2},{2, 4} }]
也就是说,Torch的如果是取单个数,则用类似C++的方式’[ ]’, 注意matlab是用’()’的。如果是取连续的一堆数据。那么对于Torch首先用’[{ }]’, 然后根据情况在里面添加,变成类似’[{ {2}, {3,-1}}]’
matlab: for i = 1,2,10
torch: for i = 1,10,2
这个很重要!
matlab的‘=’是直接分配新的空间的。然而,torch为了加快速度。直接用’=’对于Tensor来说是不分配空间的,它只是一个引用而已,或者说是别名!
matlab : matOut = matIn
Torch: matOut = matIn:clone()
clone和copy没啥区别,只是copy写的时候比较麻烦,就用clone好了
matIn.’
matIn:t()
横向:[matTop; matBottom]
torch.cat(matTop, matBottom, 1)
竖向:[matLeft, matRight]
torch.cat(matLeft, matRight, 2)
matA .* matB
torch.cmul(matA, matB)
matIn.^5
torch.cpow(matIn, 5)
反正有’.’的,在matlab中都是矩阵元素都要进行相同的运算。对应的在torc中就要’c’,比如’cmul’