简介:
本教程的代码使用 神经网络来训练可以对手写数字 0-9 进行分类的图像分类机器学习模型。 它通过创建一个神经网络来实现此目的。该神经网络将“28 像素 x 28 像素”图像的像素值作为输入,输出一个包含 10 个概率的列表,一个概率对应于要分类的一个数字。 下面是数据的外观示例。
一、数据获取
使用系统内部的数据集构建神经网络。首先导入需要的库文件,x和y中保存训练集的图像和目标。x_test和y_test中保存测试集需要的图像和目标。(x, y)及(x_test, y_test)都是数组类型。
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import datasets,layers,optimizers,Sequential,metrics
# 导入数据集管理库,层级,优化器,全连接层容器,测试度量器
import os # 设置一下输出框打印的内容
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# '2'输出栏只打印error信息,其他乱七八糟的信息不打印
#导入数据集,数组类型
(x,y),(x_test,y_test) = datasets.fashion_mnist.load_data()
# 查看数据集信息
print(f'x.shape={x.shape},y.shape={y.shape}') # 查看训练集xy的大小
print(f'x_test.shape={x_test.shape},y_test.shape={y_test.shape}') #查看测试集的大小
print(f'y[:5]={y[:5]}') # 查看y的前5项数据
数据集信息如下,如,y[:5]=[9 0 0 3 0],第一张图片属于第10个类别,第二张图片属于第1个类别。
x.shape=(60000, 28, 28),y.shape=(60000,)#变量x中有60000张图片,
#每张图片的大小是28*28,变量y保存的是每张图片属于哪个分类。
x_test.shape=(10000, 28, 28),y_test.shape=(10000,)
y[:5]=[9 0 0 3 0]
我们通过打印y[:5]
来查看前五个标签。这里的标签是整数,表示图像对应的服装类别,比如0表示T恤,1表示裤子等。
图片信息绘制
# 数据集展示
import matplotlib.pyplot as plt
import numpy as np
# 每个类别的名称
class_names = ['Tshirt','Trouser','Pullover','Dress','Coat','Sandal','Shirt','Sneaker','Bag','Ankle boot']
# 绘制图像
for i in ra