Tensorflow ValueError:输入0与层conv2d_2不兼容:预期ndim=4,在Keras中发现ndim=5

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

我试图使用一个函数来添加层到一个非常深的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 = 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)
而言,第一个参数假定该形状没有批大小,并向其输出中添加另一个维度。这将解释额外维度的起源