2018 08 06 Tensorflow基礎構架

2021-08-22 15:21:17 字數 4479 閱讀 4796

tensorflow 首先要定義神經網路的結構, 然後再把資料放入結構當中去運算和 training.

因為tensorflow是採用資料流圖(data flow graphs)來計算, 所以首先我們得建立乙個資料流圖, 然後再將我們的資料(資料以張量(tensor)的形式存在)放在資料流圖中計算. 節點(nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的多維資料陣列, 即張量(tensor). 訓練模型時tensor會不斷的從資料流圖中的乙個節點flow到另一節點, 這就是tensorflow名字的由來.

張量(tensor)

張量有多種. 零階張量為 純量或標量 (scalar) 也就是乙個數值. 比如 [1]

一階張量為 向量 (vector), 比如 一維的 [1, 2, 3]

二階張量為 矩陣 (matrix), 比如 二維的 [[1, 2, 3],[4, 5, 6],[7, 8, 9]]

以此類推, 還有 三階 三維的 …

建立資料

匯入tensorflow和numpy,使用numpy建立 x 和 y 的資料。另外,由於tensorflow中大部分的資料都是float32型別,所以這裡使用numpy建立float32型別的資料。

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

2.搭建模型

用 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

3.計算誤差

將殘差平方的均值作為誤差

loss = tf.reduce_mean(tf.square(y-y_data))
4.傳播誤差

反向傳遞誤差的工作就交給optimizer了, 我們使用的誤差傳遞方法是梯度下降法: gradient descent 讓後我們使用 optimizer 來進行引數的更新.

optimizer = tf.train.gradientdescentoptimizer(0.5)

train = optimizer.minimize(loss)

訓練

到目前為止, 我們只是建立了神經網路的結構, 還沒有使用這個結構. 在使用這個結構之前, 我們必須先初始化所有之前定義的variable, 所以這一步是很重要的!

# init = tf.initialize_all_variables() # tf 馬上就要廢棄這種寫法

init = tf.global_variables_initializer() # 替換成這樣就好

接著,我們再建立會話 session. 我們用 session 來執行 init 初始化步驟. 並且, 用 session 來 run 每一次 training 的資料. 逐步提公升神經網路的**準確性.

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))

session 是 tensorflow 為了控制,和輸出檔案的執行的語句. 執行 session.run() 可以獲得你要得知的運算結果, 或者是你所要運算的部分。

先建立兩個矩陣m1和m2,計算它們的乘積product,然後在使用session來啟用product 並得到計算結果. 有兩種形式使用會話控制 session。

import tensorflow as tf

# create two matrices

m1= tf.constant([[3,3]])

m2= tf.constant([[2],

[2]])

product = tf.matmul(m1,m2)

# method 1

sess = tf.session()

result = sess.run(product)

print(result)

sess.close()

# output: [[12]]

# method 2

with tf.session() as sess:

result2 = sess.run(product)

print(result2)

# output: [[12]]

tensorflow中需要使用tensorflow.variable來定義變數

mport tensorflow as tf

state = tf.variable(0, name='counter')

# 定義常量 one

one = tf.constant(1)

# 定義加法步驟 (注: 此步並沒有直接計算)

new_value = tf.add(state, one)

# 將 state 更新成 new_value

update = tf.assign(state, new_value)

如果在 tensorflow 中設定了變數,那麼初始化變數是最重要的!!所以定義了變數以後, 一定要定義tf.global_variables_initializer()。到這裡變數還是沒有被啟用,需要再在 sess 裡, sess.run(init) , 啟用 init 這一步。

# 如果定義 variable, 就一定要 initialize

# init = tf.initialize_all_variables() # tf 馬上就要廢棄這種寫法

init = tf.global_variables_initializer() # 替換成這樣就好

# 使用 session

with tf.session() as sess:

sess.run(init)

for _ in range(3):

sess.run(update)

print(sess.run(state))

注意:直接 print(state) 不起作用!!

一定要把 sess 的指標指向 state 再進行 print 才能得到想要的結果!

placeholder 是 tensorflow 中的佔位符,暫時儲存變數。

tensorflow 如果想要從外部傳入data, 那就需要用到 tf.placeholder(), 然後以這種形式傳輸資料 sess.run(***, feed_dict=)。

import tensorflow as tf

#在 tensorflow 中需要定義 placeholder 的 type ,一般為 float32 形式

input1 = tf.placeholder(tf.float32)

input2 = tf.placeholder(tf.float32)

# mul = multiply 是將input1和input2 做乘法運算,並輸出為 output

ouput = tf.multiply(input1, input2)

接下來, 傳值的工作交給了 sess.run() , 需要傳入的值放在了feed_dict={} 並一一對應每乙個 input. placeholder 與 feed_dict={} 是繫結在一起出現的。

with tf.session() as sess:

print(sess.run(ouput, feed_dict=))

# output: [ 14.]

激勵函式執行時啟用神經網路中某一部分神經元,將啟用資訊向後傳入下一層的神經系統。激勵函式的實質是非線性方程。 tensorflow 的神經網路 裡面處理較為複雜的問題時都會需要運用激勵函式 activation function 。

Anaconda環境下安裝Tensorflow

安裝過程中會讓你選擇是否將anaconda新增到系統環境中去,此時可以勾選這個選項框,避免後期自己新增路徑。1 開啟anaconda prompt 2 為了加快其他庫的安裝速度,我們首先要替換清華源 在anaconda prompt裡輸入以下命令 conda config add channels ...

Anaconda平台下安裝tensorflow

平台 windows 版本 tensorflow2.0.0 alpha0 cpu版本 安裝方式 pip 一 安裝環境 tensorflow2.0.0的cpu版本環境需求簡單,安裝比較簡潔。二 安裝過程 anaconda安裝 在anaconda安裝不需要重新下乙個python版本,只需要後面新建乙個虛...

小白 Anaconda下安裝tensorflow

本人是笨蛋小白,安裝的時候才知道建立虛擬環境的時候,環境裡可以直接安裝不同版本的python,不必考慮anaconda本身的python版本。為了搭配tensorflow更好的學習其他人的 我安裝的的是python3.6安裝版本,tensorflow對應的版本為1.4.0 keras的版本要對應te...