2016012136

2017年7月3日 (一) 14:17CJ Ge讨论 | 贡献的版本

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上显示出了最终结果,一个十维向量在三维的表示。

我认为,参与挑战的一些限制是在计算机基础知识和计算机的基本操作上面,例如对计算机硬件的不熟悉,例如显卡等,对计算机常用的命令行操作不熟悉,对其中的快捷键和常用命令不熟悉。所以,在平时就应该多进行学习,这些都还是很基础的计算机常识。

border[300px border[300pxborder[300px

学习内容

了解了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简洁。

深度学习不仅要能够对数据有很好的拟合,还要防止过好的拟合,因为训练用的数据是有限的,对实验数据拟合的过好之后,可能对真实数据拟合的不好,原因可能是:数据量太小,不够具有一般性,或者训练用数据的特性与使用时的数据特性不同。

2017年7月3日

学习内容

学习了语音识别在Android系统上的实现,使用Android studio编写程序,结合自己的结果,在手机上实现简单的语音识别。

操作内容

今天的任务就是通过自己昨天训练产生的神经网络去进行声音的识别,由于计算机的性能非常强,一共训练了65个epoch,准确率达到了99.08%,可以说神经网络已经很精确了,是很好的基础。

我感觉整个挑战项目给了我很大的能力提升,最初我的很多东西只能问老师和助教,现在我很多东西是可以自己了解的。比如我不知道怎么安装tensorflow-master,我就查询了tensorflow-master是什么,网上说这是一个library,教材中要求下载之后安装,但是没有提供链接,所以我就在网上找链接,最终在tensorflow的官方gitlab中找到了这个文件,按照说明装载在文件中。

教材中的说明有一部分是和现实的操作不一样的,按照说明不会执行成功,我就可以分析这一步要做什么,了解目的,就可以自己思考解决办法,或者从网上查找解决办法。比如安装Android studio时,不知道如何安装SDK和NDK就在一些论坛上找到了安装方法,按照说明,也顺利的完成工作。所以比起其他组我还算进展比较快的。

这里有一些感悟,在网上查找解决办法的时候,虽然不会很快找到,有时候也找不到,只能确定一些词的含义,进行一些操作的原因,找我了这些信息之后就可以分析自己要怎么做了,不会在一个问题上卡住。如果遇到问题不自己去思考,消极地等待别人来帮忙,或者睡觉,看闲书,来回避问题,是永远不会得到解决的。昨天和今天的任务我往往都是最先做好的,所以有几位同学来问我一些操作,我就可以给他们回答,而不是像最初几天一样不知所措,一些需要安装的软件也是由于我的进程比较快,大家在遇到问题时,我已经下载好安装好了,就可以拷贝给大家一起用,这样的分享是很有意义的。

其实做这个挑战性项目,真正的挑战是在自己意愿上,虽然很有挑战性,整个项目需要我们学的东西没有超出我们的能力范围。虽然我在一开始了解的不多,但是从老师的讲解中,还有自己每天晚上在图书馆度的一些相关书籍,和遇到问题时在网上查到的资料,比起刚开始几乎什么都不了解,我感觉非常有收获。每天最早来到房间,开始一天的项目,虽然一天下来非常的疲惫,我还是感觉非常充实,很有收获。即使我们做的东西不是自己一行一行代码写出来的,不是自己一点一点想出来的,自己也没有从很初级的知识开始学起,知识按照手册的提醒做了一些相比起来比较简单的工作,还是感觉自己学到了很多的东西,以后再遇到相关的方面时候,再去学习知识就会变得很快。

今天遇到的问题也比较多,在调试程序的时候需要连接手机,但是工作站连接不上手机,更换了设备也没有成功。我觉得还可能是驱动的问题,就用华为手机助手安装了连接电脑的驱动,这次android studio连接成功了。但是调试是又会闪退,我在网络上查找解决方法,一个是增加一段代码,加进去之后没有改变,二是退出手机管家,可能会占用ADB,退出了之后手机调试仍就闪退。最后可以查看生成的日志文件,查看执行的日志文件可以了解错误在哪里。是synk没有成功。重新装入APP文件之后才成功,是lib库的位置放错了。

这次实验使用的model是之前是产生的,在我的测试中表现还是比较好的,可能是因为说普通话,周围环境不是非常嘈杂的缘故,但是使用同样数据的其他同学测试的结果就没有那么好了,如果周围很近的范围之内还有其它人说话,那么识别的结果就会不准确。可能使用更深度的神经网络,以及训练时产生的噪声可以考虑增加一些人声,系统只捕捉声音响度最大的一部分,使用更大的数据样本,增加一些方言的样本,这样的识别结果会更好,当然对系统的要求也会更高。

最后修改于2017年7月3日 (星期一) 14:17