P7 處理多維特征的輸入

教程來源b站劉二《pytorch深度學(xué)習(xí)實(shí)戰(zhàn)》

  1. 乘的權(quán)重(w)都一樣,加的偏置(b)也一樣。b變成矩陣時(shí)使用廣播機(jī)制玩祟。神經(jīng)網(wǎng)絡(luò)的參數(shù)w和b是網(wǎng)絡(luò)需要學(xué)習(xí)的靡馁,其他是已知的欲鹏。

  2. 學(xué)習(xí)能力越強(qiáng),有可能會(huì)把輸入樣本中噪聲的規(guī)律也學(xué)到臭墨。我們要學(xué)習(xí)數(shù)據(jù)本身真實(shí)數(shù)據(jù)的規(guī)律赔嚎,學(xué)習(xí)能力要有泛化能力。

  3. 該神經(jīng)網(wǎng)絡(luò)共3層胧弛;第一層是8維到6維的非線性空間變換尤误,第二層是6維到4維的非線性空間變換,第三層是4維到1維的非線性空間變換结缚。

  4. 本算法中torch.nn.Sigmoid() # 將其看作是網(wǎng)絡(luò)的一層损晤,而不是簡單的函數(shù)使用

代碼實(shí)現(xiàn)糖尿病數(shù)據(jù)的二分類

import numpy as np 
import torch
import matplotlib.pyplot as plt

# prepare  dataset
xy = np.loadtxt('diabetes.csv', delimiter = ',', dtype = np.float32)
# 第一個(gè)‘:’是指讀取所有行,第二個(gè)‘:’是指從第一列開始红竭,最后一列不要
x_data = torch.from_numpy(xy[:, :-1])
# [-1] 最后得到的是個(gè)矩陣
y_data = torch.from_numpy(xy[:, [-1]])

# design model using class
class Model(torch.nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.linear1 = torch.nn.Linear(8, 6) # 輸入數(shù)據(jù)x的特征是8維尤勋,x有8個(gè)特征,輸出為6維
        self.linear2 = torch.nn.Linear(6, 4)
        self.linear3 = torch.nn.Linear(4, 1)
        self.sigmoid = torch.nn.Sigmoid() # 將其看作是網(wǎng)絡(luò)的一層,而不是簡單的函數(shù)使用

    def forward(self, x): # 構(gòu)建一個(gè)計(jì)算圖
        x = self.sigmoid(self.linear1(x))
        x = self.sigmoid(self.linear2(x)) # 將上面一行的輸出作為輸入
        x = self.sigmoid(self.linear3(x))
        return x 
model = Model()

# construct loss and optimizer
criterion = torch.nn.BCELoss(reduction = 'mean')
optimizer = torch.optim.SGD(model.parameters(), lr = 0.1)

epoch_list = []
loss_list = []
# training cycle forward, backward, update
for epoch in range(1000000):
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)
    #print(epoch, loss.item())
    epoch_list.append(epoch)
    loss_list.append(loss)

    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

    # 輸出準(zhǔn)確率acc為評(píng)價(jià)指標(biāo)
    if epoch % 10000 == 0:
        # torch.where(condition茵宪,a最冰,b)其中,輸入?yún)?shù)condition:條件限制,如果滿足條件稀火,則選擇a暖哨,否則選擇b作為輸出。
        y_pred_label = torch.where(y_pred>=0.5, torch.tensor([1.0]), torch.tensor([0.0]))
        # 計(jì)算正確的數(shù)量
        acc = torch.eq(y_pred_label, y_data).sum().item()/y_data.size(0)
        print("epoch = ", epoch, "loss = ", loss.item(), "acc = ", acc)

# 可視化
# plt.plot(epoch_list, loss_list)
# plt.ylabel('loss')
# plt.xlabel('epoch')
# plt.show()

# 如果要查看網(wǎng)絡(luò)的參數(shù)可以進(jìn)行以下打印
# 參數(shù)說明
# 例如第一層的參數(shù):
# layer1_weight = model.linear1.weight.data
# layer1_bias = model.linear1.bias.data
# print("layer1_weight", layer1_weight)
# print("layer1_weight.shape", layer1_weight.shape)
# print("layer1_bias", layer1_bias)
# print("layer1_bias.shape", layer1_bias.shape)

運(yùn)行結(jié)果:使用SGD凰狞,學(xué)習(xí)率為0.1,在訓(xùn)練100w次后,loss會(huì)下降到0.3左右篇裁。準(zhǔn)確率可以達(dá)到87%

這個(gè)訓(xùn)練100w次才得到這個(gè)結(jié)果并不盡人意箕慧,因此考慮使用其他優(yōu)化器,使用了Adam

optimizer = torch.optim.Adam(model.parameters(),
                lr=0.001,
                betas=(0.9, 0.999),
                eps=1e-08,
                weight_decay=0,
                amsgrad=False)

最后結(jié)果有所提升茴恰,僅15w次颠焦,loss可降到0.25,acc到達(dá)了90%

參考博客:https://blog.csdn.net/bit452/article/details/109682078

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末往枣,一起剝皮案震驚了整個(gè)濱河市伐庭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌分冈,老刑警劉巖圾另,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異雕沉,居然都是意外死亡集乔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門坡椒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扰路,“玉大人,你說我怎么就攤上這事倔叼『钩” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵丈攒,是天一觀的道長哩罪。 經(jīng)常有香客問我,道長巡验,這世上最難降的妖魔是什么际插? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮显设,結(jié)果婚禮上框弛,老公的妹妹穿的比我還像新娘。我一直安慰自己敷硅,他們只是感情好功咒,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绞蹦,像睡著了一般力奋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上幽七,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天景殷,我揣著相機(jī)與錄音,去河邊找鬼。 笑死猿挚,一個(gè)胖子當(dāng)著我的面吹牛咐旧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绩蜻,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼铣墨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了办绝?” 一聲冷哼從身側(cè)響起伊约,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎孕蝉,沒想到半個(gè)月后屡律,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡降淮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年超埋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佳鳖。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霍殴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出腋颠,到底是詐尸還是另有隱情繁成,我是刑警寧澤吓笙,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布淑玫,位于F島的核電站,受9級(jí)特大地震影響面睛,放射性物質(zhì)發(fā)生泄漏絮蒿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一叁鉴、第九天 我趴在偏房一處隱蔽的房頂上張望土涝。 院中可真熱鬧,春花似錦幌墓、人聲如沸但壮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜡饵。三九已至,卻和暖如春胳施,著一層夾襖步出監(jiān)牢的瞬間溯祸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留焦辅,地道東北人博杖。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像筷登,于是被迫代替她去往敵國和親剃根。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容