为什么 torch.Tensor 有一个 libjpeg 字段?
Why does torch.Tensor have a libjpeg field?
我看到了这个:
./install/share/lua/5.1/image/init.lua: return torch.Tensor().libjpeg.size(filename)
Tensor如何获取字段libjpeg?我没有在 Tensor.lua.
中看到它被引用
有关更多上下文,我正在尝试调试此错误:
/Users/un/torch/install/share/lua/5.1/image/init.lua:140: attempt to index field 'libjpeg' (a nil value)
stack traceback:
/Users/un/torch/install/share/lua/5.1/image/init.lua:140: in function 'loader'
/Users/un/torch/install/share/lua/5.1/image/init.lua:276: in function 'load'
/Users/un/torch/install/share/lua/5.1/image/init.lua:1067: in function 'lena'
[string "image.lena();"]:1: in main chunk
[C]: in function 'xpcall'
/Users/un/torch/install/share/lua/5.1/trepl/init.lua:588: in function 'repl'
.../torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:185: in main chunk
[C]: at 0x0104de8640
Torch 包中的常见做法是使用张量 table 作为命名空间。这是一个技巧,可用于进行快速而肮脏的模板化函数分派。
例如,如果你加载 nn 包,你会发现函数
torch.DoubleTensor.nn.L1Cost_updateOutput
torch.FloatTensor.nn.L1Cost_updateOutput
这些通常是根据输入张量的类型来调用的。例如:
input = torch.FloatTensor()
input.nn.L1Cost_updateOutput(...)
这是您使用 torch.Tensor.libjpeg* 观察到的结果
如果你使用图像加载包,那么你会注意到会有 torch.FloatTensor.libjpeg* 和 torch.DoubleTensor.libjpeg*
我怀疑您可能将默认张量类型设置为 torch.CudaTensor,这时您会观察到此错误。
因为图像包的函数没有为 Cuda 张量定义,函数 torch.CudaTensor.libjpeg* 将不存在。
您的解决方案是将默认张量类型设置为 FloatTensor 或 DoubleTensor,并根据需要创建任何 Cuda 张量。
我看到了这个:
./install/share/lua/5.1/image/init.lua: return torch.Tensor().libjpeg.size(filename)
Tensor如何获取字段libjpeg?我没有在 Tensor.lua.
中看到它被引用有关更多上下文,我正在尝试调试此错误:
/Users/un/torch/install/share/lua/5.1/image/init.lua:140: attempt to index field 'libjpeg' (a nil value)
stack traceback:
/Users/un/torch/install/share/lua/5.1/image/init.lua:140: in function 'loader'
/Users/un/torch/install/share/lua/5.1/image/init.lua:276: in function 'load'
/Users/un/torch/install/share/lua/5.1/image/init.lua:1067: in function 'lena'
[string "image.lena();"]:1: in main chunk
[C]: in function 'xpcall'
/Users/un/torch/install/share/lua/5.1/trepl/init.lua:588: in function 'repl'
.../torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:185: in main chunk
[C]: at 0x0104de8640
Torch 包中的常见做法是使用张量 table 作为命名空间。这是一个技巧,可用于进行快速而肮脏的模板化函数分派。 例如,如果你加载 nn 包,你会发现函数
torch.DoubleTensor.nn.L1Cost_updateOutput
torch.FloatTensor.nn.L1Cost_updateOutput
这些通常是根据输入张量的类型来调用的。例如:
input = torch.FloatTensor()
input.nn.L1Cost_updateOutput(...)
这是您使用 torch.Tensor.libjpeg* 观察到的结果 如果你使用图像加载包,那么你会注意到会有 torch.FloatTensor.libjpeg* 和 torch.DoubleTensor.libjpeg*
我怀疑您可能将默认张量类型设置为 torch.CudaTensor,这时您会观察到此错误。 因为图像包的函数没有为 Cuda 张量定义,函数 torch.CudaTensor.libjpeg* 将不存在。
您的解决方案是将默认张量类型设置为 FloatTensor 或 DoubleTensor,并根据需要创建任何 Cuda 张量。