[英]attempt to call method 'random' (a nil value) in Lua
下面是我的代码
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)
但是我不知道。
luajit:feedforwad.lua:13:尝试调用方法“ random”(nil值)
不是“某些错误”,您应该没有问题找出错误的原因,因为错误消息会告诉您确切的错误。
您试图调用一个名为random
的方法,该方法恰好是一个nil
值。 这意味着没有具有该名称的函数,因此您不能调用它。
根据参考文档(应该在此处进行检查),该函数实际上名为rand
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.