
载入所需要的包
from tensorflow import keras
import pandas as pd
from sklearn.model_selection import train_test_split
读取数据集
kmnist = pd.read_csv('kmnist.csv')
分离数据与标签
X = kmnist.values[:, :-1]
y = kmnist['label'].values
数据归一化
X = X/255
分割训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=100, random_state=10, stratify=y)
转换数据为适合模型输入的大小
X_train = X_train.reshape(500, 28, 28, 1)
X_test = X_test.reshape(100, 28, 28, 1)
建立模型
model = keras.Sequential([
keras.layers.Conv2D(filters=32,
kernel_size=3*3,
strides=(1, 1),
padding='same',
activation='relu',
input_shape=(28, 28, 1)),
keras.layers.MaxPool2D(pool_size=(2, 2),
strides=(2, 2),
padding='valid'),
keras.layers.Conv2D(filters=64,
kernel_size=3*3,
strides=(1,1),
padding='SAME',
activation='relu'),
keras.layers.MaxPool2D(pool_size=(2, 2),
strides=(2, 2),
padding='VALID'),
keras.layers.Flatten(),
keras.layers.Dense(units=120,
activation='relu'),
keras.layers.Dense(units=10,
activation='softmax')])
创建会话
with tf.Session() as sess:
model.compile(loss='sparse_categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.fit(x=X_train, y=y_train, batch_size=20, epochs=5)
y_pred = model.predict_classes(x=X_test)
testing_score = model.evaluate(x=X_test, y=y_pred)[1]
print("模型在测试集上的准确率:",testing_score)
Epoch 1/5
20/500 [>.............................] - ETA: 9s - loss: 2.2966 - acc: 0.1000 60/500 [==>...........................] - ETA: 3s - loss: 2.3232 - acc: 0.1000 100/500 [=====>........................] - ETA: 2s - loss: 2.2911 - acc: 0.1600 140/500 [=======>......................] - ETA: 1s - loss: 2.2663 - acc: 0.1857 180/500 [====&#