辛辛苦苦大学毕业,走上外贸岗位。 外贸惨呐,白天联系车间生产,晚上回家和国外客户沟通。TMD老板还要求每天在alibaba发30个listing。你说好好的一个销售,有业绩不就行了,居然还有这种KPI,真是是可忍孰不可忍。

不过这也难不倒我,拿出当年大航海时代,从伊比利亚半岛开船去北非海岸挖矿的精神,重新拾起按键精灵开始发产品。(看,谁说网游害人,大航海时代ol不就教会我用脚本采矿么。。。呃,呸,是提高生产效率)

一入豪门深似海,动起了偷懒的歪念头,慢慢的python、selenium也就学起来了。虽然产品发地快了,alibaba会提示输入验证码。但就算慢一点发,一晚上发上千个listing还是很轻松的,一天30个的KPI?哼,米粒之珠,也敢与日月争辉。

虽然发listing方便了,但验证码这个问题不是没解决过么,上星期手贱百度了下,结果发现训练围棋AlphaGo的神经网络居然可以识别验证码,网上还这么多的教程。对于我这个专业文科30年的大叔来说,这么高端酷炫屌朝天的东西,这么多Tensorflow教程居然触手可得,必须得果断入坑。

嗯,真实感受就是入坑,因为我找了很多教学视频,感受都是这样:

大神:好了,我们开始从头开始讲解,首先,1+1=2,2+2=4,……

我:很简单嘛,喝口水先。

大神:所以,@#¥%&*!#¥%&*!##¥#……

我:等等,我忽略了什么?赶紧重听。嗯,果真每个音都听到了,只是完全不知道这个音对应哪个词而已。

于是,就有了写这个文章的动力,因为大概一个星期的时间,6天都在找能看的懂的资料,剩下1天才用来初步了解神经网络是什么一回事。所以我把这一个星期找到的,对于我这个初级者有用的资料整理出来,帮助和我一样的老年文科生零基础入门。

既然是零基础,有多零呢?这么说吧,一个小时前,我还在看学而思的高中数学视频,正看到点到直线的距离公式。

嗯,高中,嗯,捂脸。。

所以,真的很零。

一、Python入门

既然是编程,那编程语言一定要会一门。不要挑了,人生苦短,你要学Python。这里推荐传智播客的视频教程

我是在youtube上看的,传智播客的Python14天基础班。如果不能科学上网,估计其他的网站也有。

网上的教程很多,但要么是大神讲天书,跳过N多我们不理解的步骤,要么是玩票兴致,几分钟浅进浅出、科普而已。传智播客的N个教程,感觉都很好,是真的把人当傻子般系统的教学。从 cd dir查看目录等系统操作教起,而且整个基础班系列只要14天就可以学完。每天不过2个多小时。

二、如何理解神经网络

不过既然从百度中搜到这篇文章,你肯定已经会python等语言了。那么首先推荐看一下周莫烦的教学视频:Tensorflow 搭建自己的神经网络 (莫烦 Python 教程)

从第一集“什么是神经网络”看到第6集“如何安装tensorflow”就好了,一集5分钟,半小时看完。后面的视频是给有一定基础的人看的,直接看就会像我一样,云里雾里,对自己的智商产生深刻的怀疑。

这也是很多大神视频的通常情况,他们通常会省略那些“傻子”都会的问题,但对于我这种文科生而言,傻子呓语亦犹如天书。

连续看了4、5个人的视频,没一个我能看懂。每一个都是上一集在讲如何安装tensorflow,下一集就手把手的教你写2层神经网络。我还不知道什么是神经网络,什么是神经元啊!怎么就讲起如何构建2层神经网络了。而且为啥是2层、不是3层?不是1层?怎么一言不合写代码了。。。而且是一边写代码,一边随口解释,写完代码教程就结束了??真真是感受到了理科世界的恶意。。。

然后本来都要放弃了,幸好发现了这片文章:

神经网络入门----阮一峰的网络日志

看完这篇,我才知道了,神经网络到底是怎么回事,才知道大神们在视频中到底是做什么。。。

这篇文章的主要内容来自:

Neural Networks and Deep Learning

