1.用圖(graph)來表示計算任務
2.用op(opreation)來表示圖中的計算節點,圖有默認的計算節點,構建圖的過程就是在其基礎上加節點。
3.用tensor表示每個op的輸入輸出數據,可以使用feed,fetch可以為任意操作設置輸入和獲取輸出。
4.通過Variable來維護狀態。
5.整個計算任務放入session的上下文來執行。
tensorflow把復雜的計算放在python之外進行。
為什么tensorflow使用session來運行會話?
因為python會使用一些非python實現的庫比如numpy,如果每個操作和數據都做內外交換代價太大,
所以把所有操作描述為圖,把整個操作圖打包放入session,作為一個整體做內外交換,這樣就能避免頻繁的內外交換帶來的性能損失。
一般步驟
#導入庫
import tensorflow as tf
import numpy as np
# 通過操作符號變量來描述這些可交互的操作單元
x = tf.placeholder("float", [None, 784]) # 這里的 None 表示此張量的第一個維度可以是任何長度的
#定義變量
# 一個 Variable 代表一個可修改的張量,存在在TensorFlow的用於描述
#交互性操作的圖中。它們可以用於計算輸入值,也可以在計算中被修改。對於各種機器學習應用,一般都會有模
#交互性操作的圖中。它們可以用於計算輸入值,也可以在計算中被修改。對於各種機器學習應用,一般都會有模
#型參數,可以用 Variable 表示
W = tf.Variable(tf.zeros([784,10]))
b = tf.Variable(tf.zeros([10]))
#實現模型
y = tf.nn.softmax(tf.matmul(x,W) + b)
#定義指標評估模型的好壞
#我們通常定義指標來表示一個模型是壞的,這個指標稱為成本(cost)或損失(loss),然后盡量最小化這個指標
y_ = tf.placeholder("float", [None,10])
cross_entropy = -tf.reduce_sum(y_*tf.log(y))
#使用梯度下降算法來修改變量減小成本
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
#初始化
init = tf.initialize_all_variables()
#啟動模型
sess = tf.Session()
sess.run(init)
#訓練模型
for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
#評估模型
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
print sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels})
1.
exp函數,自然對數e( 2.71828)的指數函數
2.
normalize函數,歸一化函數,把數據范圍限制在你需要的范圍(范圍縮放)。
3.交叉熵
4.導數,導函數,切線,斜率,方差代價函數
