TensorFlow深度學習入門筆記(一)寫在前面——如何入門深度學習

 

本文是本身學習中的一些感悟,主要談下如何入門深度學習。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

相關文章
相關標籤/搜索