Keras全连接层输入为2D矩阵时训练报数据基数错误求助
问题原因
- 你构造的
X是Python列表类型,没有转换为Numpy数组,Keras解析输入形状时会出现异常 - 全连接层
Dense默认仅作用在张量的最后一个维度,你输入的单样本形状是(69,11),不经过展平直接传入Dense层的话,最终模型输出形状是(None, 69, 1),和标签y的形状(100,)完全不匹配,因此触发样本基数不匹配的报错。
解决方案
两步修改即可正常运行:
- 构造完模拟数据后,将X转换为Numpy数组:
X = np.array(X)
- 模型第一层添加
Flatten层,将每个样本的2D矩阵展平为1D向量,匹配后续全连接层和标签的形状要求,修正后的模型构造代码如下:
model = Sequential() # 新增Flatten层,把(69,11)的2D输入展平为759维的1D向量 model.add(Flatten(input_shape=(dim1, dim2))) model.add(Dense(units=11, activation='relu')) model.add(Dense(units=11, activation='relu')) model.add(Dense(units=1, activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) model.summary()
修正后模型的输出形状会是(None, 1),和标签y的形状匹配,调用model.fit(X, y)即可正常训练。
内容的提问来源于stack exchange,提问作者TooLateMate
相关产品推荐
相关产品推荐

