Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 保存自动编码器';s编码器模型_Python_Keras_Autoencoder - Fatal编程技术网

Python 保存自动编码器';s编码器模型

Python 保存自动编码器';s编码器模型,python,keras,autoencoder,Python,Keras,Autoencoder,我使用ModelCheckpoint保存最佳自动编码器模型,如下所示: checkpoint=ModelCheckpoint(“ae_model”,monitor='val\u loss',verbose=1,save\u best\u only=True,mode='max') 回调\u列表=[检查点] #编码层 编码=密集(128,激活='relu')(输入) 编码器输出=密集(10)(编码) #解码层 解码=密集(128,激活='relu')(解码) #构建自动编码器模型 自动编码器=型号

我使用ModelCheckpoint保存最佳自动编码器模型,如下所示:

checkpoint=ModelCheckpoint(“ae_model”,monitor='val\u loss',verbose=1,save\u best\u only=True,mode='max')
回调\u列表=[检查点]
#编码层
编码=密集(128,激活='relu')(输入)
编码器输出=密集(10)(编码)
#解码层
解码=密集(128,激活='relu')(解码)
#构建自动编码器模型
自动编码器=型号(输入=输入,输出=解码)
#构建编码器模型
编码器=型号(输入=输入\ img,输出=编码器\输出)
编译(loss='mse',optimizer='adam')
自动编码器.fit(x_系列,x_系列,历代=100,批量=10,
shuffle=True,validation\u split=0.33,
回调=回调(列表)
但是,当保存了最好的自动编码器模型时,如何保存编码器模型呢?因此,我可以重复使用编码器模型,如下所示

从keras.models导入负载模型
编码器=加载模型(“编码器模型”)
或者是否有其他方法将编码器从自动编码器模型中分离出来

从keras.models导入负载模型
自动编码器=加载\模型(“自动编码器\模型”)
编码器=自动编码器。???

谢谢,

您可以编写小型自定义模型检查点类来替换应保存的模型:

class EncoderCheckpoint(ModelCheckpoint):
  def __init__(self, filepath, **kwargs):
    super().__init__(filepath, **kwargs)
    self.model = encoder # we manually set encoder model

  def set_model(self, model):
    pass # ignore when Keras tries to set autoencoder model

谢谢,当我重新加载编码器模型时,我收到了“UserWarning:在保存文件中找不到培训配置:模型未编译。手动编译。”消息。训练后的编码模型与保存后的编码模型的编码结果不同。这是正常的吗?如果您只是打算使用编码器进行预测,则不需要进行培训配置,因此这不是一个问题。结果可能会有所不同,因为您保存了最好的一个,而这可能不是培训后的最后一个。