1. 程式人生 > 程式設計 >使用Keras畫神經網路準確性圖教程

使用Keras畫神經網路準確性圖教程

1.在搭建網路開始時,會呼叫到 keras.models的Sequential()方法,返回一個model引數表示模型

2.model引數裡面有個fit()方法,用於把訓練集傳進網路。fit()返回一個引數,該引數包含訓練集和驗證集的準確性acc和錯誤值loss,用這些資料畫成圖表即可。

如:

history=model.fit(x_train,y_train,batch_size=32,epochs=5,validation_split=0.25) #獲取資料
 
#########畫圖
acc = history.history['acc']  #獲取訓練集準確性資料
val_acc = history.history['val_acc'] #獲取驗證集準確性資料
loss = history.history['loss']   #獲取訓練集錯誤值資料
val_loss = history.history['val_loss'] #獲取驗證集錯誤值資料
epochs = range(1,len(acc)+1)
plt.plot(epochs,acc,'bo',label='Trainning acc')  #以epochs為橫座標,以訓練集準確性為縱座標
plt.plot(epochs,val_acc,'b',label='Vaildation acc') #以epochs為橫座標,以驗證集準確性為縱座標
plt.legend() #繪製圖例,即標明圖中的線段代表何種含義
 
plt.figure() #建立一個新的圖表
plt.plot(epochs,loss,label='Trainning loss')
plt.plot(epochs,val_loss,label='Vaildation loss')
plt.legend() ##繪製圖例,即標明圖中的線段代表何種含義
 
plt.show() #顯示所有圖表

得到效果:

使用Keras畫神經網路準確性圖教程

完整程式碼:

import keras
from keras.datasets import mnist
from keras.layers import Conv2D,MaxPool2D,Dense,Flatten,Dropout
from keras.models import Sequential
import matplotlib.pyplot as plt
 
(x_train,y_train),(x_test,y_test) = mnist.load_data()
x_train = x_train.reshape(-1,28,1)
x_test = x_test.reshape(-1,1)
x_train = x_train / 255.
x_test = x_test / 255.
 
y_train = keras.utils.to_categorical(y_train)
y_test = keras.utils.to_categorical(y_test)
 
model = Sequential()
model.add(Conv2D(20,(5,5),strides=(1,1),input_shape=(28,padding='valid',activation='relu',kernel_initializer='uniform'))
model.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))
model.add(Conv2D(64,2)))
model.add(Flatten())
model.add(Dense(500,activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10,activation='softmax'))
model.compile('sgd',loss='categorical_crossentropy',metrics=['accuracy']) #隨機梯度下降
 
history=model.fit(x_train,label='Vaildation loss')
plt.legend() ##繪製圖例,即標明圖中的線段代表何種含義

以上這篇使用Keras畫神經網路準確性圖教程就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。