記錄keras 一次 mnist例子

先代碼:註釋都有


#導入包

import numpy as np
from keras.datasets import mnist
from keras.models import Sequential,Model
from keras.layers.core import Dense,Activation,Dropout

import matplotlib.pyplot as plt
import matplotlib.image as processimage
from keras.utils import np_utils
from pickletools import optimize


#加載數據集 ,兩個元組接受
(xTrain,yTrain),(xTest,yTest) = mnist.load_data();

#打印樣本的數量
#print(xTrain.shape,yTrain.shape);
#print(xTest.shape,yTest.shape)

#準備數據
#reshape 格式  因爲灰色圖片 是28 *28   彩色的話 是28*28*3 RGB
#全連接層 做數據量不變,維度變成1
xTrain = xTrain.reshape(60000,784);
xTest = xTest.reshape(10000,784);

#設置成小數浮點型   astype -> set as type into 轉換格式
xTrain = xTrain.astype("float32");
xTest = xTest.astype("float32")

#歸一化
xTrain = xTrain/255;
xTest = xTest/255;

#超參數
batchSize = 1024  #一次訓練多少個數據 
nbClass = 10  # 這裏是分多少類
epochs = 30 # 訓練的次數

#把分類變成vectors [0000000100]
yTest =np_utils.to_categorical(yTest, nbClass);  #LABLE
yTrain = np_utils.to_categorical(yTrain, nbClass);


#開始
model = Sequential();

#第一個網絡 Dense 全連接
model.add(Dense(512,input_shape=(784,)));   #512 給下一層的個數, 第一層接受 784 必須要有,
model.add(Activation('relu')) #激活函數
model.add(Dropout(0.2)); #丟掉百分之20

#第二層
model.add(Dense(256));
model.add(Activation('relu'));
model.add(Dropout(0.2));

#第三層
model.add(Dense(128));
model.add(Activation('relu'));
model.add(Dropout(0.2));

#第四層
model.add(Dense(10));
model.add(Activation('softmax'));   #用於分類的 激活函數


#編譯
model.compile(
    #損失函數
    loss = 'categorical_crossentropy',
    #優化函數
    optimizer='rmsprop',
    #矩陣要求
    metrics=['accuracy'],
    );
#啓動網絡訓練  參數1:訓練的數據,2:訓練的標籤.3一次讀取多少數據,4訓練多少次,5,可以檢測測試數據#validation_data=(xTest,yTest)
training = model.fit(
    xTrain,
    yTrain,
    batch_size=batchSize,
    epochs =epochs,
    validation_data=(xTest,yTest)
    );

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章