面向对象实现数字识别

1.导入依赖包

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.layers import Flatten, Dense
import numpy as np
import time

2.加载数据集

(train_x, train_y), (test_x, test_y) = keras.datasets.mnist.load_data()

3.图片归一化

train_x, test_x = train_x / 255.0, test_x / 255.0

4.创建模型

class Mnist(tf.keras.Model):

    def __init__(self):
        super(Mnist, self).__init__()
        self.dense1 = Flatten(input_shape=(28, 28))
        self.dense2 = Dense(100, activation='relu')
        self.dense3 = Dense(10, activation='softmax')

    def call(self, inputs):
        x = self.dense1(inputs)
        x = self.dense2(x)
        x = self.dense3(x)
        return x


model = Mnist()

5.指定优化函数、损失函数、评价指标

model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(),
              metrics=['accuracy'])

6.记录模型开始训练时间

start_time = time.time()

7.训练模型

model.fit(train_x, train_y, batch_size=64, epochs=10, verbose=1, validation_freq=1)

8.记录模型训练完成时间

end_time = time.time()

9.用测试集验证模型效果

test_loss, test_acc = model.evaluate(test_x, test_y, verbose=1)
predict = model.predict(test_x)
print('time:', end_time - start_time)
print(test_acc)
print('预测值:', np.argmax(predict[0]))
print('真实值:', test_y[0])

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2621041184@qq.com