校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > python 使用Tensorflow訓練BP神經(jīng)網(wǎng)絡實現(xiàn)鳶尾花分類

python 使用Tensorflow訓練BP神經(jīng)網(wǎng)絡實現(xiàn)鳶尾花分類

熱門標簽:廣告地圖標注app 激戰(zhàn)2地圖標注 陜西金融外呼系統(tǒng) 公司電話機器人 海南400電話如何申請 哈爾濱ai外呼系統(tǒng)定制 白銀外呼系統(tǒng) 騰訊外呼線路 唐山智能外呼系統(tǒng)一般多少錢

Hello,兄弟們,開始搞深度學習了,今天出第一篇博客,小白一枚,如果發(fā)現(xiàn)錯誤請及時指正,萬分感謝。

使用軟件

Python 3.8,Tensorflow2.0

問題描述

鳶尾花主要分為狗尾草鳶尾(0)、雜色鳶尾(1)、弗吉尼亞鳶尾(2)。
人們發(fā)現(xiàn)通過計算鳶尾花的花萼長、花萼寬、花瓣長、花瓣寬可以將鳶尾花分類。
所以只要給出足夠多的鳶尾花花萼、花瓣數(shù)據(jù),以及對應種類,使用合適的神經(jīng)網(wǎng)絡訓練,就可以實現(xiàn)鳶尾花分類。

搭建神經(jīng)網(wǎng)絡

輸入數(shù)據(jù)是花萼長、花萼寬、花瓣長、花瓣寬,是n行四列的矩陣。
而輸出的是每個種類的概率,是n行三列的矩陣。
我們采用BP神經(jīng)網(wǎng)絡,設X為輸入數(shù)據(jù),Y為輸出數(shù)據(jù),W為權重,B偏置。有

y=x∗w+b

因為x為n行四列的矩陣,y為n行三列的矩陣,所以w必須為四行三列的矩陣,每個神經(jīng)元對應一個b,所以b為一行三列的的矩陣。
神經(jīng)網(wǎng)絡如下圖。

所以,只要找到合適的w和b,就能準確判斷鳶尾花的種類。
下面就開始對這兩個參數(shù)進行訓練。

訓練參數(shù)

損失函數(shù)

損失函數(shù)表達的是預測值(y*)和真實值(y)的差距,我們采用均方誤差公式作為損失函數(shù)。

損失函數(shù)值越小,說明預測值和真實值越接近,w和b就越合適。
如果人來一組一組試,那肯定是不行的。所以我們采用梯度下降算法來找到損失函數(shù)最小值。
梯度:對函數(shù)求偏導的向量。梯度下降的方向就是函數(shù)減少的方向。

其中a為學習率,即梯度下降的步長,如果a太大,就可能錯過最優(yōu)值,如果a太小,則就需要更多步才能找到最優(yōu)值。所以選擇合適的學習率很關鍵。

參數(shù)優(yōu)化

通過反向傳播來優(yōu)化參數(shù)。
反向傳播:從后向前,逐層求損失函數(shù)對每層神經(jīng)元參數(shù)的偏導數(shù),迭代更新所有參數(shù)。
比如

可以看到w會逐漸趨向于loss的最小值0。
以上就是我們訓練的全部關鍵點。

代碼

數(shù)據(jù)集

我們使用sklearn包提供的鳶尾花數(shù)據(jù)集。共150組數(shù)據(jù)。
打亂保證數(shù)據(jù)的隨機性,取前120個為訓練集,后30個為測試集。

# 導入數(shù)據(jù),分別為輸入特征和標簽
x_data = datasets.load_iris().data ## 存花萼、花瓣特征數(shù)據(jù)
y_data = datasets.load_iris().target # 存對應種類
# 隨機打亂數(shù)據(jù)(因為原始數(shù)據(jù)是順序的,順序不打亂會影響準確率)
# seed: 隨機數(shù)種子,是一個整數(shù),當設置之后,每次生成的隨機數(shù)都一樣(為方便教學,以保每位同學結果一致)
np.random.seed(116)  # 使用相同的seed,保證輸入特征和標簽一一對應
np.random.shuffle(x_data)
np.random.seed(116)
np.random.shuffle(y_data)
tf.random.set_seed(116)
# 將打亂后的數(shù)據(jù)集分割為訓練集和測試集,訓練集為前120行,測試集為后30行
x_train = x_data[:-30]
y_train = y_data[:-30]
x_test = x_data[-30:]
y_test = y_data[-30:]
# 轉換x的數(shù)據(jù)類型,否則后面矩陣相乘時會因數(shù)據(jù)類型不一致報錯
x_train = tf.cast(x_train, tf.float32)
x_test = tf.cast(x_test, tf.float32)
# from_tensor_slices函數(shù)使輸入特征和標簽值一一對應。(把數(shù)據(jù)集分批次,每個批次batch組數(shù)據(jù))
train_db = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(32)
test_db = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32)

參數(shù)

# 生成神經(jīng)網(wǎng)絡的參數(shù),4個輸入特征故,輸入層為4個輸入節(jié)點;因為3分類,故輸出層為3個神經(jīng)元
# 用tf.Variable()標記參數(shù)可訓練
w1 = tf.Variable(tf.random.truncated_normal([4, 3], stddev=0.1)) # 四行三列,方差為0.1
b1 = tf.Variable(tf.random.truncated_normal([3], stddev=0.1)) # 一行三列,方差為0.1

訓練

a = 0.1  # 學習率為0.1
epoch = 500  # 循環(huán)500輪
# 訓練部分
for epoch in range(epoch):  # 數(shù)據(jù)集級別的循環(huán),每個epoch循環(huán)一次數(shù)據(jù)集
    for step, (x_train, y_train) in enumerate(train_db):  # batch級別的循環(huán) ,每個step循環(huán)一個batch
        with tf.GradientTape() as tape:  # with結構記錄梯度信息
            y = tf.matmul(x_train, w1) + b1  # 神經(jīng)網(wǎng)絡乘加運算
            y = tf.nn.softmax(y)  # 使輸出y符合概率分布
            y_ = tf.one_hot(y_train, depth=3)  # 將標簽值轉換為獨熱碼格式,方便計算loss
            loss = tf.reduce_mean(tf.square(y_ - y))  # 采用均方誤差損失函數(shù)mse = mean(sum(y-y*)^2)
        # 計算loss對w, b的梯度
        grads = tape.gradient(loss, [w1, b1])
        # 實現(xiàn)梯度更新 w1 = w1 - lr * w1_grad    b = b - lr * b_grad
        w1.assign_sub(a * grads[0])  # 參數(shù)w1自更新
        b1.assign_sub(a * grads[1])  # 參數(shù)b自更新

測試

# 測試部分
total_correct, total_number = 0, 0
for x_test, y_test in test_db:
    # 前向傳播求概率
    y = tf.matmul(x_test, w1) + b1
    y = tf.nn.softmax(y)
    predict = tf.argmax(y, axis=1)  # 返回y中最大值的索引,即預測的分類
    # 將predict轉換為y_test的數(shù)據(jù)類型
    predict = tf.cast(predict, dtype=y_test.dtype)
    # 若分類正確,則correct=1,否則為0,將bool型的結果轉換為int型
    correct = tf.cast(tf.equal(predict, y_test), dtype=tf.int32)
    # 將每個batch的correct數(shù)加起來
    correct = tf.reduce_sum(correct)
    # 將所有batch中的correct數(shù)加起來
    total_correct += int(correct)
    # total_number為測試的總樣本數(shù),也就是x_test的行數(shù),shape[0]返回變量的行數(shù)
    total_number += x_test.shape[0]
# 總的準確率等于total_correct/total_number
acc = total_correct / total_number
print("測試準確率 = %.2f %%" % (acc * 100.0))
my_test = np.array([[5.9, 3.0, 5.1, 1.8]])
print("輸入 5.9  3.0  5.1  1.8")
my_test = tf.convert_to_tensor(my_test)
my_test = tf.cast(my_test, tf.float32)
y = tf.matmul(my_test, w1) + b1
y = tf.nn.softmax(y)
species = {0: "狗尾鳶尾", 1: "雜色鳶尾", 2: "弗吉尼亞鳶尾"}
predict = np.array(tf.argmax(y, axis=1))[0]  # 返回y中最大值的索引,即預測的分類
print("該鳶尾花為:" + species.get(predict))

結果:

結語

以上就是全部內容,鳶尾花分類作為經(jīng)典案例,應該重點掌握理解。有一起學習的伙伴可以把想法打在評論區(qū),大家多多交流,我也會及時回復的!

以上就是python 使用Tensorflow訓練BP神經(jīng)網(wǎng)絡實現(xiàn)鳶尾花分類的詳細內容,更多關于python 訓練BP神經(jīng)網(wǎng)絡實現(xiàn)鳶尾花分類的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 基于Tensorflow搭建一個神經(jīng)網(wǎng)絡的實現(xiàn)
  • tensorflow2.0實現(xiàn)復雜神經(jīng)網(wǎng)絡(多輸入多輸出nn,Resnet)
  • tensorflow之自定義神經(jīng)網(wǎng)絡層實例
  • 使用TensorFlow搭建一個全連接神經(jīng)網(wǎng)絡教程
  • python之tensorflow手把手實例講解貓狗識別實現(xiàn)

標簽:益陽 惠州 常德 黑龍江 四川 上海 鷹潭 黔西

巨人網(wǎng)絡通訊聲明:本文標題《python 使用Tensorflow訓練BP神經(jīng)網(wǎng)絡實現(xiàn)鳶尾花分類》,本文關鍵詞  python,使用,Tensorflow,訓練,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《python 使用Tensorflow訓練BP神經(jīng)網(wǎng)絡實現(xiàn)鳶尾花分類》相關的同類信息!
  • 本頁收集關于python 使用Tensorflow訓練BP神經(jīng)網(wǎng)絡實現(xiàn)鳶尾花分類的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    日韩精品一区二区三区四区 | 国产在线视视频有精品| 国产激情偷乱视频一区二区三区| 色综合久久久久综合99| 精品久久久久香蕉网| 国产精品国产三级国产a| 紧缚奴在线一区二区三区| 欧美日韩电影一区| 亚洲一区在线视频| 色欧美日韩亚洲| 亚洲日本中文字幕区| 国产v综合v亚洲欧| 国产亚洲一区二区三区在线观看| 日韩影院精彩在线| 欧美性色aⅴ视频一区日韩精品| 国产精品入口麻豆原神| 国产一区高清在线| 国产精品素人视频| 国产成a人亚洲| 一区精品在线播放| 99久久99久久久精品齐齐| 国产精品久久久久毛片软件| 国产成人a级片| 久久久99精品免费观看| 国产精品一色哟哟哟| 欧美精品一区二区三区在线 | 欧美日韩午夜在线视频| 亚洲精品免费电影| 91麻豆高清视频| 午夜欧美视频在线观看| 6080国产精品一区二区| 久久99精品视频| 中文字幕亚洲精品在线观看| 色哟哟在线观看一区二区三区| 亚洲欧美乱综合| 欧美男男青年gay1069videost| 久久国产精品免费| 日本一区二区在线不卡| 懂色av一区二区三区免费看| 中文字幕日本不卡| 99久久综合99久久综合网站| 亚洲日本va午夜在线影院| 欧美日韩在线不卡| 国产精品91xxx| 亚洲综合色区另类av| 欧美成人bangbros| av电影一区二区| 亚洲电影视频在线| 精品国产免费一区二区三区香蕉| 国产99精品国产| 亚洲一区二区三区美女| 国产精品毛片无遮挡高清| 视频在线观看91| 国产欧美一区二区三区沐欲| 99re66热这里只有精品3直播| 天堂久久久久va久久久久| 久久久午夜精品理论片中文字幕| 色欧美乱欧美15图片| 黑人巨大精品欧美黑白配亚洲| 调教+趴+乳夹+国产+精品| 国产精品一区一区| 日韩制服丝袜av| 亚洲18色成人| 1024国产精品| 国产精品乱码人人做人人爱| 欧美精品久久天天躁| 一本色道久久综合亚洲aⅴ蜜桃| 国产伦精品一区二区三区免费迷| 夜夜操天天操亚洲| 一区二区三区在线视频免费观看| 国产精品高潮呻吟| 国产欧美日韩综合精品一区二区| 欧美成人bangbros| 日韩精品一区二区三区在线播放 | 2024国产精品| 99久免费精品视频在线观看 | 国产精品一区一区| 男女男精品网站| 亚洲成人自拍一区| 亚洲成人动漫一区| 蜜臀99久久精品久久久久久软件| 美腿丝袜亚洲综合| 国产自产视频一区二区三区| 三级影片在线观看欧美日韩一区二区| 国产精品不卡一区二区三区| ...xxx性欧美| 亚洲精品国产a久久久久久| 亚洲女性喷水在线观看一区| 亚洲精品免费在线| 免播放器亚洲一区| 日本午夜一区二区| 免费不卡在线观看| 99视频一区二区三区| 色呦呦国产精品| 欧美一级国产精品| 国产人妖乱国产精品人妖| 亚洲欧美激情一区二区| 日产欧产美韩系列久久99| 久久99精品网久久| 国产福利一区二区三区视频在线 | 久久久久久影视| 精品久久久久av影院| 欧美成人性战久久| 一区二区三区在线不卡| 亚洲人成人一区二区在线观看| 午夜在线成人av| 成av人片一区二区| 日韩视频一区二区三区 | 99re成人精品视频| 51久久夜色精品国产麻豆| 日韩免费观看高清完整版在线观看| 久久精品日韩一区二区三区| 亚洲免费观看高清完整| 国产一区二区美女| 色综合天天综合| 日韩欧美激情一区| 日韩欧美亚洲一区二区| 亚洲天堂福利av| 成人性色生活片| 26uuu国产电影一区二区| 亚洲综合免费观看高清完整版在线 | 久久99国产精品免费| 色哟哟一区二区在线观看 | 日韩一区精品字幕| 日本高清成人免费播放| 成人欧美一区二区三区视频网页| 蜜臀av一区二区在线观看| 欧美日韩在线三级| 欧美大片一区二区三区| 一区二区三区毛片| 国产一区二区三区久久久| 91成人在线免费观看| 日韩美女精品在线| voyeur盗摄精品| 中文字幕日本不卡| www.成人网.com| 国产精品狼人久久影院观看方式| 日本不卡免费在线视频| 国产精品77777| 国产欧美精品区一区二区三区 | 国产成人亚洲综合色影视| 久久色.com| 91麻豆精品一区二区三区| 欧美视频一区二| 综合欧美亚洲日本| 91蜜桃在线观看| 国产精品国产三级国产有无不卡| 蜜桃av一区二区| 欧美va亚洲va在线观看蝴蝶网| 久久99精品久久久久久| 91在线丨porny丨国产| 亚洲色图制服丝袜| 日本韩国欧美一区| 婷婷开心激情综合| 日韩欧美在线观看一区二区三区| 国产美女在线精品| 亚洲美女少妇撒尿| 欧美一区二区三区四区久久 | 久久久欧美精品sm网站| 国产精品一品视频| 一区二区三区久久久| 91亚洲精品久久久蜜桃网站| 一区二区三区四区亚洲| 欧美人妇做爰xxxⅹ性高电影 | 国产精品一区二区久激情瑜伽| 日韩美一区二区三区| 不卡一区二区在线| 综合色天天鬼久久鬼色| 91精品国产综合久久蜜臀| 日本亚洲天堂网| 国产精品久久久久久亚洲毛片 | 精品一区二区免费在线观看| 精品不卡在线视频| 91在线观看免费视频| 日韩电影在线一区二区三区| 久久久久久久久久久电影| 国产成人丝袜美腿| 日本美女视频一区二区| 国产精品福利一区| 精品久久久久久久久久久久久久久久久 | 欧美性猛片xxxx免费看久爱| 国产成a人亚洲精品| 久久国产免费看| 麻豆91免费观看| 一区二区免费看| 亚洲色图制服诱惑 | 日韩一级欧美一级| 日韩精品专区在线影院重磅| 日韩一区国产二区欧美三区| 日本sm残虐另类| 欧美日韩在线观看一区二区 | 久久亚洲精精品中文字幕早川悠里| 激情深爱一区二区| 亚洲香蕉伊在人在线观| 亚洲欧洲性图库| 国产亚洲精品aa| 精品国产乱码久久久久久老虎| 一本大道久久a久久精品综合| 国产伦理精品不卡| 成人app在线|