1. 程式人生 > >TensorFlow學習筆記(二):手寫數字識別之多層感知機

TensorFlow學習筆記(二):手寫數字識別之多層感知機

在【TensorFlow學習筆記(一):手寫數字識別之softmax迴歸】中:

我使用softmax迴歸演算法識別mnist資料集的手寫數字,在我機器上的mnist測試集上最好結果是 92.9%

在本節中,我們基於【TensorFlow學習筆記(一):手寫數字識別之softmax迴歸】的程式碼,只修改幾行程式碼,把softmax迴歸改為含一個隱層的多層感知機。

然後看看在mnist測試集上的準確率會是多少?

增加一個含 500 個神經元的隱層。

在【TensorFlow學習筆記(一):手寫數字識別之softmax迴歸】的基礎上修改:

修改前的程式碼:

#定義變數 w 和 b
w = tf.Variable ( tf.zeros ( [ 784, 10 ] ) )
b = tf.Variable ( tf.zeros ( [ 10 ] ) ) 


#實現 softmax 模型
y = tf.nn.softmax ( tf.matmul ( x, w ) + b )

修改後的程式碼

#定義變數 w1 、 b1、w2、b2
w1 = tf.Variable ( tf.truncated_normal ( [ 784,  500 ] ,   stddev = 0.1 ) )
b1 = tf.Variable ( tf.zeros ( [ 500 ] ) )
w2 = tf.Variable ( tf.truncated_normal ( [ 500,  10 ],   stddev = 0.1 ) )
b2 = tf.Variable ( tf.zeros ( [ 10 ] ) )


#含一個隱層的多層感知機
h1 = tf.nn.relu ( tf.matmul ( x,  w1 )  +  b1 )
y = tf.nn.softmax ( tf.matmul (h1,  w2 )  +  b2 )



然後執行整個網路,在我的電腦上,準確率是 98.14% ,結果如下:

==================== RESTART: D:\Python_code\ML\mnist.py ====================
Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
accuracy: 0.9814

>>> 

完整程式碼如下

import  numpy  as np
import  tensorflow  as  tf
from  tensorflow.examples.tutorials.mnist  import  input_data
mnist  =  input_data.read_data_sets ( "MNIST_data/",  one_hot = True )

x = tf.placeholder ( tf.float32, [ None, 784 ] )
y_ = tf.placeholder ( tf.float32, [ None, 10 ] )

w1 = tf.Variable ( tf.truncated_normal ( [ 784,  500 ] ,  stddev = 0.1 ) )
b1 = tf.Variable ( tf.zeros ( [ 500 ] ) )
w2 = tf.Variable ( tf.truncated_normal ( [ 500,  10 ] , stddev = 0.1 ) )
b2 = tf.Variable ( tf.zeros ( [ 10 ] ) )

h1 = tf.nn.relu ( tf.matmul ( x,  w1 )  + b1 )
y = tf.nn.softmax ( tf.matmul ( h1,  w2 )  +  b2 )

cross_entropy = tf.reduce_mean ( -tf.reduce_sum ( y_ * tf.log ( y ), 1 ) )
train_step = tf.train.GradientDescentOptimizer ( 0.03 ) .minimize ( cross_entropy )

correct_prediction = tf.equal ( tf.argmax ( y, 1 ) ,tf.argmax ( y_, 1 ) )
accuracy = tf.reduce_mean ( tf.cast ( correct_prediction, "float" ) )


init = tf.global_variables_initializer ( )
with  tf.Session()  as  sess:
  sess.run ( init )
  for  i  in  range ( 200000 ) :
    batch_xs, batch_ys = mnist.train.next_batch ( 100 )
    result = sess.run ( [ accuracy, train_step ], feed_dict = { x:batch_xs, y_:batch_ys } )
    
    if ( i % 100 == 0 ):
      print ( "accuracy:", sess.run ( accuracy, feed_dict = { x:mnist.test.images, y_:mnist.test.labels } ),"    step:", i )

相關推薦

TensorFlow學習筆記()數字識別感知

在【TensorFlow學習筆記(一):手寫數字識別之softmax迴歸】中: 我使用softmax迴歸演算法識別mnist資料集的手寫數字,在我機器上的mnist測試集上最好結果是 92.9% 。

TensorFlow筆記(4)——優化數字識別模型代價函式和擬合

前言 上篇筆記我們利用MNIST資料集訓練了一個手寫數字識別的模型,但是準確率非常的低,維持在91%左右,我們可以嘗試著將準確率提高到96%以上,在實驗之前我們需要先了解一些基本的概念,本篇文章可能會有些枯燥,因為大多都是理論知識。 本文重點 啟用函式 代價函式 擬合 什麼是啟用函式

keras入門實戰數字識別

如果 turn wid 寬度 initial 作用 err examples 預測 近些年由於理論知識的硬件的快速發展,使得深度學習達到了空前的火熱。深度學習已經在很多方面都成功得到了應用,尤其是在圖像識別和分類領域,機器識別圖像的能力甚至超過了人類。 本文用深度學習Pyt

深度學習-tensorflow學習筆記(2)-MNIST寫字體識別

image utf-8 詳情 識別 標簽 ins AI tor 第一個           深度學習-tensorflow學習筆記(2)-MNIST手寫字體識別   這是tf入門的第一個例子。minst應該是內置的數據集。   前置知識在學習筆記(1)裏面講過了   這裏直

基於Keras數字識別

