python - TensorFlow CNN 不兼容的形状:4D 输入形状
问题描述
我有以下形式的样本数据: Data[n][31][31][5][2] 与:
- “[n]”是样本
- “[31][31]”是数据点数组
- “[5]”是该数据点内的位数
- 并且“[2]”是位的单热编码(例如,位 1 将是 [1, 0] 和零 [0, 1])
输出旨在是 [5][2] 或 [10] 值数组,这些值针对另一个 [5][2] 或 [10] 数组进行验证。尝试构建模型时,出现以下错误:
"ValueError: Shapes (None, 5, 2) and (None, 10) are incompatible"
模型代码如下所示:(with train_m[n][31][31][5][2], tr_m[5][2], check_m[n][31][31][5][2] , cr_m[5][2] 是训练数据和预期输出,然后是验证数据和预期输出。)
model = Sequential([
Conv2D(num_filters, filter_size, input_shape=(31, 31, 5, 2)),
Flatten(),
Dense(10, activation='relu'),
])
model.compile(
'adam',
loss='categorical_crossentropy',
metrics=['accuracy'],
)
model.summary()
model.fit(
train_m,
tr_m,
epochs=(100),
validation_data=(check_m, cr_m),
verbose=0
)
由于 [5][2] 输出是单一的,我不确定它们是否可以在被正确解释的同时被制成 [10] 矩阵。此外,是否有任何方法可以使密集层成为 [5][2]?
完整的错误可以在这里看到。我觉得在这里包含在 rawtext 中会非常长。
如果还有什么需要,请告诉我——我对使用 TensorFlow 还是很陌生。
解决方案
您的标签形状是 (5,2) 但网络输出是 (10,) 所以这很混乱。输出形状和标签形状都应该相同。利用:
tf.keras.layers.Reshape((5,2))
在密集层之后。你会没事的
推荐阅读
- r - 如何在给定的时间内运行 R 代码然后停止它?
- excel - Excel - 在拆分图表第二轴上强制显示 0
- python - 我如何寻求同时比较不同数据框中的两列?
- kendo-ui - 如何使用 direcline 在 kendo ui 控制聊天机器人中启用语音输入?
- javascript - 是否可以查看控制台上打印的两个 Javascript 对象是否是同一个实例(最好在 Chrome 中)
- reactjs - 如何在 JSX 中访问 Gatsby Create Page 模板 GraphQL 变量?
- apache - .htaccess 文件中“如果主机不是 foo,则重定向到 bar”的正确语法是什么?
- mongodb - 如何对位于mongodb对象下的嵌套数组中的数组进行排序
- python - 如何一起清除多个列表或字典
- javascript - 如何将两个变量存储在二维数组中添加数组传递传递ajax请求