深度學習 Tensorflow線性結構實現示例

2021-08-24 20:15:28 字數 3719 閱讀 1615

完整**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(張量)。 初始值定義變數的型別和形狀。 施工後,變數的型別和形狀是固定的。 該值可以使用其中一種賦值方式進行更改。

接著就是計算yy_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初始化步驟. 並且, 用sessionrun每一次 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...