使用 `apply` 方法在 `CudaTensor` 上出现异常

这个问题只发生在尝试使用 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.weight 是一个 CudaTensorsigma 是一个浮点数。

我得到的异常如下所示:

/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,但这没有帮助。

点赞
用户117844
用户117844

你可以直接在张量上调用:normal

function fill_0normal(t,sigma) do
  t:normal(0, sigma)
end
2016-03-12 22:03:55