LeNet-5网络如下:
#导入需要的包
import tensorflow as tf
from tensorflow import keras
#定义网络模型
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='relu')
])
model.build(input_shape=(batch,28,28,1))
model.summary()
#训练
model.compile(optimizer=keras.optimizers.Adam(),
loss=keras.losses.CategoricalCrossentropy(),
metrics=['accuracy'])
#输入数据
(x_train, y_train), (x_test, y_test)=tf.keras.datasets.mnist.load_data()
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)
训练结果: