【问题标题】:attempt to call method 'random' (a nil value) in Lua尝试在 Lua 中调用方法“随机”(一个 nil 值)
【发布时间】:2017-01-24 23:14:42
【问题描述】:

下面是我的代码

require 'dpnn'
 require 'cunn'

 local deviceNumber = tonumber(os.getenv("CUDA_CARD_NR"))
 cutorch.setDevice(deviceNumber)

 local module = nn.Sequential():cuda()
 module:add(nn.Linear(2,1):cuda())
 module:add(nn.Sigmoid():cuda())

 criterion = nn.BCECriterion():cuda() -- Binary Cross Entorpy Criteria

 local targets = torch.CudaTensor(10):random(0,1)
 local inputs = torch.CudaTensor(10,2):uniform(-1,1)

 function trainEpoch(module,criterion,inputs,targets)
   for i=1,inputs:size(1) do
     local idx = math.random(1,inputs:size(1))
     local input, target = inputs[idx], targets:narrow(1,idx,1)
     -- forward
     local output= module:forward(input)
     local loss= criterion:forward(output,target)
     -- backward
     local gradOutput = criterion:backward(output,target)
     module:zeroGradParameters()
     local gradInput = module:backward(input,gradOutput)
     --update
     module:updateGradParameters(0.9) -- momentum
     module:updateParameters(0.1) -- W = W -0.1*dL/dW
   end
 end

 for i=1,100 do
   trainEpoch(module,criterion,inputs,targets)
 end

我在上面使用下面的命令运行

CUDA_CARD_NR=1 luajit feedforwad.lua 

它给出了以下错误

luajit: feedforwad.lua:13: attempt to call method 'random' (a nil value)
stack traceback:
    feedforwad.lua:13: in main chunk
    [C]: at 0x004064f0

我知道该行有一些错误

local targets = torch.CudaTensor(10):random(0,1)

但我无法弄清楚。

【问题讨论】:

标签: lua torch


【解决方案1】:

luajit: feedforwad.lua:13: 尝试调用方法 'random' (a nil 值)

不是“一些错误”,您应该没有问题来找出问题所在,因为错误消息会告诉您确切的问题。

您尝试调用名为random 的方法,该方法恰好是nil 值。 这意味着没有具有该名称的函数,因此您无法调用它。

根据参考文档(您应该在来这里之前检查过)该函数实际上被命名为rand

【讨论】:

  • 感谢您的回答。实际上我想要一个随机值为 1 和 0 的 cuda 张量。我也尝试过 torch.CudaTensor():rand() 它也不起作用。你能告诉我正确的做法是什么吗?
  • 所以你得到同样的错误还是什么?不起作用的信息量不是很大。
  • 其实它并不能满足我的需要。我想要不是由torch.CudaTensor():rand() 生成的随机数中的二进制数字 0 或 1。
  • 我对火炬一无所知,但根据参考资料,应该有一个函数 bernoulli() 可以满足您的需求。这至少适用于其他张量类型。
猜你喜欢
  • 2017-04-03
  • 2019-09-15
  • 2020-03-27
  • 2018-07-11
  • 2014-05-06
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 2014-11-05
相关资源
最近更新 更多