Tensorflow ValueError:输入0与层conv2d_2不兼容:预期ndim=4,在Keras中发现ndim=5
我试图使用一个函数来添加层到一个非常深的CNN使用keras。以下是我的功能:Tensorflow ValueError:输入0与层conv2d_2不兼容:预期ndim=4,在Keras中发现ndim=5,tensorflow,machine-learning,keras,deep-learning,conv-neural-network,Tensorflow,Machine Learning,Keras,Deep Learning,Conv Neural Network,我试图使用一个函数来添加层到一个非常深的CNN使用keras。以下是我的功能: def add_layer(input_shape, kernel_size, filters, count): x = Conv2D(filters, (kernel_size, kernel_size), padding = 'same', activation= None)(Input(input_shape)) x = BatchNormalization()(x) x = Acti
def add_layer(input_shape, kernel_size, filters, count):
x = Conv2D(filters, (kernel_size, kernel_size), padding = 'same', activation= None)(Input(input_shape))
x = BatchNormalization()(x)
x = Activation('relu')(x)
x = Conv2D(filters, (kernel_size, kernel_size), padding = 'same', activation= None)(x)
x = BatchNormalization()(x)
x = Activation('relu')(x)
return keras.layers.add([x,Input(input_shape)])
当我从以下位置调用此函数时:
x = Input(shape = (6,264,264))
y = Conv2D(64, (7, 7), padding='same', activation='relu')(x)
y = MaxPooling2D((2,2))(y)
y = add_layer(y.shape, 3, 64, 3)
它给出了以下错误:
ValueError: Input 0 is incompatible with layer conv2d_2: expected ndim=4, found ndim=5
当我删除add_layer函数并简单地终止对密集层的maxpooling时,我得到:
AttributeError: 'Tensor' object has no attribute 'ndim'
有什么问题吗?(另外,我的输入有50个大小为(6264264)的np数组,即(50,6264264)非常确定您的线路
x=Conv2D(过滤器,(内核大小,内核大小),填充='same',激活=None)(输入(输入形状))
应该是
x=Conv2D(过滤器,(内核大小,内核大小),填充='same',激活=None)(输入(批处理形状=输入形状))
默认情况下,ny_layer.shape
会在形状中添加一个批次大小。但是,对于Input(Input\u shape)
而言,第一个参数假定该形状没有批大小,并向其输出中添加另一个维度。这将解释额外维度的起源