tensorflow2.0(keras)--mnist数据集手写数字可视化实例

在自己初学mnist数据集的时候,想通过可视化的方式展现训练的准确率,在网上找了一大圈,也没找到合适的代码。这些代码对于大佬来说可能很简单,但对于初学者来说却是一个很好的参考案例。下面就自己在学习整理过程中找到的可视化代码给予展示,希望给那些刚入门的初学者一定的参考。
还是以最简单的mnist手写数字识别为例来展示训练结果的可视化。在训练过程中有训练准确率(accuracy)、验证准确率(val_accuracy)和测试准确率(test_accuracy)。如下图所示:
tensorflow2.0(keras)--mnist数据集手写数字可视化实例_第1张图片
我们要做的就是将这些日志信息以图像的形式展示出来。下面先放出完整代码。

#首先导入需要的包
import numpy 
import numpy as np
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense,Dropout,Flatten
from keras.layers.convolutional import Conv2D,MaxPooling2D
from keras.utils import np_utils
from matplotlib import pyplot as plt

#加载数据集并与处理数据
  #设置随机种子,其作用自己可以去网上找一下
seed = 7
numpy.random.seed(seed)
num_classes=10
  #加载数据
(x_train, y_train), (x_test, y_test) = mnist.load_data()
  #处理数据
x_train = x_train.reshape(x_train.shape[0],28,28,1).astype('float32')/255.0 #这里直接用的reshape函数给数据增加了一个维度,上篇文章当中是用的tf.expend_dims(x_train,-1)来增加维度的
x_test = x_test.reshape(x_test.shape[0],28,28,1).astype('float32')/255.0
y_train = np_utils.to_categorical(y_train,num_classes)
y_test = np_utils.to_categorical(y_test,num_classes)

#可以打印一下数据的张量形式
print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)

#定义模型
def baseline_model():
    model = Sequential()
    model.add(Conv2D(32,(5, 5), input_shape=(28, 28,1), activation='relu'))
    model.add(MaxPooling2D(pool_size=(2, 2)))
    model.add(Dropout(0.2))
    model.add(Flatten())
    model.add(Dense(128, activation='relu'))
    model.add(Dense(num_classes, activation='softmax'))
   #编译模型
    model.compile(loss='categorical_crossentropy', 
                  optimizer='adam', metrics=['accuracy'])
    return model
model = baseline_model()
model.summary()
#训练模型
history=model.fit(x_train, y_train, validation_data=(x_test, y_test),
          epochs=20, batch_size=800, verbose=1)
history = history.history
print(history.keys())
print(history['val_accuracy'])
print(history['accuracy'])

#评估模型
test_acc = model.evaluate(x_test, y_test, verbose=0)
print("the test_acc: %.2f%%" % (test_acc[1]))
#将训练结果可视化
plt.figure()
returns = history['val_accuracy']
plt.plot(np.arange(len(returns)), returns, label='val_acc')
plt.plot(np.arange(len(returns)), returns, 's')

returns = history['accuracy']
plt.plot(np.arange(len(returns)), returns, label='train_acc')
plt.plot(np.arange(len(returns)), returns, 's')

plt.plot([len(returns)-1],[test_acc[-1]], 'D', label='test_acc')

plt.legend()
plt.xlabel('epoch')
plt.ylabel('acc')

最后结果如下:tensorflow2.0(keras)--mnist数据集手写数字可视化实例_第2张图片
本篇文章到此结束,下次见。

你可能感兴趣的:(tensorflow2.0(keras)--mnist数据集手写数字可视化实例)