Tensorflow2.0–Basic_CNN
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
print(tf.__version__)#
# mist数据集
1.构造数据
import matplotlib.pyplot as plt
plt.imshow(x_train[1])
plt.show()
x_train = x_train.reshape((-1,28,28,1))
x_test = x_test.reshape((-1,28,28,1))
2.构造网络
model = keras.Sequential()
# 卷积
model.add(layers.Conv2D(input_shape=(x_train.shape[1], x_train.shape[2], x_train.shape[3]),
filters=32, kernel_size=(3,3), strides=(1,1), padding='valid',
activation='relu'))
# 池化
model.add(layers.MaxPool2D(pool_size=(2,2)))#最大池化
# 全连接
model.add(layers.Flatten())
model.add(layers.Dense(32, activation='relu'))
# 分类层
model.add(layers.Dense(10, activation='softmax'))
3.模型配置
model.compile(optimizer=keras.optimizers.Adam(),
# loss=keras.losses.CategoricalCrossentropy(), # 需要使用to_categorical
loss=keras.losses.SparseCategoricalCrossentropy(),
metrics=['accuracy'])
model.summary()
4.模型训练
history = model.fit(x_train, y_train, batch_size=64, epochs=5, validation_split=0.1)
plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.legend(['training', 'valivation'], loc='upper left')
plt.show()
res = model.evaluate(x_test, y_test)#result