1.基础版
import tensorflow as tf
from tensorflow.keras import datasets,layers,models
import matplotlib.pyplot as plt
print("1.开始加载图片")
(train_images,train_labels),(test_images,test_labels) = datasets.cifar10.load_data()
print("2.图片加载完毕,开始数据处理")
train_images,test_images = train_images/255.0,test_images/255.0
class_names = ['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i],cmap=plt.cm.binary)
plt.xlabel(class_names[train_labels[i][0]])
plt.show()
print("图片验证完毕,开始构造CNN")
model =models.Sequential()
model.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(32,32,3)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64,(3,3),activation='relu'))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64,(3,3),activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(10))
print("4.我们声明的CNN结构是:")
model.summary()
print("开始编译并训练模型...")
model.compile(optimizer='adam',loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
history = model.fit(train_images,train_labels,epochs=10,
validation_data=(test_images,test_labels))
plt.plot(history.history['accuracy'],label='accuracy')
plt.plot(history.history['val_accuracy'],label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0.5,1])
plt.legend(loc='lower right')
plt.show()
test_loss,test_acc = model.evaluate(test_images,test_labels,verbose=2)
print("6.test_accuracy=",test_acc)
1.开始加载图片
2.图片加载完毕,开始数据处理
图片验证完毕,开始构造CNN
4.我们声明的CNN结构是:
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param
=================================================================
conv2d (Conv2D) (None, 30, 30, 32) 896
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 15, 15, 32) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 13, 13, 64) 18496
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 4, 4, 64) 36928
_________________________________________________________________
flatten (Flatten) (None, 1024) 0
_________________________________________________________________
dense (Dense) (None, 64) 65600
_________________________________________________________________
dense_1 (Dense) (None, 10) 650
=================================================================
Total params: 122,570
Trainable params: 122,570
Non-trainable params: 0
_________________________________________________________________
开始编译并训练模型...
Epoch 1/10
1563/1563 [==============================] - 31s 20ms/step - loss: 1.5515 - accuracy: 0.4340 - val_loss: 1.3051 - val_accuracy: 0.5303
Epoch 2/10
1563/1563 [==============================] - 30s 19ms/step - loss: 1.1698 - accuracy: 0.5846 - val_loss: 1.1116 - val_accuracy: 0.6044
Epoch 3/10
1563/1563 [==============================] - 30s 19ms/step - loss: 1.0225 - accuracy: 0.6424 - val_loss: 1.0611 - val_accuracy: 0.6198
Epoch 4/10
1563/1563 [==============================] - 30s 19ms/step - loss: 0.9334 - accuracy: 0.6736 - val_loss: 0.9452 - val_accuracy: 0.6665
Epoch 5/10
1563/1563 [==============================] - 30s 19ms/step - loss: 0.8679 - accuracy: 0.6957 - val_loss: 0.9357 - val_accuracy: 0.6683
Epoch 6/10
1563/1563 [==============================] - 31s 20ms/step - loss: 0.8142 - accuracy: 0.7165 - val_loss: 0.9081 - val_accuracy: 0.6839
Epoch 7/10
1563/1563 [==============================] - 30s 20ms/step - loss: 0.7684 - accuracy: 0.7317 - val_loss: 0.8869 - val_accuracy: 0.6905
Epoch 8/10
1563/1563 [==============================] - 31s 20ms/step - loss: 0.7299 - accuracy: 0.7456 - val_loss: 0.8902 - val_accuracy: 0.6911
Epoch 9/10
1563/1563 [==============================] - 32s 20ms/step - loss: 0.6939 - accuracy: 0.7577 - val_loss: 0.8470 - val_accuracy: 0.7138
Epoch 10/10
1563/1563 [==============================] - 32s 21ms/step - loss: 0.6631 - accuracy: 0.7661 - val_loss: 0.8688 - val_accuracy: 0.7071
313/313 - 1s - loss: 0.8688 - accuracy: 0.7071
6.test_accuracy= 0.707099974155426
Process finished with exit code 0
原文