一、概述 手寫數字識別通常作為第一個深度學習在計算機視覺方面應用的示例,Mnist資料集在這當中也被廣泛採用,可用於進行訓練及模型效能測試; 模型的輸入: 32*32的手寫字型圖片,這些手寫字型包含0~9數字,也就是相當於10個類別的圖片 模型的輸出: 分類結果,0~

機器學習實戰——KNN演算法數字識別

資料來源 我們的文字是形如這樣的,每個數字都有很多txt檔案,TXT裡面是01數字,表示手寫數字的灰度圖。 現在我們要用knn演算法實現數字識別。 資料處理 每個txt檔案都是32*32的0,1矩陣,如果要使用knn,那麼還得考慮行列關係,如果能把它拉開,只有一行,就可以不必考慮數字

Tensorflow數字識別簡單神經網路分類與CNN分類效果對比

用Tensorflow進行深度學習和人工智慧具有開發簡單,建模速度快,準確度高的優點。作為學習影象識別分類的入門,手寫輸入數字識別是個很好的例子。 MNIST包中共有60000個手寫數字筆跡灰度影象作為訓練集,每張手寫數字筆跡圖片均已儲存為28*28畫素,同時還有一個la

機器學習-實戰-入門-MNIST數字識別

作者:橘子派 宣告:版權所有,轉載請註明出處,謝謝。 實驗環境: Windows10 Sublime Anaconda 1.6.0 Python3.6 程式碼功能包括: 一.ubyte資料集轉

吳裕雄 python 神經網絡——TensorFlow實現AlexNet模型處理數字識別MNIST數據集

its iter style 輸出 init 向量 數字 ict sha import tensorflow as tf # 輸入數據 from tensorflow.examples.tutorials.mnist import input_data m

Mnist數字識別CNN實現

Mnist手寫數字識別之CNN實現 最近有點閒,想整一下機器學習,本以為自己程式設計還不錯,想想機器學習也不難,結果被自己啪啪啪的打臉,還疼的不行。 廢話不多說,開始搞事情。 本部落格的主要內容是:通過TF一步一步用卷積神經網路(CNN)實現手寫Mnist數字識別 如果你

Pytorch 快速入門(六)MNIST 數字識別CNN

接觸過深度學習的朋友對MNIST資料集肯定不陌生。基本上算是玩神經網路裡的“hello,world!”本節基於MNIST資料集,實現CNN學習過程。下面是一個 CNN 最後一層的學習過程, 我們先視覺化看看:MNIST手寫資料 首先是資料集下載,為了看看資料集裡究竟是長什麼樣

Kaggle競賽丨入門數字識別KNN、CNN、降維

引言 這段時間來,看了西瓜書、藍皮書,各種機器學習演算法都有所瞭解,但在實踐方面卻缺乏相應的鍛鍊。於是我決定通過Kaggle這個平臺來提升一下自己的應用能力,培養自己的資料分析能力。 我個人的計劃是先從簡單的資料集入手如手寫數字識別、泰坦尼克號、房價預測,這些目前已經有豐富且成熟的方案可以參考,之後關注未來

神經網路感知MLP的實現(Python+TensorFlow

用 MLP 實現簡單的MNIST資料集識別。 # -*- coding:utf-8 -*- # # MLP """ MNIST classifier, 多層感知機實現 """ # Import

Tensorflow深度學習筆記)--BPNN數字識別視覺化

資料集:MNIST 啟用函式:Relu 損失函式:交叉熵 Optimizer:AdamOptimizer 視覺化工具:tensorboad 迭代21epoch,accuracy結果如下: Iter 16,Testing Accuracy:

tensorflow 基礎學習MNIST數字識別

truncate averages val flow one die correct 表示 data MNIST數據集介紹: from tensorflow.examples.tutorials.mnist import input_data # 載入MNIST數據集,

TensorFlow(十)使用RNN實現數字識別

rop mea pre rnn ext ini tro truncate tutorial 上代碼: import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #

TensorFlow入門tensorflow數字識別

一、基礎知識 基礎知識可以跳過,可以直接看後面的程式碼實現 MNIST資料集 MNIST資料集的官網是Yann LeCun’s website。可以使用下面的python程式碼自動下載資料集。 #已經下載input_data.py #import input_data #沒有

TensorFlow筆記之一MNIST數字識別

     本人剛剛開始接觸深度學習不久,對於tensorflow的瞭解也有限,想通過tensorflow這個框架來學習深度學習及其優化與識別。現在直接進入主題。     1.手寫識別的介紹:            MNIST手寫識別在機器學習中就像c語言中Hello Wor

Tensorflow深度學習再談mnist數字識別程式

之前學習的第一個深度學習的程式就是mnist手寫字型的識別,那個時候對於很多概念不是很理解,現在回過頭再看當時的程式碼,理解了很多,現將加了註釋的程式碼貼上,與大家分享。(本人還是在學習Tensorflow的初始階段,如果有什麼地方理解有誤,還請大家不吝指出。)

機器學習筆記 -吳恩達(第七章邏輯迴歸-數字識別,python實現 附原始碼)

(1)資料集描述 使用邏輯迴歸來識別手寫數字(0到9)。 將我們之前的邏輯迴歸的實現,擴充套件到多分類的實現。 資料集是MATLAB的本機格式,要載入它到Python,我們需要使用一個SciPy工具。影象在martix X中表示為400維向量(其中有5,000個), 400