深度学习卷积层维度错误

添加第一个卷积层,

model.add(Conv2D(32, (10, 10),
strides=(2, 2),
input_shape=(151, 151, Channel_Num),
padding='same',
activation='relu'))

添加第一个池化层,

报错内容为:
ValueError: Dimensions must be equal, but are 2 and 151 for '{{node mean_squared_error/SquaredDifference}} = SquaredDifference[T=DT_FLOAT](sequential/dense_2/BiasAdd, IteratorGetNext:1)'
with input shapes: [?,2], [?,151,151].

img

img

这个错误的意思是:维度必须相等,但是在节点 mean_squared_error/SquaredDifference 处,维度是 2 和 151。输入的形状分别是 [?,2] 和 [?,151,151]。

这个错误的原因可能是:

1、在添加池化层之前,没有正确添加卷积层。卷积层和池化层是成对出现的,所以需要先添加卷积层,再添加池化层。
2、在添加卷积层时,指定的 strides 参数不正确。strides 参数指定卷积核在输入数据的宽和高方向上的步长。如果指定的步长为 (2, 2),那么卷积核会跳过每隔两个像素就对一个像素进行卷积。这可能会导致输出数据的维度和输入数据的维度不匹配。
3、在添加卷积层时,指定的 input_shape 参数不正确。input_shape 参数指定了输入数据的形状,包括图像的宽、高和通道数。在添加卷积层之前,需要确保指定的 input_shape 参数与实际输入的数据的形状相匹配。

这些都可能是导致错误的原因。要解决这个问题,需要检查代码,确保在正确的顺序添加了卷积层和池化层,并且确保指定的参数的值是合理的。

需要把权重改成对应的维度

维度设置不对https://blog.csdn.net/duanlianvip/article/details/94626955

stride 是一个一维的向量,长度为4。
形式是[a,x,y,z],分别代表[batch滑动步长,水平滑动步长,垂直滑动步长,通道滑动步长]
修改为:
model.add(Conv2D(32, (10, 10),
strides=(1,2, 2,1),或者strides=(1,1, 1,1),
input_shape=(151, 151, Channel_Num),
padding='same',
activation='relu'))

有没有全一点的代码,就只有这一句话也看不太出来

python深度学习tensorflow卷积层示例教程
借鉴下
https://www.jb51.net/article/253511.htm