1. 程式人生 > >python學習日記7tensorflow-手寫數字分類

python學習日記7tensorflow-手寫數字分類

參考資料:
1、tensorflow中文社群 mnist機器學習入門(分類手寫數字)
http://tensorfly.cn/tfdoc/tutorials/mnist_beginners.html

2、英文版mnist機器學習入門(分類服裝圖片)
https://tensorflow.google.cn/tutorials/keras/basic_classification

3、Yann Lecun的原始網站
http://yann.lecun.com/exdb/mnist/

學習內容:
1、第一個bug,匯入資料
首先要從Yann的網站下載四個資料檔案,存在MNIST_data目錄中。
老版的命令,和新版的官網命令都無法使用。新版的問題是https://tensorflow.googlesource.com/tensorflow/+/master/tensorflow/examples/tutorials/mnist/input_data.py 網址被牆
修改後的命令使用了新的有效網址
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets(“MNIST_data/”, one_hot=True)
學習import命令的官方指南

https://docs.python.org/3.5/reference/import.html
https://docs.python.org/3.5/reference/simple_stmts.html#import

我把input_data.py存在資料夾內,使用
import input_data
mnist = input_data.read_data_sets(“MNIST_data/”, one_hot=True)
同樣實現了資料的匯入

input_data.py檔案:

#Functions for downloading and reading MNIST data.
from future

import absolute_import
from future import division
from future import print_function
import gzip
import os
import tempfile
import numpy
from six.moves import urllib
from six.moves import xrange # pylint: disable=redefined-builtin
import tensorflow as tf
from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets

2、https://tensorflow.google.cn/tutorials/keras/basic_classification
閱讀
a、圖片格式說明,警惕瀏覽器自動解壓,非標準格式,一般軟體無法瀏覽,圖片格式說明在頁底
b、NIST原始影象是20×20灰度圖,經過標準化和去鋸齒處理後,按中心位置存在28×28網格中。
c、在基於模板的演算法中(如svm N臨近),使用邊框迴歸比質心效果好。如果有這方面的預處理,要說明
d、MNIST源自NIST的 Special Database 3 和 Special Database 1, 包含 binary images of handwritten digits.。NIST 最初設計,SD-3 是 training set,SD-1是test set。但SD-3比SD-1更清楚容易識別. 因為SD-3在Census Bureau employees中收集,而 SD-1在高中生中收集. 實驗要求結果獨立於訓練集和測試集的選擇. 所以做了一個新的混合NIST’s datasets.

MNIST 訓練集由 30,000個SD-3和 30,000個SD-1組成. 測試集由5,000 SD-3 和5,000 SD-1組成. 60,000訓練集大概由 250 寫手. 保證訓練和測試集寫手不耦合。

SD-1 包括58,527圖500寫手,每個數字可以追溯寫手。把SD-1分成兩部分:前 250 寫手寫的放入新訓練集,剩下的250 寫手的放test set。這樣我們每個集合有 30,000樣本。新訓練集加入了SD-3從pattern[0]開始的樣本作補充,形成完整的包含60,000 training patterns的集合。同樣,新測試集放入SD-3從 pattern[35,000]開始的樣本作補充,形成完整的60,000 test patterns。在本網站,只有10,000樣本的測試子集 (5,000 from SD-1 and 5,000 from SD-3)。完整集合60,000訓練樣本集合可以得到.

e、在這個training set and test set測試過的演算法很多. 有一些演算法做了斜偏校正(通過計算形狀的主軸,轉成垂直)。有些實驗在訓練集上做了人工畸變,包括隨機漂移 縮放 壓縮。

f、下面是論文列表和影象格式說明

3程式碼參考
1、http://tensorfly.cn/tfdoc/tutorials/mnist_beginners.html
2、《深度學習之tensorflow入門原理與進階實戰》
二者的代價函式都使用了交叉熵,然後使用梯度下降優化