tensorflow2自定义模型保存的坑(tf.saved_model.save以及自定义GAN)

今天自己用tf2搭建框架完成PassGAN网络,终于把模型和训练算法都完成了,效果也不错的时候,突然发现使用tf.saved_model.save保存模型会报错,而且错误很离谱,基本上无法debug的那种,令人十分头疼。

首先介绍一下代码的大致结构,GAN网络中生成器和判别器都是自己定义的,并且使用到了自定义的layer:
在这里插入图片描述
训练时可以使用tf.train.Checkpoint的保存方法,即使中断训练,可以重新加载后继续训练。但是这个方法不太方便,需要对源代码有了解,因此就可以使用tf.saved_model,这可以跨语言使用

另外,如果没有使用自定义的layer,可以用keras的sequential来封装,这样可以使用keras.model.save保存成.h5的格式,更加方便

就是因为自己使用了两个自定义层,导致出现了许多bug

这里先写的是第一个错误:请添加图片描述
请添加图片描述

报错显示有一个范围是未知的 也就是None,这时候我对生成器和判别器前加上一行代码:
在这里插入图片描述
这个是查阅官方文档后得到的,具体文档还是有点复杂的,大致意思是自定义模型在保存时需要用tf.function修饰部分函数,否则恢复后无法使用对应的函数。同时也制定了输入的类型和shape
文档网址:
https://tensorflow.google.cn/api_docs/python/tf/saved_model/save?hl=en

然后会显示第二个错误:
请添加图片描述
请添加图片描述
这里显示pred这个变量的类型不对,经过我仔细检查后发现是,调用一个块的时候,多加一个参数,但是编译器没有在调用处报错,结果一直没有发现,删除后代码可以正常运行,但是会报一个警告:

在这里插入图片描述
Model.state_updates (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version是主要的警告

针对这个警告,尝试了几次都无法纠正,不过能运行就好

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值