tensorflow 是谷歌開發的深度學習系統,用它可以很快速地入門神經網路。
它可以做分類,也可以做擬合問題,就是要把這個模式給模擬出來。
這是乙個基本的神經網路的結構,有輸入層,隱藏層,和輸出層。
每一層點開都有它相應的內容,函式和功能。
那我們要做的就是要建立乙個這樣的結構,然後把資料喂進去。
把資料放進去後它就可以自己執行,tensorflow 翻譯過來就是向量在裡面飛。
這個**的解釋就是,在輸入層輸入資料,然後資料飛到隱藏層飛到輸出層,用梯度下降處理,梯度下降會對幾個引數進行更新和完善,更新後的引數再次跑到隱藏層去學習,這樣一直迴圈直到結果收斂。
因為tensorflow是採用資料流圖(data flow graphs)來計算, 所以首先我們得建立乙個資料流流圖, 然後再將我們的資料(資料以張量(tensor)的形式存在)放在資料流圖中計算. 節點(nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的多維資料陣列, 即張量(tensor). 訓練模型時tensor會不斷的從資料流圖中的乙個節點flow到另一節點, 這就是tensorflow名字的由來.
張量有多種. 零階張量為 純量或標量 (scalar) 也就是乙個數值. 比如 [1]
一階張量為 向量 (vector), 比如 一維的 [1, 2, 3]
二階張量為 矩陣 (matrix), 比如 二維的 [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
以此類推, 還有 三階 三維的 …
簡單線性**例子
import sys
print(sys.version)
'''3.5.3 |continuum analytics, inc.| (default, may 15 2017, 10:43:23) [msc v.1900 64 bit (amd64)]
'''import tensorflow as tf
import numpy as np
# shape=tuple ,size=100
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))#[1],乙個數,範圍從-1.0到1.0
biases = tf.variable(tf.zeros([1]))#初始值0
y = weights*x_data + biases#框架
loss = tf.reduce_mean(tf.square(y-y_data))#定義誤差(square平方)
#梯度下降法
optimizer = tf.train.gradientdescentoptimizer(0.5)
train = optimizer.minimize(loss)
# init = tf.initialize_all_variables() # tf 馬上就要廢棄這種寫法
init = tf.global_variables_initializer() # 替換成這樣就好
sess = tf.session()
sess.run(init) # very important
for step in range(201):#訓練200次
sess.run(train)
if step % 20 == 0:
print(step, sess.run(weights), sess.run(biases))#越來越接近真實w和b
輸出0 [-0.01233229] [ 0.479366]
20 [ 0.04969411] [ 0.32581243]
40 [ 0.08435673] [ 0.30802673]
60 [ 0.09513554] [ 0.30249602]
80 [ 0.09848735] [ 0.30077615]
100 [ 0.09952962] [ 0.30024135]
120 [ 0.09985375] [ 0.30007505]
140 [ 0.09995452] [ 0.30002335]
160 [ 0.09998586] [ 0.30000728]
180 [ 0.09999558] [ 0.30000228]
200 [ 0.09999862] [ 0.30000073]
Tensorflow卷積神經網路
卷積神經網路 convolutional neural network,cnn 是一種前饋神經網路,在計算機視覺等領域被廣泛應用.本文將簡單介紹其原理並分析tensorflow官方提供的示例.關於神經網路與誤差反向傳播的原理可以參考作者的另一篇博文bp神經網路與python實現.卷積是影象處理中一種...
Tensorflow 深層神經網路
維基百科對深度學習的定義 一類通過多層非線性變換對高複雜性資料建模演算法的合集.tensorflow提供了7種不同的非線性啟用函式,常見的有tf.nn.relu,tf.sigmoid,tf.tanh.使用者也可以自己定義啟用函式.3.1.1 交叉熵 用途 刻畫兩個概率分布之間的距離,交叉熵h越小,兩...
Tensorflow(三) 神經網路
1 前饋傳播 y x w1 b1 w2 b2 import tensorflow as tf x tf.constant 0.9,0.85 shape 1,2 w1 tf.variable tf.random normal 2,3 stddev 1,seed 1 name w1 w2 tf.vari...