Python 使用自动编码器的图像彩色化-最大压缩点
我正在为自动编码器建立一个模型。我在实验室颜色空间中有一个图像数据集(256x256) 但我不知道,什么是正确的最大压缩点。我发现了一个例子,当我有176 x 176 x 1(~30976),那么点是22 x 22 x 512(~247808) 但这是如何计算的呢 我的模型:Python 使用自动编码器的图像彩色化-最大压缩点,python,tensorflow,keras,autoencoder,Python,Tensorflow,Keras,Autoencoder,我正在为自动编码器建立一个模型。我在实验室颜色空间中有一个图像数据集(256x256) 但我不知道,什么是正确的最大压缩点。我发现了一个例子,当我有176 x 176 x 1(~30976),那么点是22 x 22 x 512(~247808) 但这是如何计算的呢 我的模型: model = Sequential() model.add(Conv2D(32, (3, 3), activation='relu', padding='same', input_shape=(256, 256, 1))
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', padding='same', input_shape=(256, 256, 1)))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(64, (3, 3), activation='relu', padding='same'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(128, (3,3), activation='relu', padding='same'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(256, (3,3), activation='relu', padding='same'))
model.add(MaxPooling2D((2,2)))
model.add(Conv2D(512, (3,3), activation='relu', padding='same'))
#Decoder
model.add(Conv2D(256, (3,3), activation='relu', padding='same'))
model.add(UpSampling2D((2, 2)))
model.add(Conv2D(128, (3,3), activation='relu', padding='same'))
model.add(UpSampling2D((2, 2)))
model.add(Conv2D(64, (3,3), activation='relu', padding='same'))
model.add(UpSampling2D((2, 2)))
model.add(Conv2D(2, (3, 3), activation='tanh', padding='same'))
model.add(UpSampling2D((2, 2)))
model.compile(optimizer='adam', loss='mse' , metrics=['accuracy'])
model.summary()
计算出网络的这些方面比数学更具艺术性。因此,如果不正确地分析数据,我们就无法定义一个恒定的压缩点,这就是为什么首先使用神经网络的原因 然而,我们可以直观地思考每一层发生了什么。例如,在图像着色问题中,最好不要使用太多的池层,因为这样会丢弃大量信息。大小为2x2、跨步为2的最大池层丢弃75%的输入数据。这在分类中非常有用,可以消除不可能的类。类似地,ReLU丢弃所有负面数据,可能不是解决当前问题的最佳函数选择 以下是一些可能有助于解决您具体问题的提示:
elu
,LeakyReLU
等,不会消除负值,尤其是因为输出也需要负值
Conv2D
层作为最后一层,以补偿上采样时的伪影