這是今天我們要做的結(jié)果夫啊,下面按步驟訓(xùn)練模型的結(jié)果也就是我們?cè)O(shè)計(jì)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)如何找到一條直線(線性方法)的學(xué)習(xí)過程媒抠,下面是每隔 20 次輸出一下線性方法參數(shù)(Weight 和 biases)
0 [-0.3485145] [0.7979202]
20 [-0.06059515] [0.39019653]
40 [0.05340868] [0.32616752]
60 [0.08648308] [0.30759165]
80 [0.09607853] [0.30220246]
100 [0.09886231] [0.30063897]
120 [0.09966995] [0.30018538]
140 [0.09990425] [0.3000538]
160 [0.09997222] [0.30001563]
180 [0.09999195] [0.30000454]
200 [0.09999767] [0.30000132]
推測(cè)直線整個(gè)過程分階段抽取神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的成果浇冰,也就是讓神經(jīng)網(wǎng)絡(luò)去找到一條直線(y = 0.1x + 0.3)從輸出的 200 行的值 [0.09999767] [0.30000132] 殊霞,可以看出結(jié)果就已經(jīng)非常接近我們想要得到的畸悬。
引入依賴
其中 numpy 是很好數(shù)學(xué)的 python 模塊我會(huì)同步介紹 numpy 的使用方法
from __future__ import print_function
import tensorflow as tf
import numpy as np
創(chuàng)建模擬數(shù)據(jù)
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1 + 0.3
首先生成隨機(jī)數(shù)列歧蕉,類型給 float32 這是 TensorFlow 喜歡這種類型灾部,大部分?jǐn)?shù)據(jù)類型都是 float32.
然后就是定義我們想要直線方程,從而模擬出用于神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的數(shù)據(jù)
定義結(jié)構(gòu)(重點(diǎn))
我們知道 TensorFlow 是需要我們定義神經(jīng)網(wǎng)絡(luò)的結(jié)果來讓其學(xué)習(xí)惯退,所以結(jié)算結(jié)果是和定義結(jié)構(gòu)好壞息息相關(guān)的赌髓。我們要推測(cè)就是 y = 0.1x + 0.3 中的 0.1(Weight) 和 0.1(biases)。
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))
biases = tf.Variable(tf.zeros([1]))
y = Weights*x_data + biases
loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
- Weights 定義 weight 取值的矩陣催跪,因?yàn)橹挥幸粋€(gè) weight 所以一維矩陣锁蠕,用 Variable 定義變量,給出取值范圍-1.0 - 1.0
- biases 的初始值給 0
然后 TensorFlow 通過給定值一步一步提升初始值來進(jìn)行學(xué)習(xí)懊蒸。
然后定義 y 為 Weights*x_data + biases 為我們要來計(jì)算 Weight 和 biases
通過 loss 來計(jì)算我們預(yù)測(cè)和結(jié)果的差異荣倾,開始這個(gè)值可能會(huì)很大,隨后通過優(yōu)化器 optimizer 來進(jìn)行優(yōu)化來減少 loss骑丸,TensorFlow 提供很多種優(yōu)化器這里選擇簡(jiǎn)單 GradientDescentOptimizer 逃呼,0.5 為學(xué)習(xí)效率,通常是小于 1 的數(shù)值者娱。
初始化結(jié)構(gòu)進(jìn)行計(jì)算
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
from __future__ import print_function
import tensorflow as tf
import numpy as np
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1 + 0.3
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))
biases = tf.Variable(tf.zeros([1]))
y = Weights*x_data + biases
loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)