「本文是本身學習中的一些感悟,主要談下如何入門深度學習。」html
原文:https://mp.weixin.qq.com/s/cCL2djISt3HMLSM9NMmTQQpython
爲啥你也能夠自學AI?由於我均可以,因此你必定也行!ios
我不是AI相關專業出身,沒有通過碩士、博士級洗禮,大學畢業不少年(數學等早還給老師了),甚至不是開發,也不是很懂算法(讓我手寫個快排估計都寫不出來)……算法
對,我在學機器學習、深度學習技能,並且還準備從事相關的職業編程
因此你應該也沒問題,相信本身網絡
若是你碰巧也對AI有興趣,想探一探它的神奇,歡迎同路!框架
終於開始動手在這裏記下本身的學習過程,算是複習鞏固,也但願對想入門的你有所幫助dom
好了,一塊兒來玩吧機器學習
關於學習,如下是本身的理解,但願對你有啓發 ^_^編程語言
學習的過程:
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