Keras LSTM模型中能否将目标值放入输入x?是否影响精度?
关于Keras Model.fit()中x包含目标值的问题解答
是否允许这种操作?
可以这么做,但属于冗余且不规范的写法。Keras对Model.fit()的x参数(比如tf.data.Dataset)要求是返回(inputs, targets)或带样本权重的元组,但如果你硬把目标值塞进x的输入结构里,同时y也传入目标值,只要你的模型输入层能匹配x的结构(比如x是(特征1, 特征2, 目标值),模型就得有三个对应的输入层),Keras不会抛出错误——它只会按你给的输入结构把数据喂给模型。但这种做法违背了输入与目标分离的设计逻辑,完全没必要。会不会导致模型精度下降?
不会直接导致精度下降,但有潜在风险:- 如果你的模型误将x里的目标值当作特征参与训练,那训练出来的模型会直接“作弊”——相当于提前拿到了标签,训练精度会虚高,但泛化能力极差,实际部署后完全没用。
- 如果模型只是接收了x里的目标值但没有用到它,那这个操作只会浪费内存和计算资源,对训练精度没有影响。
建议做法
规范的做法是让Dataset返回(特征数据, 目标标签)的元组,要么直接把这个Dataset传给x(此时y可以设为None),要么拆分后分别传给x和y。这样逻辑清晰,也能避免误把标签当特征的低级错误。
内容的提问来源于stack exchange,提问作者tipsywacky
相关产品推荐
相关产品推荐

