个人申明:本人最开始意愿是学嵌入式的,奈何学校和身边环境使然,没有那么良好的氛围。后来在导师的指引下,入了这tensorflow的坑。不过经过这一个月来的书本加视频自学,感觉还扣以。而且感觉对此产生了兴趣。所以在后面得时间里,我将会在此记录我学习的感悟及遇到的BUG解决方法。其实还是有点担心的,毕竟这方面的工作大多招的是硕士生,我这个双非的本科生日后生活堪忧哦。哎,不抱怨了,开始学习。
在前面的一段时间里,我在自学Tensorflow的实战Google深度学习框架,了解了基本的深度学习的神经网络的框架,以及如何搭建,如何调优,如何持久化,如何可视化。可是为什么选择现在才开始写博客,而且是直接从这个图像编码处理开始呢?因为我觉得前面的都是基本概念,到这里开始才是有趣的地方,才值得好好的纪录点点滴滴。话不多说,开始介绍这个坑。
环境:py3.5 tf14.0 Anaconda3 win10(之所以选择py3.5是因为本书上说明它的样例均是14版本的,而查询资料后发现目前只有py3.5支持,所以无奈只好去官网下载对应的版本来开始;另外大多数建议是使用Linux系统开发,不过我是试水嘛,所以就这WIN10上了。。其实很明显win10的毛病要多点,但是也是一种学习过程,虽然会改bug到心率焦脆。)
安装:教程网上其他博客也有,此不赘述。如果有需要,会后期添加。
正题:
图像编码处理原因:我们图像存储时使用的是JPG PNG等格式,而我们的神经网络处理的输入数据为矩阵形式。所以对图片需要进行编码处理,使其转化为矩阵形式。具体图像矩阵表示原理后期有时间补充。
课本源码:
#!/usr/bin/env python # -*- coding:utf-8 -*- import matplotlib.pyplot as plt import tensorflow as tf image_raw_data = tf.gfile.FastGFile("C:/path/to/picture.jpg", 'r').read() with tf.Session() as sess: img_data = tf.image.decode_jpeg(image_raw_data) print (img_data.eval()) plt.imshow(img_data.eval()) plt.show() encoded_image = tf.image.encode_jpeg(img_data) with tf.gfile.GFile("/path/to/output", "wb") as f: f.write(encoded_image.eval())
按理说课本是对的吧,但是在我使用PYcharm实战时,报了很多错误,现在我来一点一点分析:
1.安装包问题:
描述:通过代码,我们可以看到需要安装matplotlib这个包来实现图片的打开操作。但是通过pyton自带的在线安装时,你会发现会报错。连接超时,文件下载到一点就退出来了。
解决:不要在线安装,去官网http://www.lfd.uci.edu/~gohlke/pythonlibs/上下载自己当前py所支持的版本格式文件包,具体支持格式查询可以百度,在py的shell中输入指令查询,并下载相应版本库。
其次,你会发现下载好matplotbil,在cmd中使用pip install 文件地址安装完成后运行程序任然会报错说Numpy的什么子函数找不到,或者是模块找不到。这是因为matplotbil库还有依赖包需要安装。具体所需如下图所示,方法同样是官网下载后安装。
2.py版本问题
描述:安装好版本后,有时候运行会报如下错误:
这个是个很坑的地方。看看提示,这句是跟书上的代码一模一样啊,怎么错了。一开始我也很无奈,但是在无聊的查询解决方案时才知道错在了‘r’ --- 'rb'就好了,是不是很坑。原因应该是数据格式不支持。
或许你在运行的时候遇到的问题首先不是这个,而是还是提示安装包有问题,可是明明查询库的时候,安装包都有啊,而且已经安装成功了呢。那是哪里出了问题?
解决:原来是我在运行该代码时选择的py解释器和我下载的包安装的解释器不同。多么搞笑嘛,这是。所以可以通过pycharm的设置--project interperter选择对应的版本解释器就行。
注意到上面这些坑,应该就会好走多了,具体的运行效果如图:
可爱的小熊预祝你成功,不懂得可以留言哦。或者 QQ邮箱私信我,共同学习,减少时间的浪费。2652140788@qq.com