我有一个带有两个输入和一个输出的模型:
...
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
传递,它就会很好地训练,例如
model.fit([tokens_wv_j, tokens_ng_j], anno_onehot, validation_data=[[tokens_wv_j_val, tokens_ng_j_val], anno_j_val], verbose=1, epochs=20, batch_size=400, sample_weight=sample_weights, callbacks=[checkpoint])
如果我尝试这样做,模型会立即引发此错误
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)
的方式(这显然是错误的,因为在这种情况下,第三个数组被视为{{ 1}}),但所有选项只会导致略有不同的错误消息。是否支持此功能?关于多输入模型的文档没有说明它。
答案 0 :(得分:0)
嗯......如果训练有效,你只需要确保这些形状匹配,除了第一个尺寸(批量大小):
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:]