У меня есть модель генерации текста GRN RNN, которую я импортировал как protobuf в Golang.
model, err := tf.LoadSavedModel("poetryModel", []string{"goTag"}, nil)
Аналогично коду из этого урока Tensorflow , я запускаю цикл прогнозирования:
for len(generated_text) < 1000 {
result, err := model.Session.Run(
map[tf.Output]*tf.Tensor{
model.Graph.Operation("inputLayer_input").Output(0): tensor,
},
[]tf.Output{
model.Graph.Operation("outputLayer/add").Output(0),
},
nil,
)
...}
Тем не менее, эта реализация отбрасывает все промежуточные состояния после каждого цикла, что приводит к неправильному генерированию текста.
Я попытался использовать Частичный прогон , но он выдал ошибку при втором прогоне:
pr, err := model.Session.NewPartialRun(
[]tf.Output{ model.Graph.Operation("inputLayer_input").Output(0), },
[]tf.Output{ model.Graph.Operation("outputLayer/add").Output(0), },
[]*tf.Operation{ model.Graph.Operation("outputLayer/add") },
)
if err != nil {
panic(err)
}
...
result, err := pr.Run(
map[tf.Output]*tf.Tensor{
model.Graph.Operation("inputLayer_input").Output(0): tensor,
},
[]tf.Output{
model.Graph.Operation("outputLayer/add").Output(0),
},
nil,
)
Error running the session with input, err: Must run 'setup' before performing partial runs!
Этот вопрос похож на этот, но в Python. Также в Go нет документации по настройке функции.
Я новичок в работе непосредственно с графом вычислений TF и Golang, поэтому любая помощь приветствуется.