Tensorflow MNIST 手寫識別

2021-08-01 07:46:45 字數 2164 閱讀 6633

這是乙個系列,記錄我tensorflow開發常用的**,小常識,有些是參考網上**,(講的可能有點爛,求不要打臉,嚶嚶嚶~~)送給那些需要的人。可以相互交流,喜歡的加我吧。

wx: lxp911221

根據官方文件敲「mnist機器學習入門」第乙個例子,碰到乙個煩了我很久的問題

input_data 一直找不到。why?

from tensorflow.examples

.tutorials

.mnist import input_data

mnist = input_data.read_data_sets("mnist_data/", one_hot=true)

找了很久,找到了上邊一段**,執行成功。所以它很重要 ):

下邊**是一位博主的,比我的**注釋詳細,就直接用他的吧

@mebiuw

# -*- coding:utf-8 -*-  

# noted by: @mebiuw sina weibo

import tensorflow as tf

from tensorflow.examples

.tutorials

.mnist import input_data

mnist = input_data.read_data_sets("mnist_data/", one_hot=true)

# x是乙個placeholder ,這個值後續再放入讓tf計算,這裡是乙個784維,但是訓練數量不確定的(用none表示)的浮點值

x = tf.placeholder(tf.float32, [none, 784])

# 設定對應的權值和偏置的表示,variable代表乙個變數,會隨著程式的生命週期做乙個改變

# 需要給乙個初始的值,這裡都全部表示為0

w = tf.variable(tf.zeros([784, 10]))

b = tf.variable(tf.zeros([10]))

# 這裡根據我們上面描述的,構件我們的模型,y是模型的輸出,matmul是矩陣乘法,公式請參見之前的

y = tf.nn

.softmax(tf.matmul(x, w) + b)

# 這裡是儲存真是的label,同樣是placeholder,原理同x

y_ = tf.placeholder(tf.float32, [none, 10])

# 在機器學習的模型中,我們需要定義乙個衡量模型好壞的方式,稱為代價函式(cost loss),這裡使用了交叉熵去衡量 reduce_sum 累加

cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

#訓練的步驟,告訴tf,用梯度下降法去優化,學習率是0.5,目的是最小化交叉熵

train_step = tf.train

.gradientdescentoptimizer(0.5).minimize(cross_entropy)

# 到目前為止,我們已經定義完了所有的步驟,下面就需要初始化這個訓練步驟了,首先初始化所有變數(之前定義的變數)

init = tf.initialize_all_variables()

sess = tf.session()

sess.run(init)

#執行步驟1000次

for i in range(1000):

#載入資料

batch_xs, batch_ys = mnist.train

.next_batch(100)

#執行步驟,但是需要填入placeholder的值

sess.run(train_step, feed_dict=)

#進行模型的的衡量

correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))

accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

#理論上應該是92%附近

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

執行結果不到92%,不過第一步,慢慢來。謝謝!

Tensorflow MINIST手寫體識別

1 設計演算法來訓練模型 對於處理這種多分類任務,通常用softmax regression。工作原理就是對每一種類別估計乙個概率,然後取概率最大的類別作為模型的輸出結果。2 定義乙個loss function來描述模型對問題的分類精度 對多分類問題通常用cross entropy作為loss fu...

TensorFlow入門MNIST手寫識別

匯入mnist資料集 訓練集有55000個樣本 測試集有10000個樣本 同時驗證集有5000個樣本 每個樣本都有它應標註資訊,即lable from tensorflow.examples.tutorials.mnist import input data mnist input data.rea...

Tensorflow實現DNN,手寫數字識別

from tensorflow.examples tutorials mnist import input data mnist input data.read data sets g tensorflow data one hot true import tensorflow as tf lear...