日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

深度学习--TensorFlow (2)单层感知器2 -- 实现多数据分类

發(fā)布時(shí)間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习--TensorFlow (2)单层感知器2 -- 实现多数据分类 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

一、基礎(chǔ)理論

前向傳遞(得到輸出y)?

反向傳遞(更新權(quán)重w)

二、實(shí)現(xiàn)多數(shù)據(jù)分類

1、設(shè)置初始參數(shù)?

2、訓(xùn)練

3、畫(huà)圖

3-1、畫(huà)點(diǎn)?

3-2、畫(huà)線段

總代碼


一、基礎(chǔ)理論

這里只寫(xiě)公式,更加詳細(xì)的可以看前篇CSDN

前向傳遞(得到輸出y)?

b是偏置)?



反向傳遞(更新權(quán)重w)

更新權(quán)重:?

二、實(shí)現(xiàn)多數(shù)據(jù)分類

1、設(shè)置初始參數(shù)?

# 1、設(shè)置初始參數(shù)
# 輸入                       #每一行對(duì)應(yīng)一個(gè)標(biāo)簽
x = np.array([[1, 0, 2],    #(0,2)坐標(biāo)[1, 1, 3],    #(1,3)坐標(biāo)[1, 4, 2],    #(4,2)坐標(biāo)[1, 5, 1]     #(5,1)坐標(biāo)
])
# 初始權(quán)重(0~1的隨機(jī)生產(chǎn)數(shù))
w = np.random.random([3, 1])      #3行1列# 偏置
b = 1# 標(biāo)簽(正確標(biāo)簽,訓(xùn)練結(jié)束的目標(biāo))
true = np.array([              #每一行對(duì)應(yīng)一個(gè)標(biāo)簽[-1],[-1],[ 1],[ 1]
])# 學(xué)習(xí)率
lr = 1

2、訓(xùn)練

注:dot是矩陣點(diǎn)乘,矩陣點(diǎn)乘要注意前者列后者行是否相等。?

# 開(kāi)始訓(xùn)練
for i in range(100):# 2、正向傳播:計(jì)算輸出yy = np.sign(np.dot(x, w)).astype(int)   #dot:矩陣乘法(x列==w行)print('epoch:', i)                      #迭代次數(shù)print('weight:', w)                     #權(quán)重print(y)                                #標(biāo)簽# 訓(xùn)練成功if (y == true).all():print('訓(xùn)練成功!')print('y = ', y)break# 3、反向傳播:更新權(quán)重# 訓(xùn)練失敗(更新權(quán)重)else:w += lr * np.dot(x.T, true-y)/x.shape[0]
# w:權(quán)重      lr:學(xué)習(xí)率      np.dot:矩陣點(diǎn)乘     true-y:差     x.T:x的轉(zhuǎn)置     x.shape[0]:行數(shù)

3、畫(huà)圖

3-1、畫(huà)點(diǎn)?

# 4、畫(huà)圖
# 4-1、畫(huà)點(diǎn)
# 正樣本坐標(biāo)
x1, y1 = [0,1], [2,3]   #坐標(biāo):(0,2), (1,3)
# 負(fù)樣本坐標(biāo)
x2, y2 = [4,5], [2,1]   #坐標(biāo):(4,2),(5,1)plt.scatter(x1, y1, c='b')  #點(diǎn):(x1,y1)坐標(biāo),blue顏色
plt.scatter(x2, y2, c='g')  #點(diǎn):(x2,y2)坐標(biāo),green顏色

3-2、畫(huà)線段

# 4-2、畫(huà)線段
# 定義線段兩點(diǎn)的x坐標(biāo)
line_x = (0, 6)# 計(jì)算線性方程的k和d:
# w0*x0+w1*x1+w2*x2 = 0
# 把x1、x2分別看作:x、y
# 可以得到:w0 + w1*x + w2*y = 0  -->  y = -w1/w2*x + -w0/w2  -->  k=-w1/w2, d=-w0/w2
# 線段兩端點(diǎn)的y坐標(biāo)
k = -w[1]/w[2]          #斜率
d = -w[0]/w[2]          #截距
line_y = k * line_x + d #y坐標(biāo)#畫(huà)線段(通過(guò)兩個(gè)點(diǎn))
plt.plot(line_x, line_y, 'r')   #r:redplt.show()

總代碼

# 手寫(xiě)單層感知器(多數(shù)據(jù)分類)
import numpy as np
import matplotlib.pyplot as plt# 1、設(shè)置初始參數(shù)
# 輸入                       #每一行對(duì)應(yīng)一個(gè)標(biāo)簽
x = np.array([[1, 0, 2],    #(0,2)坐標(biāo)[1, 1, 3],    #(1,3)坐標(biāo)[1, 4, 2],    #(4,2)坐標(biāo)[1, 5, 1]     #(5,1)坐標(biāo)
])
# 初始權(quán)重(0~1的隨機(jī)生產(chǎn)數(shù))
w = np.random.random([3, 1])      #3行1列# 偏置
b = 1# 標(biāo)簽(正確標(biāo)簽,訓(xùn)練結(jié)束的目標(biāo))
true = np.array([              #每一行對(duì)應(yīng)一個(gè)標(biāo)簽[-1],[-1],[ 1],[ 1]
])# 學(xué)習(xí)率
lr = 1# 開(kāi)始訓(xùn)練
for i in range(100):# 2、正向傳播:計(jì)算輸出yy = np.sign(np.dot(x, w)).astype(int)   #dot:矩陣乘法(x列==w行)print('epoch:', i)                      #迭代次數(shù)print('weight:', w)                     #權(quán)重print(y)                                #標(biāo)簽# 訓(xùn)練成功if (y == true).all():print('訓(xùn)練成功!')print('y = ', y)break# 3、反向傳播:更新權(quán)重# 訓(xùn)練失敗(更新權(quán)重)else:w += lr * np.dot(x.T, true-y)/x.shape[0]
# w:權(quán)重      lr:學(xué)習(xí)率      np.dot:矩陣點(diǎn)乘     true-y:差     x.T:x的轉(zhuǎn)置     x.shape[0]:行數(shù)# 4、畫(huà)圖
# 4-1、畫(huà)點(diǎn)
# 正樣本坐標(biāo)
x1, y1 = [0,1], [2,3]   #坐標(biāo):(0,2), (1,3)
# 負(fù)樣本坐標(biāo)
x2, y2 = [4,5], [2,1]   #坐標(biāo):(4,2),(5,1)plt.scatter(x1, y1, c='b')  #點(diǎn):(x1,y1)坐標(biāo),blue顏色
plt.scatter(x2, y2, c='g')  #點(diǎn):(x2,y2)坐標(biāo),green顏色# 4-2、畫(huà)線段
# 定義線段兩點(diǎn)的x坐標(biāo)
line_x = (0, 6)# 計(jì)算線性方程的k和d:
# w0*x0+w1*x1+w2*x2 = 0
# 把x1、x2分別看作:x、y
# 可以得到:w0 + w1*x + w2*y = 0  -->  y = -w1/w2*x + -w0/w2  -->  k=-w1/w2, d=-w0/w2
# 線段兩端點(diǎn)的y坐標(biāo)
k = -w[1]/w[2]          #斜率
d = -w[0]/w[2]          #截距
line_y = k * line_x + d #y坐標(biāo)#畫(huà)線段(通過(guò)兩個(gè)點(diǎn))
plt.plot(line_x, line_y, 'r')   #r:redplt.show()

總結(jié)

以上是生活随笔為你收集整理的深度学习--TensorFlow (2)单层感知器2 -- 实现多数据分类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。