【问题标题】:exception using the `apply` method on a `CudaTensor`在 `CudaTensor` 上使用 `apply` 方法的异常
【发布时间】:2016-06-28 01:57:59
【问题描述】:

这个问题是在尝试使用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,但它没有帮助。

【问题讨论】:

  • 我在这个问题中没有看到 CUDA 内核代码、CUDA 工具包/库或 CUDA 运行时错误。 lua 编译器在调用已在后端支持 CUDA 的框架时生成无效参数错误这一事实并不自动意味着这个问题,正如所写的那样,与 CUDA 有任何关系。如果您直接使用 CUDA API 的 cutorch 包装器并遇到问题,或者遇到 CUDA 运行时错误,则将其标记为 CUDA 问题可能是合适的。但你显然不是,因此,这不是一个 CUDA 问题。

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


【解决方案1】:

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

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

【讨论】:

  • 谢谢,这确实解决了问题。但不幸的是,仍然不清楚为什么原始代码不起作用。有什么想法吗?
  • 因为你使用了 apply 错误。查看apply函数签名:github.com/torch/torch7/blob/master/doc/…
猜你喜欢
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多