搭建全连接网络训练mnist数据集

目录

    • 1. 导入相关的包
    • 2. 载入数据集
    • 3. 搭建4层全连接神经网络,除输入层以外,各层神经元个数分别为1000,300,64,10,激活函数自选
    • 4. 模型训练
    • 5. 模型测试
    • 6. 训练过程可视化

1. 导入相关的包

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers, optimizers, losses, datasets, Sequential
from tensorflow.keras.datasets import mnist
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten, Conv2D, MaxPooling2D, GlobalMaxPool2D
from tensorflow.keras.optimizers import RMSprop
import matplotlib.pyplot as plt
import numpy as np

2. 载入数据集

# 将数据集载入,x_train为训练集数据,y_train为训练集标签,x_test为测试集数据,y_test为测试集标签
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 打印查看数据
print('x_train.shape:' + str(x_train.shape))
print('y_train.shape:' + str(y_train.shape))
print('x_test.shape:' + str(x_test.shape))
print('y_test.shape:' + str(y_test.shape))

3. 搭建4层全连接神经网络,除输入层以外,各层神经元个数分别为1000,300,64,10,激活函数自选

# 将数据集进行转换为一维,数值归到0-1之间
x_train = x_train.reshape(60000, 784).astype('float32') /255
x_test = x_test.reshape(10000, 784).astype('float32') /255
# 模型建立
inputs = tf.keras.Input(shape=(784,), name='img')
# 搭建4层全连接神经网络
h1 = layers.Dense(1000, activation='relu')(inputs)
h2 = layers.Dense(300, activation='relu')(h1)
h3 = layers.Dense(64, activation='relu')(h2)
outputs = layers.Dense(10, activation='softmax')(h3)
model = tf.keras.Model(inputs=inputs, outputs=outputs, name='mnist_model')

model.summary()
keras.utils.plot_model(model, 'mnist_model.png')
keras.utils.plot_model(model, 'model_info.png', show_shapes=True)

搭建全连接网络训练mnist数据集_第1张图片

4. 模型训练

# 模型训练
model.compile(optimizer=keras.optimizers.RMSprop(),
             loss='sparse_categorical_crossentropy',
             metrics=['accuracy'])

history = model.fit(x_train, y_train, batch_size=64, epochs=10, validation_split=0.2)

搭建全连接网络训练mnist数据集_第2张图片

5. 模型测试

# 模型测试
test_scores = model.evaluate(x_test, y_test, verbose=1)
print('test loss:', test_scores[0])
print('test accuracy:', test_scores[1]) # 识别准确率
keras.utils.plot_model(model, 'model_info.png', show_shapes=True)

在这里插入图片描述

6. 训练过程可视化

# 绘制全连接神经网络训练过程中训练集和测试集合的准确率值
plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.title('Model accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
plt.show()

搭建全连接网络训练mnist数据集_第3张图片

# 绘制全连接神经网络训练过程中训练集和测试集合的损失值
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Test'], loc='upper left')
plt.show()

搭建全连接网络训练mnist数据集_第4张图片

你可能感兴趣的:(神经网络,深度学习,python,tensorflow,人工智能,神经网络)