1. 程式人生 > >kears搭建神經網路分類mnist資料集

kears搭建神經網路分類mnist資料集

from keras.datasets import mnist
from keras import models
from keras import layers
from keras.utils import to_categorical
from keras.optimizers import RMSprop
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 先看看資料集大小和部分資料
print(train_images.shape)
print(train_labels)
print(test_images.shape)
print(test_labels)

# 網路架構
network = models.Sequential()
'''
網路包含 2 個 Dense 層,它們是密集連線(也叫全連線)的神經層。第二層(也
是最後一層)是一個 10 路 softmax 層,它將返回一個由 10 個概率值(總和為 1)組成的陣列。
每個概率值表示當前數字影象屬於 10 個數字類別中某一個的概率。
'''
network.add(layers.Dense(units=512, activation='relu', input_shape=(28*28, )))
# 只有第一層需要指明資料大小,後面的自動根據上一層返回資料大小自動推斷
network.add(layers.Dense(units=10, activation='softmax'))

# 編譯步驟
network.compile(optimizer=RMSprop(lr=0.001), loss='categorical_crossentropy', metrics=['accuracy'])

# 簡單的資料預處理(改變大小和歸一化)
train_images = train_images.reshape((60000, 28*28)).astype('float32')/255
test_images = test_images.reshape((10000, 28*28)).astype('float32')/255

# 準備標籤
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

# 訓練網路,用fit函式, epochs表示訓練多少個回合, batch_size表示每次訓練給多大的資料
network.fit(train_images, train_labels, epochs=10, batch_size=128)

# 來在測試集上測試一下模型的效能吧
test_loss, test_accuracy = network.evaluate(test_images, test_labels)
print("test_loss:", test_loss, "    test_accuracy:", test_accuracy)

執行結果

在這裡插入圖片描述