在辛辛苦苦的看了半天英文版之后,突然想起来,这是1年前的教材,肯定有人已经翻译了啊,于是又在CSDN上找到了中文翻译版:

《神经网络与深度学习》

20个积分就可以下载,记住,不要下载那个便宜的、冒充中文版的PDF,现在的人真是没底线啊,可怜我一共才几十个积分。。。

三、思路与实现

其实看了上面的神经网络入门,就应该有了基本的神经网络思路了。我们再拓展一下,假设周末出门,我们有3个种选择,

y1去正大广场看LOL比赛,

y2去植物园踏青,

y3楼下花园散步。

影响我们判断的因素还是

x1天气情况,

x2交通情况,

x3是否有人相陪。

以及x1 x2 x3因素的权重W、负阈值b等。(如上图所示)

同样是下雨,对于我去看室内比赛 和 野外踏青的影响是不同的,所以权重W不同。每件事情在我心里的重量不同,所以阈值b不同。

即,3个y是对应着3组不同的(w1 w2 w3 b),即

y1 = w1,1 * x1 + w1,2 *x2 + w1,3 *x +b

y2 = w2,1 * x1 + w2,2 *x2 + w2,3 *x +b

y3 = w3,1 * x1 + w3,2 *x2 + w3,3 *x +b

假设:

在过去的一年中,有52个周末,我作出了52次选择。这52次选择就是y1 y2 和y3;这52个周日的天气情况、交通状况、朋友相约次数这3个x都记录在案。那么神经网络会根据y 和 x 通过反复计算,获得每个y对应的3个W 和1个b的值。

那么,下一个周末,给出天气、交通、朋友这3个x1 x2 x3 ,神经网络就可以用套上9个W 和3个b,计算出y1,y2,y3的值,最大的那个y就是我周末的最优选择。

同理,城市预测周末出行人数,也是这个道理。

sigmoid函数

好,在看神经网络入门中,会产生一个疑问,可以用简单的1 和 0来表示x吗?比如,有没有朋友相约,有就是1,没有就是0。但如果是天气,晴天、阴天、刮风、下雨,对于我周末出门选择是有不同的影响,不能用简单的1和0表示。入门中,介绍了sigmoid函数。可以用sigmoid函数,计算晴天阴天刮风下雨等情况,给出一个0-1的天气值作为那个x1。

softmax函数

但神经网络入门这篇中只举例一个情况,去不去参加动漫展览,即只有一个y。那只要Y大于0,就可以去看动漫展览了。

但实际情况更可能是上面我举的例子,周末有y1 y2 y3等多种选择。如果y1=30,y2=10,y3=2。我们当然是选y1。但如果y1=30,y2=28,y3=9,让我们做选择,在一年的52个周末里,我们真的是选择52次y1,而不去选择一次y2吗?

真实世界中,如果两件事差不多,y1=30  y2=28,我们恐怕会去踏青几次吧,而不是100%选lol。

那30,10,2,或者30 28 9这样的数值中如何选择最合理的最大值呢?这里就是softmax软最大值函数的舞台了。

关于softmax可以看一下极客学院的MINIST机器学习入门,然后再百科下,更详细。softmax可以根据每个值的大小,推算出概率,比如30 10 2中,30的概率是0.999999,无限接近于1了;而 30 28 9中,30的概率0.88,28的概率0.11,9无限接近0。

理解了神经元工作方式,和sigmoid、softmax等函数。就可以用tensorflow完成这个思路了。

四、大数据与矩阵

上面说过,一年中,我们有52个周末的记录,即52个 y1y2y3 和52个 x1x2x3。那我们怎么输入这么大的数据计算呢?

总不能手打这52*3个公式吧?如果是一个城市,几十万个出行数据需要计算,手打几十万个y=wx+b,还不要累死?

这就涉及到数据是怎么在电脑中储存的。

假设只有一个影响因素x,一个选择y:

即,y = w*x +b

一年52个周末,外出用1表示,家里蹲用0表示,那么y就是一个由0和1组成,共52个0和1的列表—— [0,0,……,1,1]

(试着想象一个excel表格,第一个格子写着出行记录,后面跟着52个格子,分别写着0,0,……0,1,1)

x天气情况是[0,0.3,……,0,0.9] (共计52个0-1之间的数值)

