Ошибка в функции «fwd_prop_enc»: попытка вызвать глобальный «вперед» (нулевое значение) - PullRequest
0 голосов
/ 11 октября 2018

В наборе данных машинного перевода я успешно прошел предварительную подготовку и тренировал свою модель в Lua.Теперь я перехожу к предсказанию моей модели.

Но я получаю ошибку в файле Lua в функции encoder_clones: forward (encoder_input) Ошибка: попытка вызова глобального 'forward' (нулевое значение)

Это определенная функция:

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

Так она вызывается в основной функции

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

1 Ответ

0 голосов
/ 19 октября 2018

Эта ошибка означает, что функция encoder_clones.forward на самом деле не существует.

Я не знаю, какую платформу вы используете, но быстрый поиск показал, что encoder_clonesнаверное массив.Глядя на ваш код, я заметил, что ваша ссылка на encoder_clones находится внутри цикла for for t = 1, source_l do.Что произойдет, если вы измените encoder_clones:forward на encoder_clones[t]:forward?Это, вероятно, решит вашу проблему.

Если это не решит вашу проблему, вы можете сказать нам, какую платформу вы используете?Это OpenNMT?Мы не сможем вам помочь гораздо дальше, если не будем знать, что такое encoder_clones и откуда оно.

...