完整**github位址
目錄
建立資料
搭建模型
計算誤差
傳播誤差
訓練 完整**
tensorflow 是非常重視結構的, 我們得建立好了神經網路的結構, 才能將數字放進去, 執行這個結構.
這個例子簡單的闡述了 tensorflow 當中如何用**來執行我們搭建的結構。
首先, 我們這次需要載入 tensorflow 和 numpy 兩個模組, 並且使用 numpy 來建立我們的資料.
import tensorflow as tf
import numpy as np
# create data
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1 + 0.3
接著, 我們用tf.variable
來建立描述y
的引數. 我們可以把y_data = x_data*0.1 + 0.3
想象成y=weights * x + biases
, 然後神經網路也就是學著把 weights 變成 0.1, biases 變成 0.3.
weights = tf.variable(tf.random_uniform([1], -1.0, 1.0))
biases = tf.variable(tf.zeros([1]))
y = weights*x_data + biases
tf.variable():建立,初始化,儲存和載入
variable()建構函式需要變數的初始值,它可以是任何型別和形狀的tensor(張量)。 初始值定義變數的型別和形狀。 施工後,變數的型別和形狀是固定的。 該值可以使用其中一種賦值方式進行更改。
接著就是計算y
和y_data
的誤差(差平方):
loss = tf.reduce_mean(tf.square(y-y_data))
反向傳遞誤差的工作就教給optimizer
了, 我們使用的誤差傳遞方法是梯度下降法:gradient descent
讓後我們使用optimizer
來進行引數的更新.
optimizer = tf.train.gradientdescentoptimizer(0.5)
train = optimizer.minimize(loss)
tf.train.gradientdescentoptimizer(learning_rate):基於一定的學習率learning_rate,通過梯度下降法:gradient descent
為最小化損失函式loss進行優化操作。
到目前為止, 我們只是建立了神經網路的結構, 還沒有使用這個結構. 在使用這個結構之前, 我們必須先初始化所有之前定義的variable
, 所以這一步是很重要的!
# init = tf.initialize_all_variables() # tf 馬上就要廢棄這種寫法,在 2023年3月2號以後廢棄
init = tf.global_variables_initializer() # 替換成這樣就好
使用tf.global_variables_initializer()新增節點用於初始化所有的變數。在你構建完整個模型並在會話中載入模型後,執行這個節點。
接著,我們再建立會話session
. 我們會在下一節中詳細講解 session. 我們用session
來執行init
初始化步驟. 並且, 用session
來run
每一次 training 的資料. 逐步提公升神經網路的**準確性.每執行20次梯度下降法優化損失函式,則列印一次weight和biases.
sess = tf.session()
sess.run(init) # very important
for step in range(201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(weights), sess.run(biases))
sess.close()
tf.session()建立乙個會話,當上下文管理器退出時會話關閉和資源釋放自動完成。
# view more python tutorial on my youtube and youku channel!!!
# youtube video tutorial:
# youku video tutorial:
"""please note, this code is only for python 3+. if you are using python 2+, please modify the code accordingly.
"""from __future__ import print_function
import tensorflow as tf
import numpy as np
# create data
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1 + 0.3
### create tensorflow structure start ###
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)
### create tensorflow structure end ###
sess = tf.session()
# tf.initialize_all_variables() no long valid from
# 2017-03-02 if using tensorflow >= 0.12
if int((tf.__version__).split('.')[1]) < 12 and int((tf.__version__).split('.')[0]) < 1:
init = tf.initialize_all_variables()
else:
init = tf.global_variables_initializer()
sess.run(init)
for step in range(201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(weights), sess.run(biases))
sess.close()
TensorFlow 深度學習筆記
google 深度學習筆記 經常總結是個好習慣,筆記目錄奉上。歡迎star,有問題可以到issue區討論 官方教程位址 最近tensorflow團隊出了乙個model專案,和這個課程無關,但是可以參考 框架 tensorflow 谷歌出品的基於python的深度學習工具集 工具 ipython,py...
TensorFlow深度學習框架
tensorflow支援python和c 兩種程式語言,再複雜的多層神經網路模型都可以用python來實現,如果業務使用其他程式設計也不用擔心,使用跨語言的grpc或者http服務也可以訪問使用tensorflow訓練好的智慧型模型。tensorflow 是乙個採用資料流圖 data flow gr...
深度學習 初識TensorFlow
深度學習使用場景 影象理解 語音識別 自然語言處理 機器自主 無人駕駛 深度學習,如深度神經網路 卷積神經網路和遞迴神經網路已被應用計算機視覺 語音識別 自然語言處理 音訊識別與生物資訊學等領域並取得了很好的效果。深度學習在人工智慧領域的地位 深度學習框架 google brain計畫產物 應用於a...