python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行簡單分類
學(xué)習(xí)前言
上一篇講了如何構(gòu)建回歸算法,這一次將怎么進(jìn)行簡單分類。
Keras中分類的重要函數(shù)
1、np_utils.to_categorical
np_utils.to_categorical用于將標(biāo)簽轉(zhuǎn)化為形如(nb_samples, nb_classes)的二值序列。
假設(shè)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ù),一般在每一層的輸出使用。
當(dāng)我們使用Sequential模型構(gòu)建函數(shù)的時(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’]表示需要計(jì)算分類精確度,具體使用方式如下:
model.compile( loss = 'categorical_crossentropy', optimizer = rmsprop, metrics=['accuracy'] )
全部代碼
這是一個(gè)簡單的僅含有一個(gè)隱含層的神經(jīng)網(wǎng)絡(luò),用于完成手寫體識別。在本例中,使用的優(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ùn)練集 (X_train,Y_train),(X_test,Y_test) = mnist.load_data() # 首先進(jìn)行標(biāo)準(zhǔn)化 X_train = X_train.reshape(X_train.shape[0],-1)/255 X_test = X_test.reshape(X_test.shape[0],-1)/255 # 計(jì)算categorical_crossentropy需要對分類結(jié)果進(jìn)行categorical # 即需要將標(biāo)簽轉(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)
實(shí)驗(yàn)結(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)絡(luò)學(xué)習(xí)使用Keras進(jìn)行簡單分類的詳細(xì)內(nèi)容,更多關(guān)于python神經(jīng)網(wǎng)絡(luò)Keras分類的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python3中最常用的5種線程鎖實(shí)例總結(jié)
python3線程中鎖機(jī)制還是很重要的知識點(diǎn),如果大家不清楚鎖機(jī)制的話,那就一定要好好看下這篇文章,這篇文章主要給大家總結(jié)介紹了光宇Python3中最常用的5種線程鎖,需要的朋友可以參考下2021-07-07PyTorch 對應(yīng)點(diǎn)相乘、矩陣相乘實(shí)例
今天小編就為大家分享一篇PyTorch 對應(yīng)點(diǎn)相乘、矩陣相乘實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12關(guān)于TensorBoard可視化不顯示數(shù)據(jù)問題No scalar data was&nbs
這篇文章主要介紹了如何解決TensorBoard可視化不顯示數(shù)據(jù)問題No scalar data was found,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09Matplotlib繪圖基礎(chǔ)之文本標(biāo)注詳解
Matplotlib?文本和標(biāo)注可以為數(shù)據(jù)和圖形之間提供額外的信息,幫助觀察者更好地理解數(shù)據(jù)和圖形的含義,下面就將通過示例依次介紹文本和標(biāo)注的常用使用方式2023-08-08Python實(shí)現(xiàn)校園網(wǎng)自動登錄的腳本分享
這篇文章主要和大家分享一個(gè)Python腳本,leukemia實(shí)現(xiàn)校園網(wǎng)自動登錄功能。文中的示例代碼簡潔易懂,快跟隨小編一起動手嘗試一下吧2022-06-06