保存tf >=2.12.0的keras模型不向后兼容吗?

qxgroojn  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(213)

我正在与keras在v2.12.0中保存模型的方式作斗争。它似乎不向后兼容。是我弄错了什么,还是我们必须重构代码才能迁移到v2.12.0
以下是我们保存模型的旧方法(v2.7.0):传递有效的.h5文件(!)路径到keras,瞧,磁盘上出现了一个同名的.h5文件:

model = tf.keras.models.Sequential(...)
model.compile(...)
model.save('my_model.h5')

下面的代码将被v2.12.0放大:

`tensorflow.python.framework.errors_impl.FailedPreconditionError: /tmp/tmpt118zg26 is not a directory`.

我知道v2.12.0提供了两个选项:

  • 保存到folders的新方法通过tf.saved_model.save()启用
  • tf.keras.saving.save_model仍然支持保存到文件的old way。显然,model.save()将用作tf.keras.saving.save_model()的别名

release notes还指出
已将所有与保存相关的实用程序移动到新的命名空间,例如keras.saving以前的API位置(在keras.utilskeras.models中)将无限期可用,但我们建议您更新代码以指向新的API位置。
那么,为什么上面的代码会突然失败呢?

  • 我还可以使用“现有方法”直接保存.h5吗?如果是,如何进行?这不是应该向后兼容吗?现在我是否需要重写代码(如果我想坚持写文件,我是否需要对tf.keras.saving.save_model()进行一行更改)?
  • 或者,我们必须保存到文件夹中,而不是文件?那迁移的路径是什么所有模型都放在一个文件夹中,还是它们会互相覆盖?那么,我们是否需要嵌套文件夹,并重新设计在其他地方同步这些模型的方式(例如,必须调用aws s3 sync 'folder'而不是boto3调用client.upload_file()将模型转移到AWS)?
zbdgwd5y

zbdgwd5y1#

我在更新Keras到2.12后也遇到了这个问题。原来我的脚本的完整路径有拉丁字符('ç'和'õ'),删除它们修复了它。显然这个版本的Keras不接受非UTF8字符。

相关问题