权重Weights是w,负阈值是 b 。

所以我们只要有一种运算方式,可以计算w* [0,0.3,……,0,0.9]   + b 的值(w*x+b),

并且电脑经过反复猜测w、b的值,

最终使得 w*[0,0.3,……,0,0.9]+b 约等于y的[0,0,……,1,1] 了,

那么就求出权重和负阈值了。

这种1个数和一组数、一组数和另一组数之间的加减乘除就是矩阵了。

还是解释的太烂,推荐走起。

首先是 阮一峰的网络日志 理解矩阵乘法,这个真的很不错,必看。

然后是 B站上学而思的60小时学完高中数学,推荐全部看完,但如果你和我一样,白天晚上都要挤时间,那就看41-45好了,不做习题的话1个小时就可以看完。

最后是 18张宇线性代数基础班+强化班,看第8P就可以了,半小时。

看完后,数学方面矩阵的内容就初步了解了。剩下的就是怎样在编程中怎么实现对应的操作。比如,两个数字相乘,在电脑中用*星号表示“乘”,两个矩阵相乘,用np.matmul(w,x)表示。

这里推荐周莫烦的 Numpy & Pandas (莫烦 Python 数据处理教程)

只看前半段Numpy就可以了。Numpy是关于python中矩阵操作的库。也很快,1个小时吧。

其实他还有个matlibplot画图教学,也挺有意思的,推荐顺便看下。

五、最后实践

好,那到这里,你应该已经基本可以独立完成神经网络的入门MINIST操作了。MINIST包含了6+1万个手写阿拉伯数字,来自美国人口普查局2组共计500人的手写记录。

手写文字识别、人脸识别之类的事情对于人类来说很简单,睁眼就会。但对于传统编程来说,这事难于登天。所幸机器学习解决了这个问题。

在所有机器学习的项目中,手写文字识别最经典,也对电脑配置的要求最低,我是一台air上网本,没有GPU,识别MINIST也就是7 8秒的事。所以MINIST被各个教材、视频用来入门教学。

所以,如果之前的视频你都多看几集,那么tensorflow的基本操作Variable, Placeholder,feed_dict等等你应该已经都会了。可以自己动手完成MINIST了。

如果没看,推荐youtube上炼数成金的tensorflow十课中的第二课,讲的是创建变量、占位符、fetch、feed等,不能上外网的话,周莫烦的视频中也讲了一部分。

不过他们都是只讲了自己代码中用到的部分,这里有个博客tensorflow基础命令,写的比较全。

学会基本操作,再结合上文的《神经网络与深度学习》和极客学院的MINIST机器学习入门,应该是真的、真的、真的零障碍入门了。

当然,你也可以像我一样,从廖雪峰的官方网站上下载一段pillow代码,自己生成0-9的随机数字,自己破解,更有意思。感觉自己就要破解验证码,当上CEO,迎娶白富美,走上人生巅峰了。想想还有点小激动呢!

