MNIST資料視覺化
阿新 • • 發佈:2019-01-03
最近一直在弄如何將自己的資料做成google提供MNIST資料格式,用於test。但是一直還沒搞出結果,而本文我想介紹一下如何將google提供的MNIST資料轉化為視覺化的圖片。
google提供的MNIST資料是壓縮包,但是解壓出來發現不是想要的結果,竟然是二進位制檔案,如何將這些二進位制檔案轉換成圖片呢,本文將給出具體的程式碼。
利用python將影像讀取出來。
#get the images and labels mnist #-*- coding: utf-8 -*- from PIL import Image import struct def read_image(filename,file_path): f = open(filename, 'rb') index = 0 buf = f.read() print buf f.close() magic, images, rows, columns = struct.unpack_from('>IIII' , buf , index) index += struct.calcsize('>IIII') for i in xrange(images): image = Image.new('L', (columns, rows)) for x in xrange(rows): for y in xrange(columns): image.putpixel((y, x), int(struct.unpack_from('>B', buf, index)[0])) index += struct.calcsize('>B') print 'save ' + str(i) + 'image' image.save(file_path + str(i) + '.png') def read_label(filename, saveFilename): f = open(filename, 'rb') index = 0 buf = f.read() f.close() magic, labels = struct.unpack_from('>II' , buf , index) index += struct.calcsize('>II') labelArr = [0] * labels for x in xrange(labels): labelArr[x] = int(struct.unpack_from('>B', buf, index)[0]) index += struct.calcsize('>B') save = open(saveFilename, 'w') save.write(','.join(map(lambda x: str(x), labelArr))) save.write('\n') save.close() print 'save labels success' if __name__ == '__main__': # the filepath of data file_path=r'/data/' #get images read_image(file_path+'train-images-idx3-ubyte',file_path) #get labels read_label(file_path+'train-labels-idx1-ubyte', file_path+'label.txt')