kears搭建神經網路分類mnist資料集
阿新 • • 發佈:2018-11-07
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)