问题描述
我对自动编码器有点陌生。我有来自Keras(https://blog.keras.io/building-autoencoders-in-keras.html)的代码。我想知道我在这里的代码中的注释正确吗?
input_img = keras.Input(shape=(784,)) # input
encoded = layers.Dense(128,activation='relu')(input_img) # is it hidden layer???
encoded = layers.Dense(64,activation='relu')(encoded) # is it hidden layer???
encoded = layers.Dense(32,activation='relu')(encoded) # is it hidden layer???
decoded = layers.Dense(64,activation='relu')(encoded) # is it hidden layer???
decoded = layers.Dense(128,activation='relu')(decoded) # is it hidden layer???
decoded = layers.Dense(784,activation='sigmoid')(decoded) # output
如果可能的话,你们能解释更多吗?谢谢!
解决方法
隐藏层是位于输入和输出层(ref)之间的任何层。因此,所有这些都是您网络中的隐藏层:
encoded = layers.Dense(128,activation='relu')(input_img)
encoded = layers.Dense(64,activation='relu')(encoded)
encoded = layers.Dense(32,activation='relu')(encoded)
decoded = layers.Dense(64,activation='relu')(encoded)
decoded = layers.Dense(128,activation='relu')(decoded)
在自动编码器中,有一个特别有趣的隐藏层:网络中的“瓶颈”隐藏层,该层强制对原始输入进行压缩的知识表示。在您的示例中,压缩率为784到32,瓶颈隐藏层为:
encoded = layers.Dense(32,activation='relu')(encoded)