下面以经典的分类任务:MNIST手写数字识别,采用全连接层神经网络
MNIST数据集是一个手写体的数字图片集,它包含有训练集和测试集,由250个人手写的数字构成。训练集包含60000个样本,测试集包含10000个样本。每个样本包括一张图片和一个标签。每张图片由28×28个像素点构成,每个像素点用1个灰度值表示。标签是与图片对应的0到9的数字。
随着训练损失值逐渐降低 精确度上升
部分代码如下
import numpy as np
import tensorflow.keras as ka
import datetime
np.random.seed(0)
(X_train, y_train), (X_val, y_val) = ka.datasets.mnist.load_data("D:\datasets\MNIST_Data\mnist.npz") # 加载数据集,并分成训练集和验证集
num_pixels = X_train.shape[1] * X_train.shape[2] # 每幅图片的像素数为784
# 将二维的数组拉成一维的向量
X_train = X_train.reshape(X_train.shape[0], num_pixels).astype('float32')
X_val = X_val.reshape(X_val.shape[0], num_pixels).astype('float32')
# 归一化
X_train = X_train / 255
X_val = X_val / 255
y_train = ka.utils.to_categorical(y_train) # 转化为独热编码
y_val = ka.utils.to_categorical(y_val)
num_classes = y_val.shape[1] # 10
# 多层全连接神经网络模型
model = ka.Sequential([
ka.layers.Dense(num_pixels, input_shape=(num_pixels,), kernel_initializer='normal', activation='sigmoid'),
ka.layers.Dense(784, kernel_initializer='normal', activation='sigmoid'),
ka.layers.Dense(num_classes, kernel_initializer='normal', activation='sigmoid')
])
model.summary()
#model.compile(loss='mse', optimizer='sgd',