【问题标题】:autoencodeur output and feature vector are incorrect自编码器输出和特征向量不正确
【发布时间】:2019-07-16 09:04:39
【问题描述】:

我正在使用自动编码器对图像进行特征提取。我的图像是位图 => 像素值 = 0 或 1

我使用以下代码:

X_train_autoencodeur = X_train.reshape(-1, 96*96)
X_valid_autoencodeur=X_valid.reshape(-1,96*96)

input_img = Input(shape=(96*96,))
encoded = Dense(1024, activation='relu')(input_img)
encoded = Dense(512, activation='relu')(encoded)
encoded = Dense(256, activation='relu')(encoded)
encoded = Dense(128, activation='relu')(encoded)



decoded = Dense(256, activation='relu')(encoded)
decoded = Dense(512, activation='relu')(decoded)
decoded = Dense(1024, activation='relu')(decoded)
decoded = Dense(96*96, activation='sigmoid')(decoded)

autoencoder = Model(input_img, decoded)
autoencoder.compile(optimizer='adam', loss='binary_crossentropy')

autoencoder.fit(X_train_autoencodeur, X_train_autoencodeur,
                epochs=100,
                batch_size=256,
                shuffle=True,
                validation_data=(X_valid_autoencodeur, X_valid_autoencodeur))


然后我用

绘制重建图像
decoded_imgs = autoencoder.predict(X_valid_autoencodeur)
plt.imshow(decoded_imgs[7].reshape(96,96))

经过 3 个 epoch 验证和训练损失达到非常低的值并且没有变化

重建后的图像全是黑色,特征向量都一样。

我已经将自动编码器训练了 100 个 epoch,我应该训练更多吗? 我的代码是否犯了错误,这可以解释糟糕的重建?

【问题讨论】:

    标签: python keras autoencoder


    【解决方案1】:

    根据经验,我知道自动编码器通常需要很长时间来训练(更像是 1000 个 epoch),即使您使用的是卷积神经网络。

    但是,您正在尝试使用完全连接的 NN(并且是一个相当大的 NN),这将需要更长的时间来学习一些东西。

    我的建议是:尝试使用 CNN 和更多训练时期。

    【讨论】:

      【解决方案2】:

      您的代码似乎正确。我相信问题出在数据本身。您是否对图像进行了预处理,使其像这样在 0-1 之间进行标准化:

      x_train = x_train.astype('float32') / 255.
      x_test = x_test.astype('float32') / 255.
      

      【讨论】:

      • 我认为这没有用,因为像素值为 0 或 1。归一化将创建 0.004 (1/255) 和 0 的像素值:/
      【解决方案3】:

      首先,您的网络(不必要地)非常大并且有很多参数,因此需要大量数据来训练。所以我建议在每个编码器和解码器结构中只使用 2 层。 非常重要的一点是,对图像进行编码,卷积自动编码器肯定会得到更好的结果,所以试试吧。 最后你为什么使用二元交叉熵作为损失函数?试试mse。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-08
        • 1970-01-01
        • 2013-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多