Torch7学习(二) —— Torch与Matlab的语法对比

torch7学习(一)——Tensor
Torch7学习(二) —— Torch与Matlab的语法对比
Torch7学习(三)——学习神经网络包的用法(1)
Torch7学习(四)——学习神经网络包的用法(2)
Torch7学习(五)——学习神经网路包的用法(3)
Torch7学习(六)——学习神经网络包的用法(4)——利用optim进行训练
Torch7学习(七)——从neural-style代码中看自定义重载函数的训练方式

总说

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’

你可能感兴趣的:(Deep,Learning,Lua,Torch7入门教程)