我正在实现一个自动编码器,我想计算潜在空间的维度。
假设我想要一个3D的潜在空间。那么从我的代码如何计算当前的潜在空间。谢谢
我当前代码:
x = Input(shape=(28, 28,1))
# Encoder
conv1_1 = Conv2D(16, (3, 3), activation='relu', padding='same')(x)
pool1 = MaxPooling2D((2, 2))(conv1_1)
conv1_2 = Conv2D(8, (3, 3), activation='relu', padding='same')(pool1)
pool2 = MaxPooling2D((2, 2))(conv1_2)
conv1_3 = Conv2D(8, (3, 3), activation='relu', padding='same')(pool2)
h = MaxPooling2D((2, 2))(conv1_3)
# Decoder
conv2_1 = Conv2D(8, (3, 3), activation='relu', padding='same')(h)
up1 = UpSampling2D((2, 2))(conv2_1)
conv2_2 = Conv2D(8, (3, 3), activation='relu', padding='same')(up1)
up2 = UpSampling2D((2, 2))(conv2_2)
conv2_3 = Conv2D(16, (3, 3), activation='relu')(up2)
up3 = UpSampling2D((2, 2))(conv2_3)
r = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(up3)
autoencoder = Model(inputs=x, outputs=r)
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
1条答案
按热度按时间sgtfey8w1#
自动编码器的架构呈漏斗形,从输入层到称为“潜在空间”的层(以红色显示),节点数逐渐减少。从潜在空间开始,节点数似乎再次增加,直到到达输出层,在输出层,节点数等于输入层中的节点数。
从模型概要中我们可以看出,第7层是潜在空间,是输入数据的压缩形式。
要从模型中获取特定层的尺寸,您可以使用上面的API。谢谢!