记录研究生封校生活的学习day5(第一篇)keras数据集实战(1)

162 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情

今天是十月更文计划第五天,第八篇

今天进行一个数据集实战,数据集使用Keras自带的数据集。

首先练习提供的数据集,接下来我就要学习如何自己创建一个数据集。并且将其使用在模型中

以下是keras.datasets包含的数据集清单

  1. 波士顿房价数据
  2. CIFAR10 (十种类别的图片集)
  3. CIFAR100 (100种类别的图片集)
  4. MNIST (手写数字图片集)
  5. Fashion-MNIST (10种时尚类别的图片集)
  6. IMDB电影点评数据
  7. 路透社新闻数据

在本文,我使用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)

输出的结果如下:

image.png

由上图可以看到,训练集有55000张图片,每一张图片的大小都是2828 像素的,验证集有5000张图片,每张图片都是2828大小,测试集含有的图片个数是10000张。

由于这个数据集都是图片,所以可以拿出几张照片出来看看,如果直接使用 x_train[0],得到的都是图像转化为的数字,如下图所示:

image.png

如果想要将图像展示出来,就需要根据像素值打印图片,编写函数来进行显示:

def show_single_image(img_arr):
    plt.imshow(img_arr, cmap="binary")  #根据像素值打印图片
    plt.show()

想要看第几个元素的照片,就像其下标放入调用的函数中:

show_single_image(x_train[1])

输出的结果如下:

image.png

想要多看几个就可以多次调用:

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)

输出的结果如下:

image.png