keras.models.load_model失败,“标签” =火车

时间:2019-09-15 13:56:23

标签: python c tensorflow keras

我正在研究tensorflow 2.0的c API。

问题: 将模型加载到python中时,权重无法恢复,因此模型似乎未经训练。

工作流程: 我正在使用TF 2.0 C API处理模型训练。 我遵循的常规设置是:

1。使用TF keras api在python中定义模型。

import tensorflow as tf
from tensorflow import keras

model = keras.Sequential([keras.layers.Dense(128,
                                             input_shape=(784,),
                                             activation='relu'),
                          keras.layers.Dense(10, activation='softmax')
                        ])
model.compile(optimizer='adam',
              loss="categorical_crossentropy",
              metrics=['accuracy'])

keras.experimental.export_saved_model(model,"keras_model")

我正在使用keras.experimental.export_saved_model(),因为我需要使用keras.Model.save()时不会保存的“ signature_def ['train']”。

2。使用TF 2.0 C API在C中训练模型 然后通过以下方式将保存的模型加载到我的C程序中:

TF_LoadSessionFromSavedModel()

随后对其进行训练,并使用以下命令保存检查点:

TF_SessionRun()

保存模型会在存储模型的“变量”文件夹中创建新的检查点文件(“ checkpoint.index”和“ checkpoint.data-00000-of-00001”)。

3。 python中的问题重载模型 训练后,我用python重新加载模型。在这里,我发现加载的模型具有与未训练模型相对应的权重。我之所以知道这一点,是因为当我在C语言中训练有素的模型进行准确的预测时,预测会变得无聊。 我通过以下方式加载模型:

import tensorflow as tf
from tensorflow import keras

model = keras.experimental.load_from_saved_model("keras_model")

同样,我正在使用keras.experimental.load_from_saved_model(),因为当我使用keras.models.load_model()时,会出现以下ValueError:

ValueError: Importing a SavedModel with tf.saved_model.load requires a 'tags=' argument if there is more than one MetaGraph. Got 'tags=None', but there are 3 MetaGraphs in the SavedModel with tag sets [['train'], ['eval'], ['serve']]. Pass a 'tags=' argument to load this SavedModel.

如果我向keras.model.load_model()传递“ tags = serve”参数,则会出现以下TypeError:

TypeError: load_model() got an unexpected keyword argument 'tags'

由于文件格式的原因,尝试通过keras.Model.load_weights()将保存的检查点文件加载到我的模型中会导致OSErro:

h5py/_objects.pyx in h5py._objects.with_phil.wrapper()
h5py/_objects.pyx in h5py._objects.with_phil.wrapper()
h5py/h5f.pyx in h5py.h5f.open()
OSError: Unable to open file (file signature not found)

问题 通过检查点文件加载经过训练的模型的正确方法是什么?

如何使用keras.experimental.export_saved_model保存模型,并且仍然能够访问signature_def ['train']?

0 个答案:

没有答案