https://www.youtube.com/watch?v=YoiUlN_77LU
深度學習解決了這個問題
因此類神經又再度興起了!!!
這是小編覺得講得很好的一個網站
http://neuralnetworksanddeeplearning.com/chap4.html
他用可視化證明了 一個類神經網路 只要給他足夠的神經元
就可以模擬任何非線性函數
讀者有時間也可以看看其他章節
講的也很棒
下面是簡單的小例子 模擬類神經網路學習的情形~
總共更新201次weights
並且每訓練20次印出一次
小編把每一行代碼都清清楚楚的加上註解了
希望各位可以經由這小小的範例
慢慢進入這 Tensorflow 神聖之殿中
如果有任何不懂得可以在下面留言問小編喔~~
祝大家學習愉快~~
程式碼:
| #-*- coding: utf-8 -*- |
| #引用必要函數 |
| import tensorflow as tf |
| import numpy as np |
| |
| # creat data |
| #創造 亂數100個亂數 值介於0~1之間 |
| x_data = np.random.rand(100).astype(np.float32) |
| |
| #訂出要學習的函數 這裡要學的是 weight:0.1 biases:0.3 |
| y_data = x_data*0.1+0.3 |
| |
| ###creat tensorflow structure start### |
| #定立 weights 的 範圍 和初始化 |
| Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0)) |
| biases = tf.Variable(tf.zeros([1])) |
| |
| #定立 給 tensorflow 學習的函數 |
| y = Weights*x_data + biases |
| |
| #建立 loss 規則 |
| loss = tf.reduce_mean(tf.square(y-y_data)) |
| |
| #選擇學習機制 |
| optimizer = tf.train.GradientDescentOptimizer(0.5) #learning rate |
| |
| #像tensorflow 說 訓練規則就是把 loss 減到最小 最好是0 |
| train = optimizer.minimize(loss) |
| |
| #初始化所有變數 |
| init = tf.initialize_all_variables() |
| |
| ###creat tensorflow structure end### |
| #上面都是建立規則 |
| #*****************************************************開始訓練 |
| #建立sess |
| sess = tf.Session() |
| |
| #記得初始化 |
| sess.run(init) #Very important |
| |
| """ |
| 跑 for 迴圈 更新wight201次 |
| 然後每訓練20次 印出一次weight |
| """ |
| for step in range(201): |
| sess.run(train) |
| if step % 20 ==0: |
| print(step,sess.run(Weights),sess.run(biases)) |
程式輸出:
(0, array([ 0.30737674], dtype=float32), array([ 0.25841016], dtype=float32))
(20, array([ 0.13939281], dtype=float32), array([ 0.27776307], dtype=float32))
(40, array([ 0.10886393], dtype=float32), array([ 0.29499638], dtype=float32))
(60, array([ 0.10199451], dtype=float32), array([ 0.29887414], dtype=float32))
(80, array([ 0.10044879], dtype=float32), array([ 0.29974666], dtype=float32))
(100, array([ 0.10010101], dtype=float32), array([ 0.299943], dtype=float32))
(120, array([ 0.10002275], dtype=float32), array([ 0.29998717], dtype=float32))
(140, array([ 0.10000515], dtype=float32), array([ 0.29999712], dtype=float32))
(160, array([ 0.10000117], dtype=float32), array([ 0.29999936], dtype=float32))
(180, array([ 0.10000026], dtype=float32), array([ 0.29999986], dtype=float32))
(200, array([ 0.10000011], dtype=float32), array([ 0.29999995], dtype=float32))