在 Keras 中打印/保存自动编码器生成的功能

Posted

技术标签:

【中文标题】在 Keras 中打印/保存自动编码器生成的功能【英文标题】:Print/Save autoencoder generated features in Keras 【发布时间】:2018-01-07 01:07:37 【问题描述】:

我有这个自动编码器:

input_dim = Input(shape=(10,))
encoded1 = Dense(30, activation = 'relu')(input_dim)
encoded2 = Dense(20, activation = 'relu')(encoded1)
encoded3 = Dense(10, activation = 'relu')(encoded2)
encoded4 = Dense(6, activation = 'relu')(encoded3)
decoded1 = Dense(10, activation = 'relu')(encoded4)
decoded2 = Dense(20, activation = 'relu')(decoded1)
decoded3 = Dense(30, activation = 'relu')(decoded2)
decoded4 = Dense(ncol, activation = 'sigmoid')(decoded3)
autoencoder = Model(input = input_dim, output = decoded4) 
autoencoder.compile(-...)
autoencoder.fit(...)

现在我想打印或保存在编码 4 中生成的特征。 基本上,从一个巨大的数据集开始,我想在训练部分之后提取自动编码器生成的特征,以获得我的数据集的受限表示。

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

所以,基本上,通过创建这样的编码器:

 encoder = Model (input_dim,encoded4)
 encoded_input=Input(shape=(6,))

然后使用:

 encoded_data=encoder.predict(data)

predict 函数中的数据是数据集,输出由

 print encoded_data

是我的数据集的受限表示

对吗?

谢谢

【讨论】:

这个编码器模型的输入形状不应该是input_dim = Input(shape=(10,))吗?【参考方案2】:

您可以通过创建“编码器”模型来做到这一点:

encoder = Model(input = input_dim, output = encoded4)

这将使用您使用自动编码器训练的相同层实例,并且如果您在“推理模式”中使用它,例如 encoder.predict()

我希望这会有所帮助:)

【讨论】:

以上是关于在 Keras 中打印/保存自动编码器生成的功能的主要内容,如果未能解决你的问题,请参考以下文章

如何分别保存 Keras 编码器和解码器

使用 H264 编解码器将视频保存在 opencv 中

在密集的 Keras 层中绑定自动编码器权重

Keras 自动编码器中的输入形状

Keras - 变分自动编码器 NaN 损失

错误 - AttributeError:'DirectoryIterator' 对象在 keras 的自动编码器设计中没有属性 'ndim