import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
batch = 32 #要处理的样本数
model = tf.keras.Sequential([ #层的堆叠模型
keras.layers.Conv2D(6, 3), #将二维向量进行卷积
keras.layers.MaxPooling2D(pool_size=2, strides=2),
keras.layers.ReLU(),
keras.layers.Conv2D(16, 3),
keras.layers.MaxPooling2D(pool_size=2, strides=2),
keras.layers.ReLU(),
keras.layers.Flatten(), #多维的输入一维化
keras.layers.Dense(120, activation='relu'),
keras.layers.Dense(84, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
model.build(input_shape=(batch, 28, 28, 1))
model.compile(optimizer=keras.optimizers.Adam(),
loss=keras.losses.CategoricalCrossentropy(),
metrics=['accuracy'])
def preprocess(x, y):
x = tf.cast(x, dtype=tf.float32) / 255. #数据类型转换
x = tf.reshape(x, [-1, 28, 28, 1])
y = tf.one_hot(y, depth=10)
return x, y
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
train_db = tf.data.Dataset.from_tensor_slices((x_train, y_train))
train_db = train_db.shuffle(10000) #打乱
train_db = train_db.batch(128) #顺序读取
train_db = train_db.map(preprocess)
test_db = tf.data.Dataset.from_tensor_slices((x_test, y_test))
test_db = test_db.shuffle(10000)
test_db = test_db.batch(128)
test_db = test_db.map(preprocess)
model.fit(train_db, epochs=5)
model.evaluate(test_db)
预测结果:
1/79 [..............................] - ETA: 7s - loss: 0.0385 - accuracy: 0.9922
11/79 [===>..........................] - ETA: 0s - loss: 0.0482 - accuracy: 0.9865
21/79 [======>.......................] - ETA: 0s - loss: 0.0385 - accuracy: 0.9900
31/79 [==========>...................] - ETA: 0s - loss: 0.0396 - accuracy: 0.9889
40/79 [==============>...............] - ETA: 0s - loss: 0.0421 - accuracy: 0.9881
50/79 [=================>............] - ETA: 0s - loss: 0.0424 - accuracy: 0.9873
60/79 [=====================>........] - ETA: 0s - loss: 0.0449 - accuracy: 0.9865
70/79 [=========================>....] - ETA: 0s - loss: 0.0425 - accuracy: 0.9872
79/79 [==============================] - 1s 7ms/step - loss: 0.0411 - accuracy: 0.9872