使用Keras自动编码器进行分类



我正在尝试使用 Keras(带有 Tensorflow 后端(使用香草自动编码器,并在损失值收敛到特定值时停止它。在最后一个纪元之后,我想使用sigmoid函数来执行分类。你知道怎么做吗(或者至少为我指出正确的方向(?

下面的代码与 http://wiseodd.github.io/techblog/2016/12/03/autoencoders/的原版自动编码器非常相似。(我正在使用自己的数据,但请随意使用链接中的 MNIST 示例来演示您在说什么。

NUM_ROWS = len(x_train)
NUM_COLS = len(x_train[0])
inputs = Input(shape=(NUM_COLS, ))
h = Dense(64, activation='sigmoid')(inputs)
outputs = Dense(NUM_COLS)(h)
# trying to add last sigmoid layer
outputs = Dense(1)
outputs = Activation('sigmoid')
model = Model(input=inputs, output=outputs)
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=batch,
epochs=epochs,
validation_data=(x_test, y_test))

我对你的目标有一个解释,但是,你自己似乎没有一个非常清晰的形象。 我想您可以澄清一下您是否自己准备了必要的数据集。

一种可能的解决方案如下:

NUM_ROWS = len(x_train)
NUM_COLS = len(x_train[0])
inputs = Input(shape=(NUM_COLS, ))
h = Dense(64, activation='sigmoid')(inputs)
outputs = Dense(NUM_COLS)(h)
model = Model(input=inputs, output=outputs)
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(x_train, x_train,
batch_size=batch,
epochs=epochs,
validation_data=(x_test, y_test))
h.trainable=False

# trying to add last sigmoid layer
outputs = Dense(1)(h)
outputs = Activation('sigmoid')
model2.fit(x_train, y_train,
batch_size=batch,
epochs=epochs,
validation_data=(x_test, y_test))

最新更新