这周计划本来是将im2txt的模型用代码实现一遍,然后开始跑模型了。但是,现在却还没完成。主要花费的时间部分为:做数据集7+个小时,整合im2txt与NMT代码3+个小时。
做数据集
以往做图片的数据集,应该使用TFRecord格式来进行读取。但是,我在使用的过程中发现,1万张图片写入到TFRecord文件中,占用的空间达到了2.7个G,按照这种比例来计算,整个比赛项目的数据有21万,验证数据集有3万,那么整个写入到磁盘中,不得超过60个G?我电脑中空间可没有这么大,而且比赛的时候,到时还得将这60个G上传到服务器,这也是个不小的时间开销。
刚好,上周看了Importing Data,而且,在seq2seq的项目中,我也用代码实践了。所以打算,自己使用DataSet实现一个自己的数据集。这一改动,就各种报错,星期六的上午本来是打算直接开始模型代码,确实整个上午一直处于报错之中。
后来,在星期天的上午,终于仔细排查下,发现了是pad(它是用来填充位置,保持数据长度一致)设置的问题。因为我在使用图片名读取图片后,pad_batch函数不知道怎么自己设置这个图片数据的pad数据了。后来,我直接将pad_types的维度修改下,然后将pad_values去掉就好了。但是,我觉得这还不是很好的解决方案,因为文字序列,我需要设置pad,暂时还没找到方法,而且我的pad_id其实和默认值0是一样的,就暂时先放放这个了。
下图是终于能看到数据了
整合im2txt与NMT代码
看了im2txt的源代码,发现相比于NMT,它简单很多,相比于seq2seq的代码,那就更简单了(由于seq2seq里面可以实现机器翻译、文本摘要、图片字幕,所以它的封装程度很高,看起来非常复杂)。然后,我就打算在im2txt中一些代码,改成NMT里面的实现方式,看看效果怎么样。
然后,我就整合完了,不过,运行之后,又是报错。看时间也不早了,然后明天开始调错误吧!
总结与计划
总结:在使用的过程中,又一次发现自己对tensorflow很不熟悉,当想要实现某些功能时,都不知道该怎么用函数去实现。不过,现在比以前好多了,里面一般的方法,自己知道怎么去查了。特别是发现其实tensorflow里面封装了很多基本的方法,例如字符串的操作,分割、连接、求长度等等,它里面其实也封装了一系列方法去进行操作。上周看到tensorflow里面的这些操作时,感觉,有点进入一个新的世界。
计划:
- 将模型代码跑通,并尽快放到服务器开始跑,这一周要看到效果。
- 看看seq2seq中对im2txt的实现,看看有没有更好的trick
网友评论