【发布时间】:2017-05-21 17:41:00
【问题描述】:
我正在尝试在 Keras 中构建卷积自动编码器。我的印象是卷积层具有与输入相同的输出维度,除非您设置 stride>1 或设置 border_mode='valid'。这是我的网络
from keras.layers import Convolution2D, MaxPooling2D, UpSampling2D, Activation
from keras.models import Model, Sequential
model = Sequential()
model.add(Convolution2D(16, 3, 3, border_mode='same', input_shape=(1, 1920, 1080)))
model.add(Activation('relu'))
model.add(MaxPooling2D((2, 2), border_mode='same'))
model.add(Convolution2D(8, 3, 3, border_mode='same'))
model.add(Activation('relu'))
model.add(UpSampling2D((2, 2)))
model.add(Convolution2D(8, 3, 3, border_mode='same'))
model.add(Activation('relu'))
model.add(UpSampling2D((2, 2)))
model.compile(optimizer='adadelta', loss='binary_crossentropy')
当我查看第一层的输出尺寸时,似乎 y 坐标的长度已经减少了。
>>>model.layers[0].output_shape
(None, 1, 1920, 16)
这是什么原因造成的?我不知道那 16 是从哪里来的。好像和1080没有什么简单的关系。
【问题讨论】:
标签: neural-network keras conv-neural-network dimensions autoencoder