多输入时model.fit中validation_data参数设置

错误提示:

ValueError: Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 3 array(s), but instead got the following list of 1 arrays: [array([[1245,  177, 2587, ..., 1057,  962, 1057],

报错语句:

model.fit(x=[x_content_train, x_syntax_train, x_depth_train], y=y_train,

              batch_size=batch_size, epochs=nb_epoch,

              validation_data=([x_content_test, x_syntax_test, x_depth_test], y_test),

              callbacks=[metrics, checkpoint])

并没有解决问题的纠结:

1.以为是格式写错了,换成字典方式传入Input,照旧报错。

model.fit({'content_input':x_content_train,'syntax_input':x_syntax_train,'depth_input':x_depth_train}, y_train,

              batch_size=batch_size, epochs=nb_epoch,

              validation_data=({'content_input':x_content_test,'syntax_input':x_syntax_test,'depth_input':x_depth_test}, y_test),

              callbacks=[metrics, checkpoint])

2.以为是validation_data的错,结果换成validation_split=0.3也一样的错误。

debug

网上查了很多资料,两个小时都没有解决,无解,自己debug代码吧:

1.首先确认是验证集的问题,证据如下:

a.在每个epoch训练时都是正常的,但是在每个epoch结束做验证时就报错,所以应该是验证集的问题。

b.在model.fit语句中去掉validation相关项+callbacks,是可以正常运行的。

即model.fit(x=[x_content_train, x_syntax_train, x_depth_train], y=y_train,

              batch_size=batch_size, epochs=nb_epoch)

c.打印出所有的input:包括train和test部分,对比一下错误提示中的数组,看到底是得到了哪一个,哪两个丢了。

结果发现,得到的是第一个input,后面两个丢了。

print x_content_test:

[[1850 1047 1197 ... 2220 1189  788]

[2106 2458 1655 ... 1057  962 1057]

[ 423 1490  919 ... 2451  482  788]

...

[1599 2602 1731 ... 1057  962 1057]

[ 369 1197 1412 ... 1057  962 1057]

[  85 1966 2757 ...  788 1057 1057]]

error get only on array as:

[array([[1850, 1047, 1197, ..., 2220, 1189,  788],

      [2106, 2458, 1655, ..., 1057,  962, 1057],

      [ 423, 1490,  919, ..., 2451,  482,  788],

      ...,

      [1599, 2602, 1731, ..., 1057, ...

解决方案:

没找到多输入时model.fit中设置validation_data的例子,而且用validation_split也一样是错的,但是验证集又是必须用的,所以后来我就把多输入改成单输入了,其实就是在输入之前先拼接,输入之后再拆分,费点功夫而已,单输入时validation_data是没问题的。


参考链接:

https://www.jianshu.com/p/0c7af5fbcf72 作者:赤乐君

首先Keras的fit函数中,传入的validation data并不用于更新权重,只是用是来检测loss和accuracy等指标的。但是!作者说了,即使模型没有直接在validation data上训练,这也会导致信息泄露,模型会对validation data逐渐熟悉。所以这里我简单总结一下比较方便的data split方法。

第一步:调参

1、用sklearn的train_test_split来把数据分割为training data和test data.(根本没有validation data注意了)

2、用keras的model.fit()时,不要使用validation_data这个参数,而是直接使用validation_split这个参数,把training data中的一部分用来作为validation data就行了。

必须在validation data上进行验证,输出loss,观察变化,调参,包括:更改layer,unit,加dropout,使用L2正则化,添加新feature等等。

第二步:训练

等调参结束后,拿着我们满意的参数,再一次在整个training data上进行训练,这一次就不用validation_split了。因为我们已经调好了参数,不需要观察输出的loss。

训练完之后,用model.evaluate()在test data上进行预测。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容

  • 我们沿着自己的轨迹在不停的向前,一路的风景在不停的向后更换,好像已经很久很久没有沿途看过风景了,或许是身边...
    景殇凌宸阅读 423评论 0 0
  • 引记: 小凉夏:你的世界没有人在乎我~ 大凉夏:那么你呢,你在乎么? 故事情节很离谱,不能用理性分析。 但是这其实...
    静由阅读 183评论 0 0