|
'''
此处是一个弱弱的高中生的抱怨大会,机器学习专业人员请轻喷
'''
'''
从我开始写这篇吐槽以来,我发现paddlepaddle官网几乎是几个星期就有新的改良,刚写下来的吐槽被官网分分钟打脸,已经吐槽的跟还没来得及吐槽的问题几乎都被解决掉了。有的时候为了截张当时的图还得挂梯子从国外访谒才能找到老版本的官网内容。果然是不鸣则已,一鸣惊人呐(雾)。所以以下的文字就拿来当作黑历史吐槽跟假的入门心得好了orz。
祝Parallel Distributed Deep Learning,一个良心的易学易用的分布式深度学习平台,越来越好 _(:3ゝ∠)_
'''
我是一名不务正业的高三学生,在高一高二分袂接受了物理与数学的无情鞭挞后开始在高三成长本身的计算姬爱好。因为在此前小学就读于小县城,初中毕业于私立,所以我直到高中才真正地接触到计算姬编程的概念。不外因为父亲是某大专计算机基础课的老师的缘故(并不知道是什么课程),我很荣幸地能够拥有少量的计算姬素养,也算是我起步的一个基础了。
今天这里要给大师分享的是我一不小心踩到paddlepaddle的坑中在历经千难万险知难而退又被强行拖回逆流而上最后心有所感借景抒情情景交融抒发本身怅然期望归隐田园的故事。所以这篇文章概略面向的读者为不会python但是想学paddlepaddle的狭窄人群。若是大佬不小心看到此文章,请一笑而过,就当是一个不自量力的高中生的胡言乱语吧QwQ
import makerspace as space
大约两个月以前,我们学校开了有史以来最晚的一次运动会——11月28日开幕,11月30日闭幕。会天小雨,气温10-,南方的冬天就是这样的湿冷。虽然温度尚且在5°C以上,但是在稀稀拉拉个不竭的细雨中我们的热情早就给浇得所剩无几。尤其是一二三四班,本年抽签决定班级看台位置的时候集体中邪,都被分配到了雨棚所覆盖不到的看台边缘位置,于是本来人数就不多的一二三四班在雨水的冲刷下就只剩下看热闹的高二跟看新鲜的高一了。
而此时的我,正坐在创客空间的电脑前,翘着二郎腿,吃着薯片,靠着摄像机,在全校视野最佳处不雅抚玩着操场上同学们的激情比赛,一脸轻松惬意,毫不担忧有人会来打扌觉wosdhdfj/dgsLk%kd
killproc Havingfun.py
import paddle.v2 as paddle
就在我专心于欣赏运动会热情似火的比赛过程时,makerspace的谢老师俄然呈现:“诶呀,你们很闲嘛,来来来,不如我们趁这三天来学一点东西。”“......”“我看比来机器学习斗劲热门啊,不如你们玩一玩机器学习,怎么样?”“......”“嗯,TensorFlow跟paddlepaddle,你们一人来选一个。”“......”
趁着尴尬的沉默尚未被打破,赶紧手动百度TensorFlow跟paddlepaddle,看到的简介是“TensorFlow中文社区-首页”“TensorFlow如何入门”“TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其定名来源于...”嗯,一看就跟我之前跳的UE4坑是一副德性,都是挑战我外语程度跟理解能力上限的东西。。。再看看paddlepaddle:“PaddlePaddle_易学易用的全开源深度学习平台\n百度深度学习平台PaddlePaddle是...”一看到百度这一起码比中文社区要友好的多的字眼我果断选择了paddlepaddle,毕竟国产中文论坛多,对于我这个零基础萌新真是再友好不外了、、
“paddlepaddle看起来不错,就决定是你了。”不掉中二地喊出了这句话,我得意地瞥了眼边上那位python大神,他貌似并不在意什么,随口应了句“那我就学TensorFlow吧。”殊不知人间之险恶非我等萌新所能预料,天真的我即将跳进一个大坑。
---------------------分割线-----------------------------
正文:小白如何正确打开paddlepaddle
作为一个真·零基础的学徒,我所做的第一件事情就是搜索关键词“快速入门paddlepaddle”“零基础入门paddlepaddle”为什么不在官方网站上学习呢?嗯,因为身为小白我还是有一点自知之明的,官方文档那什么的就算是中文我也不必然看得懂,要想在毫无布景常识的情况下看懂官方文档什么的......之后不久,我便在CSDN上发现了不少入门教程。在浏览了部门的教程之后,我很轻松就入门了paddlepaddle......
当然没有!
让我们来欣赏一下这些教程:
打开这些链接:
都是404notfound
甚至包罗book.paddlepaddle.org
一脸懵〇。。。作为国内被非常看好的神经网络框架,居然呈现官网都404的现象??
等等,必然是哪里搞错了。。。
于是我点开了paddlepaddle的官网:
看起来貌似没什么问题。。。网站做的虽然看起来冷清了一些,不外作为官网也算是斗劲都雅了,不存在封锁的情况。(看样子是百度paddlepaddle本来官方文档的网址后来发生了变换,因此才导致了本来的网址404. #不懂瞎猜)
(忽略掉了快速入门四个大字以后,)我对官网进行了初步探索。在左上角能够发现“模型库”三个字。即使小白到如我一般地步,也知道模型库可是个好东西。有了提供好的模型我就可以搬运抱走强行改装,最后交差什么的都不是难事,嗯,咱一点也不熟练。
不外在此之前,还是要先安装我们的paddlepaddle的。点开CSDN的教程,我看到的大部门字眼是这样的:
还有这样的:
甚至于官方文档(2017年12月初)也有这样的说明:
所以,得出结论,paddlepaddle目前独一官方撑持的运行方式是docker容器..器啊你个大头鬼!虽然不知道当时写教程的人用pip install paddlepaddle 出了什么问题,但对于我11月29日的那次测验考试来看,pip install paddlepaddle 并没有呈现任何问题。由于官方网站“快速入门”里本身就提供了使用pip 安装paddlepaddle的示例,因此我的第一次测验考试也是使用pip,而且非常没有问题地成功运行了第一个demo。
然而我是一个小白,没错,是一个小白,白。
所以在一个多月前我还不知道什么是pip。我知道的只有教程上所说的“docker是个好东西,便利快捷易入门”。于是,不明觉厉的我随即按照各教程上所说的在ubuntu系统下安装了docker,然后跟着教程配置了一大堆什么看不懂的东西。最后跳回到官方文档运行了housing.py,“瞧! 它应该打印出预测住房数据的清单。”圆满完成!我终于入门啦!
但是很快我就发现了一个问题:docker的命令,我并不会。。。在之后的一些测验考试中我发现,docker给我报了很多莫名其妙的错误,由于年代长远已经记不得是怎么回事了,此刻想来,大约是我使用的命令总是套用paddlepaddle教程上上给出的(此刻官网已经有关于docker的教程贴出了,建议一看):
docker run --rm -v ~/workspace:/workspace paddlepaddle/paddle:latest python /workspace/housing.py
在没有弄懂命令里的各参数含义的情况下,如此生搬硬套当然是会出很多错误的。而且在按照网上教程进行对docker的配置时我也是一头雾水,并不知道本身在干什么 QwQ所以随后呈现错误也是意料之中的。
于是乎,正当被困在这一起步的我筹备安于现状时,老谢拿着一篇微信里的paddlepaddle教程走到我身边。映入眼帘的是这么一段话:
惊了,本来这么几天我都是在纠结毫无用处的东西吗?
赶紧回头测验考试了一下pip install paddlepaddle,果然没什么问题,这才回想起当初按照官方网站上的快速入门早就已经使用过这种方式安装了paddlepaddle了,本身居然丝毫没有意识到。。。#瞬间有种想枪毙本身的感动
在不久以后的一天我打开paddlepaddle官网的时候发现,这句“paddlepaddle目前独一官方撑持的运行方式是docker容器”莫名已经不见了,大约是paddlepaddle官方本身也发现了这个奇怪的表达所带来的麻烦。不外话说回来,paddlepaddle的中文教程虽然读起来并不算生涩,但是字里行间总感觉带着一股翻译腔。所以我严重怀疑paddlepaddle最早是只有英文文档的,中文文档是在英文的基础上加以改良而成的。证据如下:
在English下的官方注释原话是这样的
丢到翻译里貌似没什么问题,但是关键不才图
把only的意思替换成最好的最适当的,之前的表述明显就符合事实多了。然而在中文中,“独一”的意思大约的确是只有独一的意思吧?
#趁便提一句,之前在隔壁win10的电脑上试图安装docker来运行paddlepaddle,成果
#docker居然跟网易木木模拟器发生了冲突,导致电脑总是自动关机,。请问有哪位大神能跟#我这个小白解释一下到底是怎么回事咩:3?
'''
上文并不是在说docker容器不好用,只是对于我这个什么也不懂的个体来说,使用docker来入门paddlepaddle实在是太不友好了。。。不仅没有多少简化paddlepaddle的运行,而且还需要另学一个docker的使用方式。。。所以吐槽一下,以明死生之大,小白之弱无药之可救也。(2018年2月22日补:paddlepaddle官网已经贴出了docker的详细介绍,使用教程等,大师可以去看看哦)
'''
---------------------------分割线----------------------------
在经历了这一痛苦的入门(xià zài)过程以后,我终于算是对paddlepaddle有了一个初步的认识。为了有一个更清爽的开始,我果断选择了换台电脑(嗯)。在另一台我常用的win7上,我面临着三个选择:docker,虚拟机,双系统。
当然是虚拟机啦。第一,我只是初步学习paddlepaddle,应该(?)不需要太高的配置;第二,虚拟机对比双系统更容易切换,适合在陷入瓶颈的时候#切到win7放松一下#。第三,我对docker有心理暗影。至于刷掉win7系统,想都不要想。。。
安装了visualbox,下载了Ukylin系统镜像,立刻开始了paddlepaddle的新的安装
sudo apt-get install python3-pip
pip install paddlepaddle
安装完成,木有问题。、
此次的paddlepaddle学习要稳一点了,想要真正学会使用paddlepaddle,必需要当真学习教程,从基础开始学习。在百度到的一系列的教程中,我独一能看懂的就是“PaddlePaddle系列之三行代码从入门到精通” 对于我这种完全的初学者来说,我感觉最重要的并不是那一大堆收敛公式啦,卷积层模型啦。因为我所能搜到的(paddlepaddle)教程里面,大多只讲述了某网络构造的道理,长处,布局,但对代码什么的却只字不提,弄得我十分尴尬。又或者清一色都是码出来的代码,但是并不知道到底有什么用......
偷瞄了一眼边上的python大神,正在当真地看着tensorflow的详细教程。一个视频里是生动易懂的道理讲述,另一个页面里是对应的代码模块,对比一下,顿时感觉本身好寒酸。不外想来也是,paddlepaddle开源才没多久,比起tensorflow来算是斗劲年轻(虽然就差了一年),而且在使用者数量上也有差距。大都使用paddlepaddle的人都是用过tensorflow等深度学习框架的大佬,因此写出来的教程就十分简洁(过于简洁了吧喂),对我这样的小白就相当之不友好了。
'''
所以但愿百度paddlepaddle能够推出更加适合新手入门的教程。这在我学习的过程中体会十分深刻,搜索paddlepaddle,呈现的还都是两年前开源的动静,直赴任不多12月中旬了我才发现有“生鲜桃子分拣机”之类的新闻呈此刻官网上。而关于教程,视频类教程只有百度学院的教程,丰硕程度跟此外框架底子不能比,差点让我发生了“这个框架是不是烂了”的想法。而且并搜不到paddlepaddle论坛,只有在GitHub里面有讨论区。(不外在GitHub里面提问倒是挺便利的嗯)感觉paddlepaddle作为一款优秀的深度学习框架不怎么受人重视。如果paddlepaddle能够降低入门门槛,引导类似我这样有兴趣(wú liáo)的高中生前来入坑的话,那么将来国内的初学者必定会首先选择paddlepaddle。而随着我国信息技术在国际上的地位越来越高,国人承认的深度学习框架也必然会成为世界承认的深度学习框架。这岂不妙哉?
'''
'''
2018年2月20日:2月8号的时候 @木小兆 学姐给我发了条私信,告诉我百度paddlepaddle的官网更新了多量的教程。赶紧打开官网一看,果然,对比几个月前我方才接触paddlepaddle的时候多出了不少的教程。更关键的是,虽然许多教程过去已经有了,但是在过去百度并没有将它们分类,只有在百度视频里搜索paddlepaddle的时候会看到百度学堂里有零零散散的这么些教程。此刻的paddle官网不仅将它们分门归类,还标注了教程的难度梯度。从python基础开始,到paddle入门乃至具体实践案例,都有了较为完善的教程视频。说明我们百度的大大们还长短常当真敬业的,感觉这四个月paddle官网的改变比前两年的还要多(猜测,并不知道两年以前官网长肾么样纸。)而且这么大的改动居然是在年底诶,百度的大大们真的长短常辛苦敬业呢!(真心话)
'''
扯远了。
回到学习上来。教程看不懂怎么破?还有什么斗劲好的入门方式捏?
我想起了当年入坑UE4的时候,也遇到了看不懂教程尴尬场所排场#只不外当时是对着英语看不懂,如今是对着中文看不懂# 而这一次我用了和上次同样的解决方式——拆模板。
模板是个好东西,不仅可以拿来试用,还可以拿来拆。拆解一个实例,逐行逐句地去分析猜测代码的感化与含义,然后再回头来理解其道理法则。这种方式的确很难用,尤其是我还并不会python。不外幸而边上有python大神 @robot赑nin 可以辅佐,为我扫清了不少的障碍。不外既然像我这样彻底的小白这么少,这种方式也不必然值得借鉴了。
但是我都摸索了这么久,还是讲一下好了(风趣)
<hr/>如何正确地不看教程来学习paddlepaddle(此章节已过时)
右击创建新建文件夹,重定名为“workspace”,然后优雅地按照官方文档下的“房价预测”(现已挪至官网“进阶实战”下的技术文档)创建了一个housing.py,复制粘贴代码内容就可以了。接着右键在终端中打开(之前并不知道可以这么做,所以每一次打开终端都要输入一大堆路径orz),直接运行命令:然后看到终端界面闪出一大串看不懂的参差不齐的字符,然后一排排整齐的数字飞过,然后运行完毕了。
官方的介绍是说“瞧,他应该打印出预测住房数据的清单”虽然看得我一头雾水但是勉强接受了吧。独一一个斗劲诡异的处地址于那句”请确保fit_a_line.tar是在正确的路径上”(此刻教程已经删去),联系上下文并没有发现什么fit_a_line.tar。不外在上一次的docker安装的时候下载的房价模型倒是的确叫这个名字。不知道是不是弄错了。
然后我们来拆解代码了。- import paddle.v2 as paddle
- # Initialize PaddlePaddle.
- paddle.init(use_gpu=False, trainer_count=1)
- #可以看到一个use_gpu赋值为false,说明不适用gpu计算,同时也说明这里的代码不要乱动为好
- # Configure the neural network.
- x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13))
- y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear())
- #看到了定义变量x与y_predict,凭借我三脚猫的英语程度看出这里的y是用来预测的
- #其它的也不用管了,后面那一堆到此刻都还没看懂,参数什么的~
- with open('fit_a_line.tar', 'r') as f:
- parameters = paddle.parameters.Parameters.from_tar(f)
- #这串代码厉害了,可以看到关键词with open虽然在之前并没有学python,也不懂with open
- #的具体含义,但是结合fit_a_line.tar是一个文件的状况,可以感到感染到这里是打开某个文件的代码
- #不管是数据库还是训练好的模型,这里都至关重要
- # Infer using provided test data.这句英文注释就已经能说明一切了,显然这个test data是训练用的数据,
- #那么上文的with open 打开的该当就是训练过的现成的模型了
- probs = paddle.infer(
- output_layer=y_predict, parameters=parameters,
- input=[item for item in paddle.dataset.uci_housing.test()()])
- for i in xrange(len(probs)):
- print 'Predicted price: ${:,.2f}'.format(probs[i][0] * 1000)
- #看到这句print,的确高兴,因为之前终端里输出的一大堆看不懂的东西想必也就是这里输出的了
复制代码 在这段最简单的代码里面可以挖掘出的信息大致就是这些了。
所以我得到了:
- parameters这个变量储存的是paddlepaddle训练过的模型。从fit_a_line.tar这个文件格式可以猜到,paddlepaddle训练发生的模型都是以.tar为后缀的压缩文件格式。
- 我们的paddlepaddle需要一个input的输入,颠末with open打开模型的措置后,发生一个需要print的输出
有的大神或许会问:这很重要吗?这不是早就该当知道的东西吗?
然而,这个结论对我这种小白来说相当重要。在真正接触深度学习之前,我所听到的什么人工智能啊,阿拉法狗啦,一个比一个高深莫测。在一个站在入门门口的小白眼中,paddlepaddle这类深度学习框架的确不要太科幻。我们眼中的人工智能是那种会措辞会聊天会措置各种信息然后解决问题的东西。
而在真正开始接触paddlepaddle以后,才发现本身底子不知道这是个什么玩意。在安装完paddlepaddle之后我甚至不知道该做些什么,只能茫然地复制粘贴官网上的看不懂的代码然后看它打印出一大堆看不懂的数据(喵喵喵?)。至于模型是什么,数据库是什么,该怎么发生模型、训练模型、保留模型、使用模型,该怎么使用数据、换成本身的数据、数据的格式是什么......统统不知道,也没有教程有简单易懂的解释。(真叫人头疼) |
|