Neural style之torch学习笔记2: Torch与Matlab的语法对比

转自: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’)

矩阵(Matlab)和张量(Torch)

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’

你可能感兴趣的:(Torch)