import numpy
import tensorflow as tf
#自己創建的數據
x_data = numpy.random.rand(100).astype(numpy.float32)#創建具有100個元素的數組
y_data = x_data*0.1+0.3#具有自動遍歷的功能
##設置神經網絡的結構###
Weights = tf.Variable(tf.random_uniform([1],-1,1))
basiss = tf.Variable(tf.zeros([1]))
#模擬我們之前寫的數學方程式
y = Weights*x_data+basiss
#比較誤差
loss = tf.reduce_mean(tf.square(y-y_data))
#知道誤差,建立優化器,減小誤差
optimzier = tf.train.GradientDescentOptimizer(0.5)#其中的數據表示學習效率,一般是小於1的數據
#參數更新
trian = optimzier.minimize(loss)
#以上都是建立神經網絡的結構
#下面是訓練
#初始化,初始化Variable,才能使用變量
init = tf.global_variables_initializer()
#創建對話可以理解為c++的指針
sess = tf.Session()
#指向結構
sess.run(init)
#訓練
for step in range(201):
#指向誤差更新,使得它不斷的訓練
sess.run(trian)
if step%20==0:
print(step,sess.run(Weights),sess.run(basiss))
#初步跑一個簡單的神經網絡代碼:思路:1、創建一個數學方程 2、設置神經網絡的結構(1)、設置
兩個變量的值,然后仿照第一步數學方程,求出來的結果和第一步求出來的結果比較(2)、比較誤差
優化誤差,刷新誤差 3、開始訓練:(1)、初始化結構里面的vairable (2)、創建對話(指針)
然后指向結構(執行)、然后用for語句進行訓練
運行結果:
0 [0.03197816] [0.476912]
20 [0.06810132] [0.31761634]
40 [0.09198748] [0.304425]
60 [0.09798737] [0.30111152]
80 [0.09949446] [0.3002792]
100 [0.09987302] [0.30007014]
120 [0.09996811] [0.30001763]
140 [0.099992] [0.30000442]
160 [0.09999802] [0.3000011]
180 [0.0999995] [0.30000028]
200 [0.09999988] [0.30000007]