1.我们看tf文档里面介绍的,把mnist或者cifar10图片数据集转为特殊的二进制数据,然后通过placeholder占位符,
通过占位符读取数据。但是怎么把图片转为特殊的二进制数据?不清楚,怎么特殊?自己去看mnist官网有介绍格式。
2.通过队列读取数据,为什么要用队列方式?因为比如你读取图片要m秒,gpu计算要n秒。每次完成要你n+m秒,gpu
每次要等n秒,浪费资源,所以用2队列并行线程,从而解决了io问题。一个负责读取图片,一个队列负责计算。
等下,tensorflow官方推荐的数据存储方式是tfrecord格式,队列也可以读取tfrecord数据。
为什么这么麻烦?直接读取图片多好?因为每次读取图片要从文件头读到尾,当你有很多图片时候,光读取就很费时间,
所以建议先把图片转为tfrecord格式,再给队列处理。更省时间。在把图片转为tfrecord时候,还有多线程方式加快转化。
数据增强的时候也很慢,所以也建议用多线程方式。
3.现在tf1.4以后,官方又开始主推用dataset方式读取数据,不用以前的队列方式了。貌似dataset更简洁,也功能强大,
还在研究中。dataset也可以读取图片,等其他数据。
未完待续。。。。