【问题标题】:Can't save in SavedModel format Tensorflow无法以 SavedModel 格式保存 Tensorflow
【发布时间】:2020-07-13 11:53:35
【问题描述】:

我正在尝试使用 SavedModel 格式保存我的 ANN 模型。我使用的命令是:

model.save("my_model")

它应该给我一个名为“my_model”的文件夹,其中包含所有 save_model.pb、变量和资产,而是给我一个 HDF 文件,即 my_model。我正在使用 keras v.2.3.1 和 tensorflow v.2.2.0

这是我的一些代码:

from keras import optimizers
from keras import backend
from keras.models import Sequential
from keras.layers import Dense
from keras.activations import relu,tanh,sigmoid

network_layout = []
for i in range(3):
    network_layout.append(8)

model = Sequential()

#Adding input layer and first hidden layer
model.add(Dense(network_layout[0],  
                name = "Input",
                input_dim=inputdim,
                kernel_initializer='he_normal',
                activation=activation))

#Adding the rest of hidden layer
for numneurons in network_layout[1:]:
    model.add(Dense(numneurons,
                    kernel_initializer = 'he_normal',
                    activation=activation))

#Adding the output layer
model.add(Dense(outputdim,
                name="Output",
                kernel_initializer="he_normal",
                activation="relu"))

#Compiling the model
model.compile(optimizer=opt,loss='mse',metrics=['mse','mae','mape'])
model.summary()

#Training the model
history = model.fit(x=Xtrain,y=ytrain,validation_data=(Xtest,ytest),batch_size=32,epochs=epochs)
model.save('my_model')

我已经阅读了 tensorflow 网站上的 API 文档,并且按照上面所说的使用 model.save("my_model") 没有任何文件扩展名,但我做错了。

您的帮助将不胜感激。非常感谢!

【问题讨论】:

  • 您使用了错误的库,您要查找的文档是 tf.keras,而不是 keras 库。
  • 如果使用 tensorflow 版本 >2.1,请使用 tensorflow.keras 作为 keras 库。您使用的方式是使用旧的 keras API,它将模型保存为 .h5 格式。添加到@Dr.Snoopy 已经提到的内容。
  • 非常感谢您发现我的错误!

标签: python tensorflow keras


【解决方案1】:

如果你想使用 tensorflow 保存的模型格式,那么使用:

tms_model = tf.saved_model.save(model,"export/1")

这将在其中创建一个文件夹导出和一个子文件夹 1。在 1 文件夹中,您可以看到资产、变量和 .pb 文件。

希望对你有所帮助。

确保像这样更改您的导入 from tensorflow.keras import optimizers

【讨论】:

  • 您好,感谢您的帮助!我很欣赏快速响应。我尝试了您的建议,但收到此错误ValueError: Expected a Trackable object for export, got <keras.engine.sequential.Sequential object at 0x7f59e8b35198>. 我是否从我的 python 代码中遗漏了一些不允许我将其保存为 SavedModel 格式的内容?
  • 不是只改一行,import需要从keras改成tf.keras
  • 从 import from keras 更改为 from tensorflow.keras
  • 感谢您的回复。你们刚刚解决了问题。如果我可能会问,由于我在这方面有点新手,那么导入 tensorflow.keras 和仅导入 keras 有什么区别?
  • tensorflow 充当 keras 的默认后端。 FYR请看详细解释:pyimagesearch.com/2019/10/21/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
  • 2021-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多