Keras编码器和解码器如何分开保存?
How to save Keras encoder and decoder separately?
我已经使用单独的编码器和解码器创建了一个自动编码器,如 link 中所述。
我正在检查我的自动编码器,如下所示。 autoencoder对应的encoder和decoder如何分别保存?或者,我可以从我保存的自动编码器中提取深度编码器和解码器吗?
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)
确保在安装前设置保存功能。
我已经使用单独的编码器和解码器创建了一个自动编码器,如 link 中所述。
我正在检查我的自动编码器,如下所示。 autoencoder对应的encoder和decoder如何分别保存?或者,我可以从我保存的自动编码器中提取深度编码器和解码器吗?
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)
确保在安装前设置保存功能。