查看“2016013212”的源代码
←
2016013212
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只对以下1个用户组开放:
用户
。
您可以查看并复制此页面的源代码:
第二小组 任杰 ==6月29日:配置服务器环境== 继前一日了解了项目目标并组装了任务所需工作站后,这一日的主要任务就是配置服务器端所需环境。 主要工作为: * 安装并配置Python 3.5 * 在Python中安装并配置TensorFlow库 值得注意的是,Win10的权限管理较为严格,在我们所使用的那台新机器上,由于未知的配置原因,仅仅使用管理员模式运行也不能成功安装Python。最终问题的解决方法是,创建一个管理权限的explorer来运行安装程序。 在安装TensorFlow的过程中,也有值得注意的地方。我们的新机器虽然是n卡,但是也没装CUDA,所以GPU版的TensorFlow库是不能用了,虽然感觉很浪费机器资源……所以只能用CPU版的。CUDA比较巨大,而且安装不方便,希望下一次开设此挑战项目的时候能够在机器上预装CUDA。 此外,该机器虽然安装了MS VC++ Library,但是其中一个DLL文件版本不对导致TensorFlow安装失败,必须从外网找到合适版本的DLL置于System32来解决此问题。最烦人的是安装过程显示的错误信息与该实际问题毫无关系,不过StackOverflow上提供了很有效的解决方法。 ==6月30日:配置并熟悉PYNQ Board环境== 这一天的工作与工作站本身无关了,主要是配置PYNQ。XILINX已经预先写入SD卡,PYNQ也配置好从SD卡启动,这给让我们可以快速开始工作。 PYNQ官网提供的指导非常详尽,只需要按照指示配置计算机直接连接PYNQ的以太网静态IP(192.168.2.0-255),就可以让PYNQ识别所连接的计算机。使用Webkit内核的浏览器访问PYNQ的地址和指定端口,就可以显示XILINX对计算机的界面。界面中提供的功能较多,我们没有一一研究,主要了解了Terminal和代码编译器。 <gallery> 文件:Pynq_LEDs.png|LED项目 文件:Max_Operation.png|马信在操作 文件:Pynq_Spectrogram.png|频谱图 </gallery> 在编译器中,我们依照示例输入、阅读并调试了LED灯程序和录音回放、频谱分析的两个程序。我虽然此前从未使用过Python,但是也很快理解了代码的大意。Python的可读性很强,很接近自然语言,而且代码的冗余信息很少,变量往往不需要声明可以直接赋值使用,这对于编写代码者来说是非常友好的。当然,在这么短的时间内,学通Python也一定是不可能的,所以输入和调试这些代码主要是了解处理声音数据时,常用的库、类和方法有哪些。根据指导书,除了基本的板载元件对应的类和方法(使用板载mic录音并储存文件),fft也是非常重要的,这能得到短时的频率分布;紧接着是通过plot得到频谱图,这是适合传输到服务器进行分析的数据。 代码中有一个思想非常有价值。因为PYNQ的性能有限,所以在fft前,程序先对音频进行降低采样率(码率)的处理,有利于快速计算结果。这种处理对于关键信息的损失很小,提高了效率,虽然不一定是必要的,但是是很有用的。 ==7月1日:熟悉TensorFlow== 上午不幸迟到,不知道周末也要算迟到…… 上午的任务主要是昨日延续,在PYNQ Board上做了一下使用Webcamera的一个项目。主要收获是了解了Pillow库的使用,除了代码中给出的打开文件、颜色空间的转换、旋转(open, convert, rotate)等,我们还了解了一下PIL的许多其他方法,比如裁切(crop),获取尺寸(size)等等。PIL库在图像处理上非常有用,mark住了。 接下来的一个项目复杂一些,是实时的图像边缘识别,这个也顺利跑下来了。闲得没事干的马信还把代码研究了一番。 <gallery> 文件:rotation.png|图像旋转 文件:Edge_detection.png|边缘识别 </gallery> 中间穿插了一些PYNQ板的介绍。大多数都是基础的计算机系统的知识,也就不说了。值得提的有两点,一个是PYNQ上是有可编程芯片的,第二是有类似Aduino上的那种针脚插入式的接口,接口可以自定义,以连接不同的传感设备,以拓展PYNQ的能力。 下午名义上的任务是在工作站上跑一个使用TensorFlow的程序,但是实际上大多时间还是用来配置环境了。主要问题是,老师了解到我的机器没有CUDA,就让我安装CUDA再重新配置TensorFLow。但是连接我们的工作站的那个交换机好像是有防火墙的,速度奇慢,从nVidia直接下载CUDA是不可能了。所以就一台机子一台机子的找。共享服务器上只找到CUDnn的库文件,没有CUDA。助教说共享服务器上应该是有CUDA安装文件的,但是迷之消失了。最后还是在一台机子上找到了这个庞大的文件,然而那台机子上传到共享服务器的速度也是只有两三兆,而我从共享服务器下载的速度就只有两三百K了,不可行。手机做媒介拷贝也不行,Win Server 2012因为安全性的原因好像不识别MTP设备。所以就用助教的闪存盘,拷贝进去后发现,我的这台机子识别不了这个闪存盘。至此已经下午四点多了,我,卒。 小小吐槽一下,我们用的这台新组装的机子安装的系统居然是雨林木风的,我以为这家公司五年前就销声匿迹了。然后盗版手段也非常低级,C盘里有一个文件夹Windows.Old,系统状态显示未注册,没跑了,这个显然是用去年win7/8/8.1免费可回滚升级win10的那版升级系统做的盗版系统,有可能仅仅是做了个镜像,然后嵌入个YLMF的logo,安上一堆给了钱的垃圾软件……何必呢,清华信息服务中心上有授权了的Windows镜像的我记得,安那个就好了。 继续说正事儿,因为安装CUDA的事算是吹了,所以我决定直接用CPU版的TensorFlow了。问题是一跑py,发现,发现连Pillow和scipy这些库都没装,那就装吧,装scipy的时候出依赖bug,装不上。真惨了,幸亏有助教在,给指了一条明路,把python卸载了,直接从TUNA下载Anaconda。这时候我才知道Anaconda原来是python集成了很多常用库和所需环境的一个版本,省去了大量配置的麻烦,没用过python的我算是吃了亏了…… 配置完了后,跑代码,非常顺利,十轮,CPU上也是一秒不到的事,早知CPU也能这么快,何必折腾CUDA呢。我再看计算机配置,GTX970,12核3.5GHz i7-xxxxK,想想,相对来说这GPU也没有特别强啊,不如当时就直接跑CPU版本了。结果也在浏览器中看到了,不过用Chrome就加载不出,Edge可以。晚上的时候,马信又去了实验室,补跑了一下下午的工程,据他说,Chrome突然出现了问题,中文里混了许多方块乱码。这机子真是太诡异了。 中间穿插了一些理论讲解,都是比较基础的概念,就是提到了神经网络的结构和原理,这些东西在第四章里也都阐述了,就不罗嗦了。实际应用的时候,只要调用TensorFlow的方法就行了。 P.S. GFW又发力了,TensorFlow官网被墙了,得用VPN了。 ==7月2日:机器学习== 从GitLab上获取所需代码后,又得到了预先处理过的音频文件。音频文件本来数量不多,经过加干扰就获得了一大批文件。 简单阅读了一下train.py和client.py,train.py中设定一个epoch包含3000个stage,然后循环执行100个epoch,除了第一个epoch外,都以上次保存的模型为checkpoint继续进行训练,这样就得到了许多checkpoint,可以选择在一定时候停止训练,可以得到阶段性的学习成果,也就是神经网络模型。train.py执行中只负责训练神经网络,而client.py负责读取音频文件并处理,通过端口feed给train.py。需要注意的是要使用管理员权限运行python,否则通过端口的数据传输会被拒绝。 <gallery> 文件:CPU_Run.png|训练开始(CPU) 文件:CPU_Engaged.png|满负荷运转 文件:CPU_Frequency.png|超……超频?! </gallery> 上午离开前让CPU版的TensorFlow跑起来了,就离开了。初始的accuracy是0.04,基本上就是瞎蒙的概率;速度刚刚好是一个epoch耗时90分钟,下午回来又等了很久,同时以蜗牛网速下载着CUDA,CUDA安装完的时候,跑完了2.5个epoch,也就是完成了2次训练,得到了第二个神经网络模型,第二个模型的accuracy大概是0.52。这时候将进程终止,修改train.py,让它从第三轮epoch开始进行,同时把CPU版的TensorFlow用GPU版本替换了。下午离开的时候,第三轮跑了一半,accuracy已经升到0.67了。 我们用的机器的GPU是GTX970,不算特别尖端。跑一个epoch大概耗时1500s。而另一台用Titan的机器,跑一个epoch只要900s,速度几乎快了一倍。不过按照我们的速度,机器跑一个通宵,第二天回来的时候也应该能跑完相当可观的轮次数了,虽然越往后降低损失函数可能越不容易,但是据老师说14个epoch得到的模型已经有很高的准确度了。还是要感谢CLDNN算法的优势。 <gallery> 文件:GPU_Run.png|从第三轮继续训练(GPU) </gallery> 在运行训练的间隙,我们折腾了一下一台闲置的工作站。本来装的是ubuntu,后又装了Win Server 2012,但是Server是空的,比较难配置,也就没去用它,然而ubuntu也出了问题,不能正确识别显卡,图形界面也进不去。在命令行下运行安装显卡驱动也出现错误,与运行着的X Server冲突,X Server却也是进不去的,最后干脆进入recovery, dpkg模式,将所有包都重装,最后结果还不知道,第二天再去折腾。
返回
2016013212
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
实践教学
个性化3D设计与实现
人工智能实践教学
区块链技术及应用
虚拟现实技术与内容制作
超越学科界限的认知基础课程
电子工艺实习
Nand2Tetris Engine Curriculum
TULLL Creative Learning Group
Wiki上手说明
Wiki账户创建
最近更改
工具
链入页面
相关更改
特殊页面
页面信息