取得MNIST手寫數字圖檔
MINST手寫數字是機器學習入門最常使用的資料集之一,但通常是使用Keras直接讀取使用。若是想要將其中圖片取出自行運用,該如何操作呢?
建立 Tensorflow 1.x 環境
由於Tensorflow 1.x可以直接讀取MINST資料集,而2.x版已移除此功能,所以我們要在Tensorflow 1.x環境中執行。這種情況可在虛擬環境中操作,但發現在COLAB中更方便,因此本篇在COLAB中操作。
首先在COLAB新增一個筆記本(名稱自訂),掛載雲端硬碟,COLAB的Tensorflow版本為2.4.1,執行下列命令更改為1.14.0:
!pip install tensorflow==1.14.0 --force-reinstall
截取圖形程式
下面程式可將MINST圖片逐一取出並置於名稱為「0」至「9」資料夾中:
from tensorflow.examples.tutorials.mnist import input_data
from PIL import Image
import numpy
import os
data_sets = input_data.read_data_sets('input_data') #MNIST數據所在路徑,不存在時會自動下載
images = data_sets.train.images
labels = data_sets.train.labels
total = images.shape[0]
save_path = 'mnist-image' #導出圖片保存路徑
count = []
for i in range(10):
count.append(0)
for i in range(0, total):
label = labels[i]
path = os.path.join(save_path, str(label))
if not os.path.exists(path):
os.makedirs(path)
count[label] += 1
name = str(label) + '_' + str(count[label]) + '.bmp'
filename = os.path.join(path, name)
if os.path.exists(filename):
print(filename, 'exists')
continue
image = images[i]
image = image.reshape(28, 28)
image = numpy.multiply(image, 255)
image = image.astype(numpy.uint8)
im = Image.fromarray(image)
im.save(filename)
執行後產生的<input_data>資料夾存放MINST原始的壓縮檔,<mnist-image>資料夾存放取得的55000張圖片。「0」資料夾中為0的圖片,圖片名稱為<0_1.bmp>、<0_2.bmp>、……;「1」資料夾中為1的圖片,圖片名稱為<1_1.bmp>、<1_2.bmp>、……;依此類推。
下載圖形到本機
因為圖形數量太龐大,無法逐一下載到本機,最佳方式是將其壓縮後並下載。執行下列命令可將圖片資料夾壓縮為<mnistimg.zip>:
!zip -r mnistimg.zip /content/mnist-image
點選<mnistimg.zip>右方功能鈕,按「下載」項目即可下載此壓縮檔。
下載到本機後解壓縮就可得到所有圖片。
沒有留言:
張貼留言