Neural network 卷积层降低了Keras的输出维数?

Neural network 卷积层降低了Keras的输出维数?,neural-network,keras,conv-neural-network,dimensions,autoencoder,Neural Network,Keras,Conv Neural Network,Dimensions,Autoencoder,我正试图在Keras中建立一个卷积自动编码器。我的印象是,卷积层的输出维度与输入维度相同,除非您将步幅设置为>1或设置border_mode='valid'。这是我的网络 from keras.layers import Convolution2D, MaxPooling2D, UpSampling2D, Activation from keras.models import Model, Sequential model = Sequential() model.add(Convolution

我正试图在Keras中建立一个卷积自动编码器。我的印象是,卷积层的输出维度与输入维度相同,除非您将步幅设置为>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没有任何简单的关系。

问题在于所谓的
图像排序。根据您使用的后端-您需要以指定格式提供数据:

  • 对于
    th
    (Theano)图像排序,您应以以下格式提供数据:

    [batches, channels, image_width, image_weight]
    
    这是您认为正确的格式

  • 对于
    tf
    (TensorFlow),图像顺序为:

     [batches, width, height, channels]
    
    这是一种格式,您的Keras安装将通过该格式解释您的输入

keras中的默认图像顺序是
tf
,我假设这是问题的根源。您可以通过以下命令检查图像顺序:

from keras.backend import image_dim_ordering
print image_dim_ordering() # Assuming that you're using a Python 2.*
您可以通过更改所描述的
keras.json
来更改它

您还可以通过打印
model.summary()
的结果来检查模型的详细信息,以确保实际情况确实如此