试图保存seq2seq+attention模型中的decoder/encoder为SavedModel时出错

来源:10-9 模型预测实现

OliverSong

2019-09-25

我试图在老师代码的末尾加上以下SavedModel的步骤:

  1. 代码
    #保存参数+模型结构
    encoder_model_path = './trained_encoder/model’
    decoder_model_path = ‘./trained_decoder/model’

    tf.saved_model.save(encoder, encoder_model_path)
    tf.saved_model.save(decoder, decoder_model_path)

  2. 错误信息
    TypeError: call() missing 1 required positional argument: ‘hidden’;
    此处hidden也就是encoder的call函数中的参数,初始化时的hidden。

TF 版本是2.0.0-rc0

请教老师是什么问题呢?

写回答

2回答

正十七

2019-12-01

这个是因为缺少一个参数,对于子类实现的模型,如果想要保存成saved model,那么call函数中应该只有input作为参数。多了就不行。这点是因为我们的模型比较复杂所导致的。

目前来看,可使用的保存模型的方法就是checkpoint,即保存模型的参数。

1
1
OliverSong
非常感谢!
2020-08-12
共1条回复

正十七

2019-10-24

同学你好,关于这个问题,我发现是个常见问题,已经放到git的readme的pending issue中,稍后会更新到代码库,届时我再来问题下提醒。 https://git.imooc.com/coding-344/tensorflow2.0_course

2
0

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程