日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介、下载、使用方法(包括数据增强)之详细攻略

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介、下载、使用方法(包括数据增强)之详细攻略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Dataset之MNIST:MNIST(手寫數字圖片識別+ubyte.gz文件)數據集簡介+數據增強(將已有MNIST數據集通過移動像素上下左右的方法來擴大數據集為初始數據集的5倍)

?

?

目錄

MNIST數據集簡介

0、簡介

1、mnist 對象中各個屬性的含義和大小

2、數據集的應用—訓練和預測

MNIST數據集下載

1、基于python語言根據爬蟲技術自動下載MNIST數據集

2、TensorFlow的封裝下使用MNIST數據集

數據集增強代碼演示


?

?

MNIST數據集簡介

? ? ? ?四個gz文件,一共大約11M左右。

?

0、簡介

? ? ? ? MNIST是一個非常有名的手寫體數字識別數據集(手寫數字灰度圖像數據集),在很多資料中,這個數據集都會被用作深度學習的入門樣例。
? ? ? ?MNIST數據集是由0 到9 的數字圖像構成的。訓練圖像有6 萬張,測試圖像有1 萬張。MNIST數據集是NIST數據集的一個子集,它包含了60000張圖片作為訓練數據,10000張圖片作為測試數據。每一張圖片都有對應的標簽數字,訓練圖像一共高60000 張,供研究人員訓練出合適的模型。測試圖像一共高10000 張,供研究人員測試訓練的模型的性能。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 單張圖片樣本的矩陣表示

? ? ? ? ? ? ? ? ? ? ? ? ?在上圖中右側顯示了一張數字1的圖片,而右側顯示了這個圖片所對應的像素矩陣。

?? ? ?MNIST 數據集主要由一些手寫數字的圖片和相應的標簽組成,圖片一共高10 類, 分別對應從0~9 ,共10 個阿拉伯數字。在MNIST數據集中的每一張圖片都代表了0~9中的一個數字。
? ? ? ?MNIST的圖像,每張圖片是包含28 像素× 28 像素的灰度圖像(1 通道),各個像素的取值在0 到255 之間。每個圖像數據都相應地標有數字標簽。每張圖片都由一個28 ×28 的矩陣表示,每張圖片都由一個784 維的向量表示(28*28=784),如圖所示。圖片的大小都為28*28,且數字都會出現在圖片的正中間。?處理后的每一張圖片是一個長度為784的一維數組,這個數組中的元素對應了圖片像素矩陣中的每一個數字。

?

1、mnist 對象中各個屬性的含義和大小

文件名 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 大小 ? ? ? ? ? ? ? ? ? ?特點

train-images-idx3-ubyte.gz ? ? ?≈9.45 MB ? ? ? ? ? 訓練圖像數據
train-labels-idx 1-ubyte.gz ? ? ?≈0.03MB ??? ? ? ? ? 訓練圖像的標
ti Ok-images-idx3-ubyte.gz ? ?≈?t.57MB??? ? ? ? ? ?測試圖像數據
t l Ok-labels-idxl-ubyte.gz ? ? ?≈4.4KB ???? ? ? ? ? ? 測試圖像的標

? ? ? ? 原始的MNIST 數據集中包含60000 張訓練圖片和10000 張測試圖片。
? ? ? ? 而在TensorFlow 中,又將原先的60000 張訓練圖片重新劃分成了新的55000張訓練圖片和5000張驗證圖片。所以在mnist 對象中,數據一共分為三部分: mnist.train 是訓練圖片數據, mnist. validation 是驗證圖片數據,mnist.test是測試圖片數據,這正好對應了機器學習中的訓練集、驗證集和測試集。一般來說,會在訓練集上訓練模型,通過模型在驗證集上的表現調整參數,最后通過測試集確定模型的性能。

?

2、數據集的應用—訓練和預測

