torch 踩坑小结
来源:互联网 发布:编程猫可以加盟吗 编辑:程序博客网 时间:2024/06/07 17:18
近期使用torch写神经网络的框架,初次接触,踩了不少坑,在这里总结一下。
tensor type
torch中tensor是有类型的,默认是DoubleTensor:
th>torch.getdefaulttensortype()torch.DoubleTensor
除此之外,还有FloatTensor, CudaTensor, IntTensor, CharTensor等,可以使用setdefaulttensortype设置缺省的tensortype,通常情况下,如果使用cuda进行网络的训练,就可以将缺省的Tensor Type设置为CudaTensor。但是这里有一个坑,就是CudaTensor相比其他的Tensor缺少一些成员函数(我们暂且叫成员函数),比如image。
th> a=torch.FloatTensor():resize(sample_temp:size()):copy(sample_temp) [0.0001s] th> a.ia.image. a.indexCopy( a.isContiguous( a.isSize(a.index( a.indexFill( a.isSameSizeAs( a.indexAdd( a.int( a.isSetTo( th> a=torch.Tensor():resize(sample_temp:size()):copy(sample_temp) [0.0003s] th> a.ia.index( a.indexFill( a.isContiguous( a.isSize(a.indexAdd( a.int( a.isSameSizeAs( a.indexCopy( a.inverse( a.isSetTo( th> a=torch.FloatTensor():resize(sample_temp:size()):copy(sample_temp) [0.0001s]
在defaulttensortype是CudaTensor时调用image.save函数会出现如下错误:
th> image.save('1.jpg',sample_temp);.../lijiguo/code/torch/install/share/lua/5.1/image/init.lua:166: attempt to index field 'image' (a nil value)stack traceback: .../lijiguo/code/torch/install/share/lua/5.1/image/init.lua:166: in function 'clampImage' .../lijiguo/code/torch/install/share/lua/5.1/image/init.lua:267: in function 'saver' .../lijiguo/code/torch/install/share/lua/5.1/image/init.lua:457: in function 'save' [string "image.save('1.jpg',sample_temp);"]:1: in main chunk [C]: in function 'xpcall' .../lijiguo/code/torch/install/share/lua/5.1/trepl/init.lua:679: in function 'repl' ...code/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:204: in main chunk [C]: at 0x00406620 [0.0004s]
还有就是network输入的TensorType应该与network的TensorType一致,如果network是在GPU上的,那么他就是CudaTensor,这时候应该讲input vector设置为CudaTensor,否则会出现以下错误(github上也有人遇到这个问题:https://github.com/torch/torch7/issues/1087)
th> input_vector=torch.FloatTensor(1,100); [0.0000s] th> sample=model.G:forward(input_vector)...ijiguo/code/torch/install/share/lua/5.1/nn/Container.lua:67: In 1 module of nn.Sequential:...1/lijiguo/code/torch/install/share/lua/5.1/nn/Linear.lua:66: invalid arguments: CudaTensor number CudaTensor number FloatTensor CudaTensor expected arguments: *CudaTensor~2D* [CudaTensor~2D] [float] CudaTensor~2D CudaTensor~2D | *CudaTensor~2D* float [CudaTensor~2D] float CudaTensor~2D CudaTensor~2Dstack traceback: [C]: in function 'addmm' ...1/lijiguo/code/torch/install/share/lua/5.1/nn/Linear.lua:66: in function <...1/lijiguo/code/torch/install/share/lua/5.1/nn/Linear.lua:53> [C]: in function 'xpcall' ...ijiguo/code/torch/install/share/lua/5.1/nn/Container.lua:63: in function 'rethrowErrors' ...jiguo/code/torch/install/share/lua/5.1/nn/Sequential.lua:44: in function 'forward' [string "sample=model.G:forward(input_vector)"]:1: in main chunk [C]: in function 'xpcall' .../lijiguo/code/torch/install/share/lua/5.1/trepl/init.lua:679: in function 'repl' ...code/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:204: in main chunk [C]: at 0x00406620WARNING: If you see a stack trace below, it doesn't point to the place where this error occurred. Please use only the one above.stack traceback: [C]: in function 'error' ...ijiguo/code/torch/install/share/lua/5.1/nn/Container.lua:67: in function 'rethrowErrors' ...jiguo/code/torch/install/share/lua/5.1/nn/Sequential.lua:44: in function 'forward' [string "sample=model.G:forward(input_vector)"]:1: in main chunk [C]: in function 'xpcall' .../lijiguo/code/torch/install/share/lua/5.1/trepl/init.lua:679: in function 'repl' ...code/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:204: in main chunk [C]: at 0x00406620 [0.0009s]
lua table index
lua的table索引从1开始,切记切记切记!!!
否则将出现以下错误:
th> image.save('1.jpg',sample[0]);bad argument #2 to '?' (out of range)stack traceback: [C]: at 0x7f1d34138bd0 [C]: in function '__index' [string "image.save('1.jpg',sample[0]);"]:1: in main chunk [C]: in function 'xpcall' .../lijiguo/code/torch/install/share/lua/5.1/trepl/init.lua:679: in function 'repl' ...code/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:204: in main chunk [C]: at 0x00406620 [0.0001s]
阅读全文
0 0
- torch 踩坑小结
- torch
- Torch
- Torch
- Torch
- Torch
- Torch
- Torch
- torch.nn 小坑和疑惑
- [Torch] 2. torch
- torch安装
- Torch经验
- [torch]parallel
- torch学习
- Torch安装
- torch入门
- [torch]maskzero
- torch 安装
- MUI 获取手机中的联系人来生成电话簿
- ORA-12560: TNS: 协议适配器错误(环境变量的设置问题)
- Linux使用Tips
- php常量的定义和使用
- MySQL基础教程5-数据库基础回顾
- torch 踩坑小结
- 节点node和元素element的区别
- C语言
- spring alias
- 卷积函数-conv2d
- NYOJ 70
- 逗号表达式
- 【深度学习】网络结构总结
- 卖票——多线程模拟卖票系统