python神經(jīng)網(wǎng)絡學習使用Keras進行簡單分類
學習前言
上一篇講了如何構(gòu)建回歸算法,這一次將怎么進行簡單分類。
Keras中分類的重要函數(shù)
1、np_utils.to_categorical
np_utils.to_categorical用于將標簽轉(zhuǎn)化為形如(nb_samples, nb_classes)的二值序列。
假設num_classes = 10。
如將[1,2,3,……4]轉(zhuǎn)化成:
[[0,1,0,0,0,0,0,0]
[0,0,1,0,0,0,0,0]
[0,0,0,1,0,0,0,0]
……
[0,0,0,0,1,0,0,0]]
這樣的形態(tài)。
如將Y_train轉(zhuǎn)化為二值序列,可以用如下方式:
Y_train = np_utils.to_categorical(Y_train,num_classes= 10)
2、Activation
Activation是激活函數(shù),一般在每一層的輸出使用。
當我們使用Sequential模型構(gòu)建函數(shù)的時候,只需要在每一層Dense后面添加Activation就可以了。
Sequential函數(shù)也支持直接在參數(shù)中完成所有層的構(gòu)建,使用方法如下。
model = Sequential([ Dense(32,input_dim = 784), Activation("relu"), Dense(10), Activation("softmax") ] )
其中兩次Activation分別使用了relu函數(shù)和softmax函數(shù)。
3、metrics=[‘accuracy’]
在model.compile中添加metrics=[‘accuracy’]表示需要計算分類精確度,具體使用方式如下:
model.compile( loss = 'categorical_crossentropy', optimizer = rmsprop, metrics=['accuracy'] )
全部代碼
這是一個簡單的僅含有一個隱含層的神經(jīng)網(wǎng)絡,用于完成手寫體識別。在本例中,使用的優(yōu)化器是RMSprop,具體可以使用的優(yōu)化器可以參照Keras中文文檔。
import numpy as np from keras.models import Sequential from keras.layers import Dense,Activation ## 全連接層 from keras.datasets import mnist from keras.utils import np_utils from keras.optimizers import RMSprop # 獲取訓練集 (X_train,Y_train),(X_test,Y_test) = mnist.load_data() # 首先進行標準化 X_train = X_train.reshape(X_train.shape[0],-1)/255 X_test = X_test.reshape(X_test.shape[0],-1)/255 # 計算categorical_crossentropy需要對分類結(jié)果進行categorical # 即需要將標簽轉(zhuǎn)化為形如(nb_samples, nb_classes)的二值序列 Y_train = np_utils.to_categorical(Y_train,num_classes= 10) Y_test = np_utils.to_categorical(Y_test,num_classes= 10) # 構(gòu)建模型 model = Sequential([ Dense(32,input_dim = 784), Activation("relu"), Dense(10), Activation("softmax") ] ) rmsprop = RMSprop(lr = 0.001,rho = 0.9,epsilon = 1e-08,decay = 0) ## compile model.compile(loss = 'categorical_crossentropy',optimizer = rmsprop,metrics=['accuracy']) print("\ntraining") cost = model.fit(X_train,Y_train,nb_epoch = 2,batch_size = 32) print("\nTest") cost,accuracy = model.evaluate(X_test,Y_test) ## W,b = model.layers[0].get_weights() print("accuracy:",accuracy)
實驗結(jié)果為:
Epoch 1/2 60000/60000 [==============================] - 12s 202us/step - loss: 0.3512 - acc: 0.9022 Epoch 2/2 60000/60000 [==============================] - 11s 183us/step - loss: 0.2037 - acc: 0.9419 Test 10000/10000 [==============================] - 1s 108us/step accuracy: 0.9464
以上就是python神經(jīng)網(wǎng)絡學習使用Keras進行簡單分類的詳細內(nèi)容,更多關于python神經(jīng)網(wǎng)絡Keras分類的資料請關注腳本之家其它相關文章!
相關文章
關于TensorBoard可視化不顯示數(shù)據(jù)問題No scalar data was&nbs
這篇文章主要介紹了如何解決TensorBoard可視化不顯示數(shù)據(jù)問題No scalar data was found,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09Python實現(xiàn)校園網(wǎng)自動登錄的腳本分享
這篇文章主要和大家分享一個Python腳本,leukemia實現(xiàn)校園網(wǎng)自動登錄功能。文中的示例代碼簡潔易懂,快跟隨小編一起動手嘗試一下吧2022-06-06