keras的model.fit中validation_data参数问题及解决

3 篇文章 0 订阅

一、报错提示

ValueError: Error when checking input: expected input_2 to have shape (1, 1, *) but got array with shape (1, 2, *)

二、问题背景:model.fit中validation_data参数遇到的问题

设置三个输入入口,构建的模型整体示意图如下:在这里插入图片描述
输入大小分别为:
在这里插入图片描述

model = Model(inputs=[input_x1,input_x2,input_x3], outputs=output)

再到最后训练程序,看似毫无问题(附上主要问题,无关的核心代码已删,请见谅)

history = model.fit([X_train1,X_train2,X_train3],
                    Y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=2,
                    validation_data=([X_test,X_test,X_test], Y_test),
                    ]) 

点击运行,报错。
报错意思是说维度不匹配,但是如果注释掉validation_data这一行程序可以照常训练。

ValueError: Error when checking input: expected input_2 to have shape (1, 1, *) but got array with shape (1, 2, *)
在这里插入图片描述
网上查了下,还是有人跟我遇到类似的问题,作者说没找到多输入时model.fit中设置validation_data的例子,不过还是没有解决我的问题。
https://www.jianshu.com/p/00015b976016

分析一下,既然注释掉validation_data可以跑,那么问题就在validation_data这块,于是我检查了传入的值,果不其然。

修改前:

history = model.fit([X_train1,X_train2,X_train3],
                    Y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=2,
                    validation_data=([X_test,X_test,X_test], Y_test)

修改后(仅仅改动验证部分传入的参数值)

history = model.fit([X_train1,X_train2,X_train3],
                    Y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=2,
                    validation_data=([X_test1,X_test2,X_test3], Y_test)

验证集的维度应该与训练集的维度一一对应(也是服了自己)
在这里插入图片描述
最后,成功运行。(不要粗心。。。)在这里插入图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sinysama

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值