专业文科30年零基础学神经网络TensorFlow相关推荐

  1. 30岁零基础学计算机考博,读完博士都30岁了,还有出路吗?说这话的人,真不知道博士多稀缺...

    随着我们普及教育的发展,人们的学历逐渐提高,接受文化的水平也越来越高,也就是有这样的说法,说现在本科的学历的人遍地都是,以至于导致大学生贬值,让大学生在这个社会上已经不是像原先那么吃香了. 而为了增加 ...

  2. 30多岁想转行,零基础学编程,来得及吗?

    "30多岁想转行,零基础学编程,来得及吗?能找到好工作吗?"这类问题,总是反复出现.尤其是最近我受<自学是门手艺>鼓舞,也借着参与 xue.cn 的契机想要把 pyth ...

  3. 30岁零基础没学历学Python怎么样?30岁学习Python晚吗?

    30岁零基础没学历学Python怎么样?30岁学习Python晚吗?任何时候开始都不晚.30岁开始学习Python听起来年纪有点大,大家认为编程上了年纪学习编程语言是一个劣势.想在三十岁的时候通过学习 ...

  4. 30岁零基础自学编程,先学哪种语言最好?

    说说我自己的经历.211大学,光学工程研究生毕业,和程序猿完全不搭边. 毕业后进了成都某国字头研究所,在行业里摸爬滚打了四年,2018年机缘巧合在家养病,开始了编程自学.选择编程的原因很简单:成本低, ...

  5. 零基础学java web开发_从零基础学Java成为一个专业的java web 开发者

    原标题:从零基础学Java成为一个专业的java web 开发者 "我怎么才能成为一个Java Web开发者?"对于这个问题,答案其实并不简单.成为一个Java Web开发人员包括 ...

  6. C语言基础专业书,零基础学C语言(第3版) (康莉/李宽 等著) 中文pdf完整版[29MB]

    零基础学C语言(第3版)站在零基础学习的角度讲授C语言,使初学者能尽快掌握C语言程序设计的精髓,避免走弯路.在讲解知识点时,笔者采用由浅人深.逐级递进的学习方式进行内容设置安排.<零基础学C语言 ...

  7. 送书|“零基础学机器学习”作者创作手记

    1. 走下神坛的机器学习 我们马上就要进入20世纪的第3个十年啦,而人工智能和机器学习,也已经火了差不多有六七年的时间了. 从Hinton团队在2012年的ImageNet大赛中用神经网络模型一举夺魁 ...

  8. 零基础学python全彩版实战答案-零基础学Python(全彩版)

    商品描述: 本店出售的图书均是正版二手书,有一些笔记划线,基本是六-九品新左右,基本都没有光盘.介意者请提前咨询客服.本店所有书籍,因买家导致退货退款的,发出运费参照不包邮运费模板由买家承担.如果签收 ...

  9. 零基础学python全彩版答案-零基础学Python(全彩版)

    商品描述: 本店出售的图书均是正版二手书,有一些笔记划线,基本是六-九品新左右,基本都没有光盘.介意者请提前咨询客服.本店所有书籍,因买家导致退货退款的,发出运费参照不包邮运费模板由买家承担.如果签收 ...

最新文章

  1. 2021 年技术 5 大趋势
  2. 一线程序员年薪90万,不敢结婚不敢要孩子,被父母怼:堂弟月薪4千二胎都有了,家里最挫的就是我!...
  3. [译] 响应式 Web 应用(一)
  4. flash写保护原理_一种基于flash写保护的防止flash被意外篡改的方法与流程
  5. sklearn特征的提取(下)
  6. Spark SQL 1.x之SQL Context使用
  7. java8 函数式编程_使用Javaslang进行Java 8中的函数式编程
  8. Java中的双重检查锁定
  9. flutter PageView上下滑动切换视图
  10. JVM 的三色标记算法详解
  11. icmp的报文,Destination Host Unreachable
  12. 读书随笔:The Book of Why——CHAPTER 3:From Evidence to Causes: Reverend Bayes Meets Mr. Holmes
  13. 够快云库轻松解决文件复制速度过慢
  14. BNUOJ 34978 汉诺塔 (概率dp)
  15. Atitit java方法引用(Method References) 与c#委托与脚本语言js的函数指针
  16. 多种Map简单使用和测试
  17. 人人网市值缩水近80%,究竟发生了什么?
  18. 80后发财靠康波:周金涛生前20篇雄文精华,一文尽览
  19. 漫威MARVEL漫画官方能力参考
  20. Apache安装与基本配置

热门文章

  1. arduino nano 蓝牙_掌控板IO接口编程入门 | 用Arduino玩转掌控板(ESP32)系列
  2. RBP的参数配置文件reportConfig.xml介绍
  3. php filter_sanitize_number_int,php – 我正确使用FILTER_VALIDATE_INT FILTER_SANITIZE_NUMBER_INT吗?...
  4. 【数字信号处理】 Unfolding(展开技术)
  5. 腾讯机顶盒 android,2021年网络机顶盒排行榜最强!泰捷、小米、腾讯极光深度评测...
  6. 《计算机系统:核心概念及软硬件实现(原书第4版)》——1.2 硬件
  7. L1正则化和L2正则化的区别
  8. 将Html网页或者是Aue项目打包成App
  9. “微课”让高中信息技术课堂“翻转”出高效率
  10. 设置java栈(stack)和堆(heap)大小