【发布时间】:2020-10-23 00:42:07
【问题描述】:
我正在训练一个多标签分类器(IAM 数据集上的手写数字识别器)。
这是我所有的分裂的形状:
>>> X_train.shape, X_val.shape, X_test.shape, Y_train.shape, Y_val.shape, Y_test.shape
((86583, 32, 128, 1),
(4558, 32, 128, 1),
(4797, 32, 128, 1),
(86583, 17),
(4558, 17),
(4797, 17))
以下是目标变量的 5 个示例:
>>> Y_val[5:10]
array([[68, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0],
[28, 67, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0],
[42, 59, 59, 62, 56, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0],
[73, 61, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0],
[73, 61, 54, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0]], dtype=int32)
(在上面的数组中,每个数字对应于字符和字母列表中的索引。并且所有目标向量都填充了零以匹配最大目标词的大小。)
我在输出层使用 'sigmoid' 激活,有 17 个单元,每个单元用于一个可能的输出字符/字母,如下所示。
from tensorflow.keras import layers
.
.
layers.Dense(units=17, activation='sigmoid', kernel_initializer='he_uniform', kernel_regularizer='l2')
对于我的多标签分类问题,将“binary_crossentropy”作为损失。
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['categorical_accuracy'])
【问题讨论】:
-
你的错误很可能来自你的模型的另一部分,你能完整显示出来吗?
-
你想看看我的模型的架构吗?
-
是的,请解析
-
我已经添加了。
-
看代码会更简单,但是问题出在你的第二个LSTM层,你有没有设置
return_sequences=True?
标签: python tensorflow keras tf.keras