持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
今天是十月更文计划第五天,第八篇
今天进行一个数据集实战,数据集使用Keras自带的数据集。
首先练习提供的数据集,接下来我就要学习如何自己创建一个数据集。并且将其使用在模型中
以下是keras.datasets包含的数据集清单
- 波士顿房价数据
- CIFAR10 (十种类别的图片集)
- CIFAR100 (100种类别的图片集)
- MNIST (手写数字图片集)
- Fashion-MNIST (10种时尚类别的图片集)
- IMDB电影点评数据
- 路透社新闻数据
在本文,我使用Keras自带的数据集-Fashion-MNIST来进行学习
以下是需要导入的包
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import sklearn
import pandas as pd
import sys
import tensorflow as tf
from tensorflow import keras
首先需要拿出数据集,对数据集进行自定义的划分:
fashion_mnist = keras.datasets.fashion_mnist
(x_train_all, y_train_all), (x_test, y_test) = fashion_mnist.load_data()
#前面5000张是验证集,后面55000张是训练集
x_valid, x_train = x_train_all[:5000], x_train_all[5000:]
y_valid, y_train = y_train_all[:5000], y_train_all[5000:]
一般将数据集分为训练集,验证集,测试集三种。显示划分好的数据集:
print(x_train.shape, y_train.shape)
print(x_valid.shape, y_valid.shape)
print(x_test.shape, y_test.shape)
输出的结果如下:
由上图可以看到,训练集有55000张图片,每一张图片的大小都是2828 像素的,验证集有5000张图片,每张图片都是2828大小,测试集含有的图片个数是10000张。
由于这个数据集都是图片,所以可以拿出几张照片出来看看,如果直接使用 x_train[0],得到的都是图像转化为的数字,如下图所示:
如果想要将图像展示出来,就需要根据像素值打印图片,编写函数来进行显示:
def show_single_image(img_arr):
plt.imshow(img_arr, cmap="binary") #根据像素值打印图片
plt.show()
想要看第几个元素的照片,就像其下标放入调用的函数中:
show_single_image(x_train[1])
输出的结果如下:
想要多看几个就可以多次调用:
show_single_image(x_train[0])
show_single_image(x_train[3])
就会打印出不同照片。
如果想要多显示几个照片,并且附带标签就需要编写函数:
def show_imgs(n_rows, n_cols, x_data, y_data, class_names):
plt.figure(figsize = (n_cols * 1.4, n_rows * 1.6))
for row in range(n_rows):
for col in range(n_cols):
index = n_cols * row + col
plt.subplot(n_rows, n_cols, index+1)#因为从1开始
plt.imshow(x_data[index], cmap="binary",
interpolation = 'nearest')
plt.axis('off')#去除坐标系
plt.title(class_names[y_data[index]])
plt.show()
在调用函数的过程中:
class_names = ['T-shirt', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
show_imgs(5, 5, x_train, y_train, class_names)
输出的结果如下: