keras - 从 Keras 自动编码器中的瓶颈层提取特征

标签 keras feature-extraction autoencoder

过去几周,我依次向您询问自动编码器的相关信息。 今天的问题如下; 如何从瓶颈层获取特征?

我已经提到了这个网站。 https://github.com/keras-team/keras/issues/2495

我得到的错误信息显示在这里; 用户警告:更新您的 Model调用 Keras 2 API:Model(inputs=[<tf.Tenso..., outputs=[<tf.Tenso...) 模型(输入=[输入],输出=[中间层])

此外,我曾尝试使用此方法提取特征(请参阅下面的链接),但它也没有用。 https://keras.io/getting-started/faq/#how-can-i-obtain-the-output-of-an-intermediate-layer

任何评论都应该有所帮助。 谢谢!

X = Input(shape=(37310,))

encoded = Dense(encoding_dim, activation='tanh')(X)
decoded = Dense(37310, activation='sigmoid')(encoded)

autoencoder = Model(X, decoded)   
encoded_input = Input(shape=(encoding_dim,))
decoder_layer = autoencoder.layers[-1]
decoder = Model(encoded_input, decoder_layer(encoded_input))

autoencoder.compile(optimizer='SGD', loss='mean_squared_error')

encoded1 = Dense(500, activation='tanh')(X)
encoded2 = Dense(100, activation='tanh')(encoded1)
encoded3 = Dense(50, activation='tanh')(encoded2)

decoded = Dense(100, activation='tanh')(encoded)
decoded = Dense(500, activation='tanh')(decoded)
decoded = Dense(37310, activation='sigmoid')(decoded)

autoencoder = Model(X, decoded)
autoencoder.compile(optimizer='SGD', loss='mean_squared_error')

autoencoder.fit(X_train, X_train,
            epochs=10,
            batch_size=100,
            shuffle=True,
            validation_data=(X_test, X_test))

model = Model(input=[X], output=[encoded3])

最佳答案

完整的代码是这样的

encoding_dim = 37310

input_layer = Input(shape=(encoding_dim,))

encoder = Dense(500, activation='tanh')(input_layer)
encoder = Dense(100, activation='tanh')(encoder)
encoder = Dense(50, activation='tanh', name='bottleneck_layer')(encoder)

decoder = Dense(100, activation='tanh')(encoder)
decoder = Dense(500, activation='tanh')(decoder)
decoder = Dense(37310, activation='sigmoid')(decoder)


# full model
model_full = models.Model(input_layer, decoder)

model_full.compile(optimizer='SGD', loss='mean_squared_error')

model_full.fit(X_train, X_train,
            epochs=10,
            batch_size=100,
            shuffle=True,
            validation_data=(X_test, X_test))

# bottleneck model
bottleneck_output = model_full.get_layer('bottleneck_layer').output
model_bottleneck = models.Model(inputs = model_full.input, outputs = bottleneck_output)

bottleneck_predictions = model_bottleneck.predict(X_inference)

关于keras - 从 Keras 自动编码器中的瓶颈层提取特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50226919/

相关文章:

c# - 如何在 c# .net core 应用程序中运行 python 神经网络 keras 脚本

python - 从函数式 API 模型上的 Keras CNN Predict() 获取概率

变量值列表的 Tensorflow 特征列

python - 如何组合两个keras生成器函数

c++ - 二值图像的特征提取

python - Python OpenCV-Canny边界检测

tensorflow - 将嵌入层添加到 lstm 自动编码器时出现错误

python - 如何为 Keras 实现 KL 散度正则化?

python - Keras 自定义损失函数不返回任何内容

keras - 在 Keras 中使用 CNN 时如何提取图像的特征向量