TensorFlow深度学习入门笔记(一)写在前面——如何入门深度学习
“本文是自己学习中的一些感悟,主要谈下如何入门深度学习。”
原文:https://mp.weixin.qq.com/s/cCL2djISt3HMLSM9NMmTQQ
为啥你也可以自学AI?因为我都可以,所以你一定也行!
我不是AI相关专业出身,没有经过硕士、博士级洗礼,大学毕业很多年(数学等早还给老师了),甚至不是开发,也不是很懂算法(让我手写个快排估计都写不出来)……
对,我在学机器学习、深度学习技能,而且还准备从事相关的职业
所以你应该也没问题,相信自己
如果你碰巧也对AI有兴趣,想探一探它的神奇,欢迎同路!
终于开始动手在这里记下自己的学习过程,算是复习巩固,也希望对想入门的你有所帮助
好了,一起来玩吧
关于学习,以下是自己的理解,希望对你有启发 ^_^
学习的过程:
1.感性认识
2.了解概况
3.先跑起来
4.完成任务
5.技术细节
6.原理追溯
感性了解
在接触一项技能、知识时,最早大都是从感性认识开始的,先看到它的样,碰到它的感觉。。。或者在外面观察,或者已参与其中。。。突然有了兴趣,产生了想再了解一下的感觉。这时,好戏开始了……
那日常你都看到了哪些深度学习的”东西呢”?这就简直太多了,毕竟现在AI很火~,比如早些的下棋的”AlphaGo”,已经普及的人脸识别,甚至还有猪脸识别~,最近阿里的”明星猜拳”的,黑5刷脸啦什么的……很多很多,有的是看到的,很多是参与其中的。如果你有关注AI的一些新闻,类似这些事或多或少都知道吧。
先看图(图片来自公众号:阿里技术)
隔空猜拳
黑5刷脸
人脸融合
手机端实时切割
就先上这几个
看到这些报道是,有啥感想呢?
会不会像我我,第一句就是:哇~这么牛逼!咋弄的?
是吧,估计你也像我一样好奇的在问,这都怎么搞出来的呢?
我要是这么牛逼多拉风啊~
嗯~我要回家好好学习了
概况了解
深度学习是属于很尖端的技术了,我一普通的娃怎么玩得转呢?我百度下深度学习用到的知识,差点吓尿了:高等数学(微积分之类)、线性代数、概率论、凸优化、机器学习(单这个就吓屎人)、编程语言(C++、python)、Linux、CUDA编程……
我只是看着好玩,也想玩下而已,别这样吓人吧
不想放弃,先了解下大概情况再说:
总的来说,深度学习已发展了几十年了,只是近几年火了起来,导火索有”AlphaGo”下棋,还是飞飞老师推动的竞赛。深度学习是机器学习的一个分支,可以说是由人工神经网络发展起来的,人工神经网络受启发与人脑神经网络(下文提神经网络即只人工神经网络),就是那种给点刺激就有反应(比如膝跳反射什么的,有神经元……),原来只有浅层的神经网络,如感知机,后来加入隐藏层神经元,后来又加入了很多隐藏层……就变成深度神经网络了,用这种深度网络构建模型,去预测、处理任务过程,就叫深度学习了。以上是自己理解,不够科班了些,这些不重要,了解即可~
深度学习目前流行的框架主要有:TensorFlow,Theano,Keras,Caffe,PyTorch,MXNet……
本教将使用比较热门的TensorFlow,
TensorFlow2.0预览版已经公布了,有机会也会尝尝鲜
还有个重要概况,深度学习很火,估计会持续几年,国家政策都规划了10年呢
其实这才是我学习的动力
附一张深度学习发展图
(图片来自网络https://www.jianshu.com/p/2a5936c2a6dd)
知道个大概了,然后呢,从哪里入手?微积分吗?
于是四处取经,找大佬指点中……
终于,有个靠谱的高人指点:先学最少的知识跑起来就行,暂时不用管它为什么能跑……
高人就是高人,说的太对了(主要不敢去研究理论)
想想看,如果从原理入手(微积分、矩阵、支持向量积……),估计三天坚持不到啊
所以,先放弃研究这些枯燥的原理,让程序跑起来再说
所以,先放弃研究这些枯燥的原理,让程序跑起来再说
所以,先放弃研究这些枯燥的原理,让程序跑起来再说
重要的事要说3遍
对就先把深度学习跑起来,莫急,下篇就跑……
先跑起来
要想跑起来,需要先选个深度学习框架,我选的是TensorFlow,算是比较流行的了,有Google撑腰,生态发展良好~
然后要做的是环境配置、包安装等,这些写在其他教程里了,点击这里和这里^_^
不多解释原理,先依葫芦画瓢写点代码,运行起来再说
代码如下,参考自莫烦的教程
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt # 添加神经网络层 def add_layer(inputs,in_size,out_size,activation_function=None): Weights = tf.Variable(tf.random_normal([in_size,out_size])) biases = tf.Variable(tf.zeros([1,out_size]) + 0.1) Wx_plus_b = tf.matmul(inputs,Weights) + biases if activation_function is None: outputs = Wx_plus_b else: outputs = activation_function(Wx_plus_b) return outputs # 构建 x_data = np.linspace(-1,1,300)[:,np.newaxis] noise = np.random.normal(0,0.05,x_data.shape) y_data = np.square(x_data) - 0.5 + noise xs = tf.placeholder(tf.float32,[None,1]) ys =tf.placeholder(tf.float32,[None,1]) # 建立输入层 隐藏层 输出层 l1 = add_layer(xs,1,10,activation_function=tf.nn.relu) prediction = add_layer(l1,10,1,activation_function=None) loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1])) train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) # 预测 fig = plt.figure() ax = fig.add_subplot(1,1,1) ax.scatter(x_data, y_data) plt.ion() plt.show() sess = tf.Session() sess.run(init) for i in range(1000): # training sess.run(train_step, feed_dict={xs: x_data, ys: y_data}) if i % 20 == 0: # to visualize the result and improvement try: ax.lines.remove(lines[0]) except Exception: pass prediction_value = sess.run(prediction, feed_dict={xs: x_data}) # plot the prediction lines = ax.plot(x_data, prediction_value, 'r-', lw=5) plt.pause(0.01) print('over.') sess.close()
看晕了么,不妨copy到你那运行下看看什么神奇的效果吧
以上代码其实还不算真正的深度学习,主要是熟悉TensorFlow
不要着急,学习本来就是从浅入深、从易到难的过程
我也在这么的学习中……
后面会一点一点学习,一点点积累,聚沙成塔,指日可待
困难再多也不怕,时间会帮忙解决它,一起加油吧~
把活完成
想点需求,比如识别个验证吗,搞个人脸识别,虽然别都做好了,但是我看还是可以做自己的。当然,你有好的想法,一定要去实践下,实践出真知,实践出不一样的自己。试试看吧
记住,学习就是为了干活,活要好,才活的好
技术细节
这个后面教程中,尽量很细的讲,细到丝……
原理追溯
学到后面,可能感慨,欠下的技术债总是要还的,不过这时不在是枯燥的,而是主动去追根溯源,效果和效率都可想而知~
原理部分会整理出来,都放上来,就当字典、参考书,需要时再拿来研读
小结:
关注公众号“从机器学习到深度学习那些事”获取更多最新资料
本文从学习的各个过程角度讨论了如何入门深度学习,纯属个人理解总结,希望对你有所帮助。有观点欢迎交流沟通。
感性认识---好奇引起兴趣
了解概况----感兴趣、有潜力、适合自己?
先跑起来----先掌握最顶层的,看着它跑起来(熟悉框架规则等)
完成任务----用一下,完成个小需求,去发现它的好
技术细节----熟悉API还不够,看些源码,为了解决自己写的bug
原理追溯-----一点一点捡起来,各个击破,再串起来,串成自己的样子。调优,让你的代码飞起来,必须回溯原理,到推导公式级别,理解它的灵魂
后续将从零开始整理TensorFlow教程,争取每天都能推送,期间有问题欢迎交流沟通!
参考资料:
莫烦教程
TensorFlow官网
https://www.jianshu.com/p/2a5936c2a6dd
原文地址:https://mp.weixin.qq.com/s/cCL2djISt3HMLSM9NMmTQQ