import tensorflow as tf
import keras
import matplotlib.pyplot as plt
from keras.datasets import mnist
from keras.utils import np_utils
num_classes = 10
img_rows,img_cols = 28,28
(X_train,Y_train),(X_test,Y_test) = mnist.load_data()
X_train = X_train.reshape(X_train.shape[0],img_rows,img_cols,1)
X_test = X_test.reshape(X_test.shape[0],img_rows,img_cols,1)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255
print('an example:',Y_train[480])
plt.matshow(X_train[480,:].reshape(28,28), cmap = 'binary')
plt.show()
Y_train = np_utils.to_categorical(Y_train,num_classes = 10)
Y_test = np_utils.to_categorical(Y_test,num_classes = 10)
print('X_train shape:',X_train.shape)
print('Y_train shape:',Y_train.shape)
print()
print(X_train.shape[0],"train samples")
print(X_test.shape[0],"test samples")
##
from keras.models import Sequential
from keras.layers import Dense,Dropout,Flatten
from keras.layers import Conv2D,MaxPooling2D
def creat_CNN1():
model = Sequential()
model.add(Conv2D(10, kernel_size=(4,4),
activation='relu',
input_shape = (28,28,1)))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(10, (5,5), activation='relu'))
model.add(Dropout(0.2))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(320, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(10, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer = tf.keras.optimizers.Adam(),
metrics=['accuracy'])
return model
model_CNN1 = creat_CNN1()
history = model_CNN1.fit(X_train, Y_train,
batch_size = 128, #批次大小
epochs=2, #训练次数
validation_data = (X_test, Y_test),)
score = model_CNN1.evaluate(X_test, Y_test, verbose=True) #评估模型得分
print()
print('Test loss:',score[0])
print('Test accuracy:',score[1])
plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.ylabel('model accuracy')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc = 'best')
plt.show()
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.ylabel('model loss')
plt.xlabel('epoch')
plt.legend(['train', 'test'], loc = 'best')
plt.show()
卷积-全连接
最新推荐文章于 2024-07-25 23:06:58 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)