2017年6月29日
今天的主要内容是熟悉了挑战项目的具体安排,对我们要做什么有了大体的了解。在电脑上安装了python程序,python是一门语言,有很多的编译环境,这次挑战需要用到一个比较强的编译环境anaconda,其中的函数包比较多,使用起来方便。之后用command配置了tensorflow软件,tensorflow分为CPU only 以及GPU版本,GPU版本要强大一下,但是由于笔记本的硬件所限,就在笔记本上安装了CPU only班的tensorflow。
今天开始学习python语言,从网站上下载了比较经典的python教材《python基础教程》,看了一部分之后,我感到python的工作原理与c有着一些不同,2.0版本的python和3.0版本的python有一定的不同,例如print在3.0里面是函数,打印的是变量,而2.0中print是语句,不是函数,所以打印的内容不需要加括号。和之前学过的C语言比较,python的函数有很大的不同,完成同样的工作,python需要的代码量少得多,当然对于一些非常基本的功能是车不多的。之前也听说,天体物理方向的数据处理是用python写的,因为python中又很多的函数包,直接调用比编写要方便,在这里也得到了很充分的体现,tensorflow就包装了对tensor进行运算的很多函数,调用比较简单。
2017年6月30日
操作内容
完成了python和tensorflow的安装与调试。pynk板的调试需要一定的经验,我也遇到了一定的困难,首先问题出在储存卡上,储存卡是旧的可能已经损坏了,所以pynk板不能启动;之后的问题出在供电上,笔记本的电源功率比较小,由CPU和显卡分走了大部分电压之后可能就带不起来pynk了,所以增大供电电压之后就可以正常启动了。
安装好了pynk板,进行了简单的实验,使用jupyter对pynk板进行编程操作。在jupyter上用python操作比较简洁,代码少就能完成比价复杂的任务,比C语言要简单得多。
学习内容
陈老师讲述了ICenter wiki的使用方法,在ICenter Wiki上进行内容编写,以及计算机工作方式与课程的相关知识。
章老师讲述了gitlab的优势以及使用方法
听了老师的介绍之后,我对计算机的相关知识产生了一定的兴趣,之前了解较少,就在网上查阅了相关资料,打算在最近读《编码——藏匿在计算机硬件背后的语言》这本入门书籍。
2017年7月1日
操作内容
今天也遇到了一定的困难,pynk的登录对浏览器内核有要求,只有谷歌的内核支持比较好,所以用其他浏览器虽然可以但是稳定性可能比较差。
完成了pynk板的调试,将pynk的HDMI输出接口与显示器相连,使用opencv webcam拍摄,并将照片的基本设置进行更改,对象片进行处理。旋转,将图片转为灰度图,对图片信息进行计算,处理为黑白线条,并在显示器上输出。
从这几个例子中了解了一定的python代码处理,python可以用简单的代码启动设备,初始化HDMI输入输出接口,初始化摄像头并拍照,用HDMI输出就可以显示,然后在pynk板进行一些列的计算,进行Edge detect 并转化为线条画,在显示器上输出结果。
整体的过程难度没有想象中那么大,虽然不是很多python代码,但是能够勉强理解其中一些程序段的含义。
还用cmd执行了tfExample文件,进行了简单的操作,在tensorbroad上显示出了最终结果,一个十维向量在三维的表示。
我认为,参与挑战的一些限制是在计算机基础知识和计算机的基本操作上面,例如对计算机硬件的不熟悉,例如显卡等,对计算机常用的命令行操作不熟悉,对其中的快捷键和常用命令不熟悉。所以,在平时就应该多进行学习,这些都还是很基础的计算机常识。
学习内容
了解了usb webcam的工作原理,进一步讲解了pynk的优点,pynk内部的硬件是可以编程的,编写新的功能就可以完成新的功能,可扩展性非常强,在未来的会发挥很大的作用。
学习了使用tensorflow来训练系统,识别简单的图片,由老师讲解了其中核心的代码,读取出图片的信息,制作成28*28的矩阵,在进行运算将其变为一个数,从图片数据库中随机抽取4长,进行机器学习,给予机器反馈结果,通过十轮学习,达到识别图片的目的。
2017年7月2日
操作内容
语音识别。
安装keras,从gitlab上下载数据,进行运算。为了从有限的数据中获取更好的训练结果,增强对噪音的识别能力,可以通过sound exchange进行增加噪音,这样一方面获取了更多的数据,另一方面还可以增强对噪音的识别能力,在嘈杂的环境中也可以进行很好的识别。程序在运行时遇到的主要问题是需要安装cudnn,对gpu进行加速,否则程序会运行失败,尝试安装cudnn,因为计算机中没有vs,所以导致一个组件安装失败,cudnn就整体安装失败,在取消vs组件的安装勾选之后,安装成功。
遇到的一个问题是,gpu版本的tensorflow必须要安装cudnn库和cuda软件对gpu进行加速,配套的是cuda的版本8.0和cudnn的5.1版本,但是提供的cudnn版本是6.0,系统不支持,所以从网上下载了cudnn5.1版本之后,放在NVIDDIA/CUDAv8.0/bin目录下就可以运行了。
最后遇到的问题是代码不一致,如果掌握python语言就很容易理解要做什么,老师提供的程序是使用过的,所以不需要太多修改,直接执行即可,所以就是在命令行中用python执行写好的程序即可,即../python name.py,与提供的代码稍有不同,所以掌握语法,理解真正要做什么,要执行什么非常的重要,就能根据要做的事情来调整。
在服务器上用的是5930k的cpu,titan X的显卡,所以用gpu版本的tensorflow执行是非常快的,大概运行速度是tensorflow CPU only的三倍以上,这样就节省了很多时间。大概执行完5个epoch之后正确率在0.7左右,还不够高,希望运行十五轮之后能够达到0.9以上。
学习内容
在教材上的第一章和第二章,介绍了深度学习原理,激活函数,人工神经网络的建立,用损失函数来量化输出结果和实际结果之间的差距,常用调节权重的方法随机梯度下降法,深度学习中的常用术语,自编码器初始化权重可以使得训练进程加速。
典型神经网络:卷积神经网络,常用于图像识别,因为卷积神经网络具有一定的空间不变形,图像平移旋转之后仍能对图像进行识别。 循环神经网络,常用于时间序列的识别,如语音识别,但是由于训练时间过长等问题有局限性,所以直接的应用并不多。 LSTM神经网络。是比较常见的改进循环神经网络的例子,大大缩短了训练时间,很好地实现了语音识别这样的功能。 谷歌的CLDNN网络,是一种混合的神经网络,相比前几种神经网络,在可靠性和识别的准确度上有非常大的提升,实际应用效果比较好。 CTC模型,讲以上的LSTM神经网络简化,扩展了语音识别的应用,降低了语音识别训练材料的制作成本。
学习了关于keras的相关知识,是tensorflow的一个函数库,使用起来会比直接使用tensorflow简洁。
深度学习不仅要能够对数据有很好的拟合,还要防止过好的拟合,因为训练用的数据是有限的,对实验数据拟合的过好之后,可能对真实数据拟合的不好,原因可能是:数据量太小,不够具有一般性,或者训练用数据的特性与使用时的数据特性不同。