在`CudaTensor`上使用`apply`方法的异常

时间:2016-03-12 21:42:55

标签: lua neural-network torch conv-neural-network

只有在尝试使用Torch的CUDA功能而不是依赖CPU之后才会出现此问题。

我试图初始化卷积神经网络的CudaTensor个权重。功能如下:

function fill_0normal(t,sigma)
  t:apply(function() return torch.normal(0,sigma) end)
end

并以下列方式调用它:

fill_0normal(m.weight, sigma)

m是卷积模块,m.weightCudaTensorsigma是浮点值。

我得到的例外情况如下:

/hpc/sw/torch7-2016.02.09/bin/luajit: invalid arguments: number number 
expected arguments: *CudaTensor* [float] [float]
stack traceback:
    [C]: at 0x2aaaaf63e040
    [C]: in function 'func'
    /hpc/sw/torch7-2016.02.09/share/lua/5.1/torch/FFI.lua:117: in function 'apply'
    /hpc/sw/torch7-2016.02.09/share/lua/5.1/cutorch/Tensor.lua:3: in function 'apply'
    setup_model.lua:4: in function 'fill_0normal'
    setup_model.lua:16: in function 'init_conv'
    setup_model.lua:43: in function 'init_module'
    setup_model.lua:90: in function 'initializeNetRandomly'
    assignment3-cifar10.lua:49: in main chunk
    [C]: in function 'dofile'
    .../torch7-2016.02.09/lib/luarocks/rocks/trepl/scm-1/bin/th:145: in main chunk
    [C]: at 0x00406010

关于可能导致什么的任何想法?

我还尝试将torch.normal返回的值转换为 1个元素CudaTensor,但它没有帮助。

1 个答案:

答案 0 :(得分:2)

你可以直接调用:张量正常。

function fill_0normal(t,sigma) do
  t:normal(0, sigma)
end