乙個對手寫數字進行識別的模型。
思路:1、將訓練集中獲取的手寫數字影象進行某一統一方式(全部按行或全部按列)的展開,得到乙個長向量(這是為了利用softmax做一維的回歸,不過損失了二維資訊),用乙個二維張量來索引某乙個樣本中的某一畫素。
2、softmax模型:用來給不同的物件分配概率(即使在更精細的模型中,最後一步,往往也需要用softmax來分配概率)
兩步:① 加權求和,並引入偏置
對於給定輸入x,其代表影象為數字i的證據為
e vi
denc
ei=∑
i(wi
,jxj
)+bi
evidence_i=∑_i(w_x_j)+b_i
eviden
cei
=∑i
(wi,
jxj
)+b
i② 用softmax函式將evidence轉換成概率,即
y =s
oftm
ax(e
vide
nce)
y=softmax(evidence)
y=soft
max(
evid
ence
)將輸入值當成冪指數求值,再正則化這些結果
更緊湊的寫法為 y=s
oftm
ax(w
x+b)
y=softmax(wx+b)
y=soft
max(
wx+b
)3、為了節省在python外使用別的語言進行複雜矩陣運算帶來的開銷,tensorflow做出的優化為,先用圖描述一系列可互動的操作,最後統一放在python外執行。
用佔位符placeholder來描述這些可互動的單元:
import tensorflow as tf
x=tf.placeholder(tf.float32,[none,784])
用變數variable來表示權重和偏置:
w=tf.variable(tf.zeros([784,10]))
b=tf.variable(tf.zeros([10]))
則模型可以用以下**實現:
y=tf.nn.softmax(tf.matmul(x,w)+b)
4、模型訓練
用交叉熵(cross-entropy)來評判模型的好壞,其表示式為
h y′
(y)=
−∑iy
i′lo
g(yi
)h_(y)=-∑_iy_i'log(y_i)
hy′(y
)=−∑
iyi
′lo
g(yi
)其中y是**的概率分布,y』是實際的概率分布(即訓練集對應的真實標籤,是乙個one-hot vector)
定義
y_=tf.placeholder(tf.float32,[none,10])
計算交叉熵
cross_entropy=-tf.reduce_sum(y_*tf.log(y))
tensorflow可以自動利用反向傳播演算法,根據選擇的優化器來最小化你的目標函式
train_step=tf.train.gradientdescentoptimizer(0.01).minimize(cross_entropy)
5、訓練準備
初始化操作
init=tf.initialize_all_variables
tensorflow是在乙個session中啟動模型
sess=tf.session()
sess.run(init)
6、開始訓練
for i in range(1000)
batch_xs,batch_ys=mnist.train.next_batch(100)
sess.run(train_step,feed_dict=)
此為隨機梯度下降訓練,每次訓練隨機抓取訓練集中的100個資料作為乙個batch
7、模型評估
tf.argmax給出物件在某一維度上最大值所對應的索引值,可以用來判斷**是否準確,即
correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(y_,1))
equal函式返回布林值,用cast函式轉化為浮點數後求均值來計算正確率
accuracy=tf.reduce_mean(tf.cast(correct_prediction,"float"))
8、計算學習到的模型在訓練集上的準確率
print sess.run(accuracy,feed_dict=)
TensorFlow官方文件學習(二)
開啟anaconda prompt activate tensor flow python import tensorflow as tf hello tf.constant hello s tf.session print s.run hello b hello 此處hello為utf 8編碼?列...
TensorFlow 官方文件中文版
打個不太恰當的比喻,如今 google 對待 tensorflow 系統,有點類似於該公司對待旗下移動作業系統 android。如果更多的資料科學家開始使用 google 的系統來從事機器學習方面的研究,那麼這將有利於 google 對日益發展的機器學習行業擁有更多的主導權。google tenso...
深度學習框架TensorFlow 官方文件中文版
使用 tensorflow,你必須明白 tensorflow tensorflow 是乙個程式設計系統,使用圖來表示計算任務.圖中的節點被稱之為 op operation 的縮寫 乙個 op 獲得 0 個或多個 tensor 執行計算,產生 0 個或多個 tensor 每個 tensor 是乙個型別...