簡體   English   中英

嘗試在Lua中調用方法“ random”(nil值)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM