網(wǎng)站首頁 編程語言 正文
python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行簡(jiǎn)單分類_python
作者:Bubbliiiing ? 更新時(shí)間: 2022-06-28 編程語言學(xué)習(xí)前言
上一篇講了如何構(gòu)建回歸算法,這一次將怎么進(jìn)行簡(jiǎ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=[‘a(chǎn)ccuracy’]
在model.compile中添加metrics=[‘a(chǎn)ccuracy’]表示需要計(jì)算分類精確度,具體使用方式如下:
model.compile(
loss = 'categorical_crossentropy',
optimizer = rmsprop,
metrics=['accuracy']
)
全部代碼
這是一個(gè)簡(jiǎn)單的僅含有一個(gè)隱含層的神經(jīng)網(wǎng)絡(luò),用于完成手寫體識(shí)別。在本例中,使用的優(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需要對(duì)分類結(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
原文鏈接:https://blog.csdn.net/weixin_44791964/article/details/101170430
相關(guān)推薦
- 2022-04-28 web.xml中Maven占位符不生效問題記錄分析_web2.0
- 2023-01-20 Python輸入整數(shù)進(jìn)行排序方式_python
- 2022-04-28 C#中Razor模板引擎簡(jiǎn)單使用_C#教程
- 2022-02-12 OWASP列舉的Web應(yīng)用程序十大安全漏洞 - SQL注入
- 2022-12-07 org.apache.tomcat.util.http.fileupload.IOUtils報(bào)錯(cuò)對(duì)應(yīng)
- 2022-01-30 composer 安裝包,提示找不到對(duì)應(yīng)的包,很奇怪的問題,備忘
- 2022-03-14 C語言撲克牌游戲示例(c語言紙牌游戲)
- 2022-03-14 關(guān)于VS+QT5應(yīng)用程序換圖標(biāo)的解決方案_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支