? ? ? ? ?這些圖像可以用于學習和推理。MNIST數據集的一般使用方法是,先用訓練圖像進行學習,再用學習到的模型度量能在多大程度上對測試圖像進行正確的分類。
? ? ? ? 在原始的MNIST 數據集中(官網http://yann.lecun.com/exdb/mnist/),可以找到多達68 種模型在該數據集上的準確率數據,包括相應的論文出處。這些模型包括線性分類器、K 近鄰方法、普通的神經網絡、卷積神經網絡等。

?

MNIST數據集下載

1、基于python語言根據爬蟲技術自動下載MNIST數據集

Dataset之MNIST:自定義函數mnist.load_mnist根據網址下載mnist數據集(四個ubyte.gz格式數據集文件)

Dataset之MNIST:MNIST(手寫數字圖片識別+ubyte.gz文件)數據集的下載(基于python語言根據爬蟲技術自動下載MNIST數據集)

?

?

2、TensorFlow的封裝下使用MNIST數據集

? ? ? ? TensorFlow的封裝讓使用MNIST數據集變得更加方便。

? ? ? ? MNIST數據集提供了4個下載文件,在tensorflow中可將這四個文件直接下載放于一個目錄中并加載,如下代碼所示,如果指定目錄中沒有數據,那么tensorflow會自動去網絡上進行下載。通過input_data.read_data_sets函數生成的類會自動將MNIST數據集劃分為train, validation和test三個數據集。
?? ? ?其中train這個集合內含有55000張圖片,validation集合內含有5000張圖片,這兩個集合組成了MNIST本身提供的訓練數據集。test集合內有10000張圖片,這些圖片都來自與MNIST提供的測試數據集。

1、MNIST數據集下載及輸出基本信息

import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #這是TensorFlow 為了教學Mnist而提前設計好的程序 # number 1 to 10 data mnist = input_data.read_data_sets('MNIST_data', one_hot=True) #TensorFlow 會檢測數據是否存在。當數據不存在時,系統會自動,在當前代碼py文件位置,自動創建MNIST_data文件夾,并將數據下載到該件夾內。當執行完語句后,讀者可以自行前往MNIST_data/文件夾下查看上述4 個文件是否已經被正確地下載 #若因網絡問題無法正常下載,可以前往MNIST官網http://yann.lecun.com/exdb/mnist/使用下載工具下載上述4 個文件, 并將它們復制到MNIST_data/文件夾中。#查看訓練數據的大小 print(mnist.train.images.shape) #(55000, 784) print(mnist.train.labels.shape) #(55000, 10)#查看驗證數據的大小 print(mnist.validation.images.shape) #(5000, 784) print(mnist.validation.labels.shape) #(5000, 10)#查看測試數據的大小 print(mnist.test.images.shape) #(10000, 784) print(mnist.test.labels.shape) #(10000, 10)print(mnist.train.images[0,:]) #打印出第0張訓練圖片對應的向量表示

2、利用TF查看MNIST數據集中訓練集的前20張圖片

#利用TF查看MNIST數據集中訓練集的前20張圖片 from tensorflow.examples.tutorials.mnist import input_data import scipy.misc import os# 讀取MNIST數據集。如果不存在會事先下載。 mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)# 我們把原始圖片保存在MNIST_data/raw/文件夾下 # 如果沒有這個文件夾會自動創建 save_dir = 'MNIST_data/raw/' if os.path.exists(save_dir) is False:os.makedirs(save_dir)# 保存前20張圖片 for i in range(20):# 請注意,mnist.train.images[i, :]就表示第i張圖片(序號從0開始)image_array = mnist.train.images[i, :]# TensorFlow中的MNIST圖片是一個784維的向量,我們重新把它還原為28x28維的圖像。image_array = image_array.reshape(28, 28)# 保存文件的格式為 mnist_train_0.jpg, mnist_train_1.jpg, ... ,mnist_train_19.jpgfilename = save_dir + 'mnist_train_%d.jpg' % i# 將image_array保存為圖片# 先用scipy.misc.toimage轉換為圖像,再調用save直接保存。scipy.misc.toimage(image_array, cmin=0.0, cmax=1.0).save(filename)print('Please check: %s ' % save_dir)

3、查看mnist_train數據集

打印出前20張圖片的One-hot編碼+前20張圖片所對應的標簽

#mnist_train數據集:打印出前20張圖片的One-hot編碼+前20張圖片所對應的標簽 from tensorflow.examples.tutorials.mnist import input_data import numpy as np # 讀取mnist數據集。如果不存在會事先下載。 mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)# 看前20張訓練圖片的label for i in range(20):# 得到one-hot表示,形如(0, 1, 0, 0, 0, 0, 0, 0, 0, 0)one_hot_label = mnist.train.labels[i, :]# 通過np.argmax我們可以直接獲得原始的label# 因為只有1位為1,其他都是0label = np.argmax(one_hot_label)print('mnist_train中,第 %d 張圖片One-hot編碼'% i,mnist.train.labels[i,:])print('mnist_train中,第 %d 張圖片對應的 label: %d' % (i, label))

?

?

數據集增強代碼演示

Dataset之MNIST:MNIST(手寫數字圖片識別)數據集簡介、下載、使用方法(包括數據集增強)之詳細攻略

1、思路

2、代碼實現

數據集增強(將已有MNIST數據集通過移動像素上下左右的方法來擴大數據集為初始數據集的5倍)

from __future__ import print_functionimport cPickle import gzip import os.path import randomimport numpy as npprint("Expanding the MNIST training set")if os.path.exists("../data/mnist_expanded.pkl.gz"): print("The expanded training set already exists. Exiting.") else:f = gzip.open("../data/mnist.pkl.gz", 'rb')training_data, validation_data, test_data = cPickle.load(f)f.close()expanded_training_pairs = []j = 0for x, y in zip(training_data[0], training_data[1]):expanded_training_pairs.append((x, y))image = np.reshape(x, (-1, 28))j += 1if j % 1000 == 0: print("Expanding image number", j)for d, axis, index_position, index in [(1, 0, "first", 0),(-1, 0, "first", 27),(1, 1, "last", 0),(-1, 1, "last", 27)]:new_img = np.roll(image, d, axis)if index_position == "first": new_img[index, :] = np.zeros(28)else: new_img[:, index] = np.zeros(28)expanded_training_pairs.append((np.reshape(new_img, 784), y))random.shuffle(expanded_training_pairs)expanded_training_data = [list(d) for d in zip(*expanded_training_pairs)]print("Saving expanded data. This may take a few minutes.")f = gzip.open("../data/mnist_expanded.pkl.gz", "w") cPickle.dump((expanded_training_data, validation_data, test_data), f)f.close()

?

?

相關文章
Dataset:利用Python將已有mnist數據集通過移動像素上下左右的方法來擴大數據集為初始數據集的5倍

總結

以上是生活随笔為你收集整理的Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集简介、下载、使用方法(包括数据增强)之详细攻略的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。