无法将验证数据传递到Keras中包含多个输入的模型

2024-04-26 14:04:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有两个输入和一个输出的模型:

...
model = models.Model([l_in_wv, l_in_ng], [l_out])
model.compile(optimizer="Adam", loss=loss_fn, metrics=[...], sample_weight_mode="temporal")
model.fit([tokens_wv_j, tokens_ng_j], anno_onehot, validation_split=0.2  verbose=1, epochs=20, batch_size=400, sample_weight=sample_weights, callbacks=[checkpoint])

只要我不尝试将一个单独的数据集作为validation_data传递,它就可以正常运行

^{pr2}$

如果我尝试这样做,模型会立即产生这个错误

ValueError: Error when checking target: expected l_out to have 3 dimensions, but got array with shape (131943, 50)

我尝试过更改将数据集传递给([tokens_wv_j_val, tokens_ng_j_val], anno_j_val)((tokens_wv_j_val, tokens_ng_j_val), anno_j_val)甚至(tokens_wv_j_val, tokens_ng_j_val, anno_j_val)(这显然是错误的,因为在本例中,第三个数组被视为sample_weights),但是所有选项只会导致稍微不同的错误消息。是否支持此功能?关于多输入模型的文档对此一无所知。在


Tags: samplein模型model错误valoutng
1条回答
网友
1楼 · 发布于 2024-04-26 14:04:24

嗯。。。。如果培训有效,您只需确保这些形状匹配,但第一个维度(批量大小)除外:

  • tokens_wv_j.shape[1:] = tokens_wv_j_val.shape[1:]
  • tokens_ng_j.shape[1:] = tokens_ng_j_val.shape[1:]
  • anno_onehot.shape[1:] = anno_j_val.shape[1:]

相关问题 更多 >