如何单独保存Keras编码器和解码器?



我已经创建了一个使用独立编码器和解码器的自动编码器,如本链接所述。

在编码器和解码器keras上拆分自动编码器

我检查我的自动编码器如下。我如何保存编码器和解码器分别对应于自动编码器?或者,我可以提取深度编码器和解码器从我保存自动编码器?

checkpoint = ModelCheckpoint(filepath, monitor='val_accuracy', verbose = 1, save_best_only=True, mode='max')
callbacks_list = [checkpoint]
autoencoder.fit(
x=x_train,
y=x_train,
epochs=10,
batch_size=128,
shuffle=True,
validation_data=(x_test, x_test),
callbacks=callbacks_list
)

您可以尝试覆盖ModelCheckpoint使用的自动编码器的保存函数,以使其单独保存编码器和解码器模型。

def custom_save(filepath, *args, **kwargs):
""" Overwrite save function to save the two sub-models """
global encoder, decoder
# fix name
path, ext = os.path.splitext(filepath)
# save encoder/decoder separately
encoder.save(path + '-encoder.h5', *args, **kwargs)
decoder.save(path + '-decoder.h5', *args, **kwargs)
auto_encoder = Model(auto_input, decoded)
setattr(auto_encoder, 'save', custom_save)

确保设置保存功能BEFORE适合。

最新更新