【问题标题】:Error in function 'fwd_prop_enc' :attempt to call global 'forward' (a nil value)函数“fwd_prop_enc”中的错误:尝试调用全局“转发”(零值)
【发布时间】:2019-03-16 23:10:52
【问题描述】:

在机器翻译数据集中,我已经成功地在 Lua 中预训练和训练了我的模型。现在我开始预测我的模型。

但是我在函数 encoder_clones:forward(encoder_input) 的 Lua 文件中得到错误 错误:尝试调用全局“转发”(零值)

这是那个特定的功能:

function fwd_prop_enc(source, source_l, batch_l, train)
local rnn_state_enc = reset_state(init_fwd_enc, batch_l, 0)
--print(rnn_state_enc)
local context = context_proto[{{1, batch_l}, {1, source_l}}]
for t = 1, source_l do
if train then
  encoder_clones[t]:training()
else
  encoder_clones[t]:evaluate()
end
local encoder_input = {source[t], unpack(rnn_state_enc[t-1])}
local out = encoder_clones:forward(encoder_input)
print("yes")
rnn_state_enc[t] = out
context[{{},t}]:copy(out[#out]) -- copy final layer for t'th timestep    (for entire batch)
 end
  return rnn_state_enc, context
end

在main函数中是这样调用的

local rnn_state_enc, context = fwd_prop_enc(source, source_l, 1, false) -- train=false

【问题讨论】:

    标签: lua torch


    【解决方案1】:

    这个错误意味着函数encoder_clones.forward实际上并不存在。

    我不知道您使用的是什么框架,但quick search 显示encoder_clones 可能是一个数组。查看您的代码,我注意到您对encoder_clones 的引用位于for 循环for t = 1, source_l do 内。如果将encoder_clones:forward 更改为encoder_clones[t]:forward 会发生什么?这可能会解决您的问题。

    如果这不能解决您的问题,您能告诉我们您使用的是什么框架吗?是 OpenNMT 吗?除非我们知道 encoder_clones 是什么以及它来自哪里,否则我们无法为您提供更多帮助。

    【讨论】:

      猜你喜欢
      • 2019-09-06
      • 2020-10-20
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 2013-03-28
      • 2021-04-14
      相关资源
      最近更新 更多