最近学习tensorflow手册的卷积神经网络的例子,该例子用到了cifar10数据集。就想将图片显示出来,这样才算正在了解了数据集的格式。 这篇博客介绍了数据集的格式,代码的实现。但我在运行代码时,出现了编码问题。
只要在代码里加上 encoding=’latin1’ 就没问题了。
with open(filename, 'rb')as f:
# dict = p.load(f) #出现编码问题
dict = p.load(f, encoding='latin1')
在原博客的代码上做了些简单的修改,代码如下:
# -*- coding: utf8 -*-
# @Author : jint
# @Time : 2017/5/16 16:04
import pickle as p
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
def load_CIFAR_batch(filename):
with open(filename, 'rb')as f:
# dict = p.load(f) #出现编码问题
dict = p.load(f, encoding='latin1')
data = dict['data']
labels = dict['labels']
label_names = dict['filenames']
batch_label = dict['batch_label']
return data, labels, label_names
if __name__ == '__main__':
filenmae = 'cifar-10-batches-py\data_batch_1'
data, labels, label_names = load_CIFAR_batch(filenmae)
for i in range(100):
imgs = data[i].reshape(3, 32, 32)
imgs = imgs.transpose(1, 2, 0) #shape:[32, 32, 3]
img = Image.fromarray(imgs)
img.save("image/" + str(labels[i]) + "_" + str(i) + ".png")
下载的图片如下图,只下载了100张看看长什么样子的。没有官网的图片清晰,很小很小。有的看不清楚是什么,放大了就是打了马赛克的图片。毕竟只有32*32像素。