亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Pytorch深度學(xué)習(xí)——處理多維度特征的輸入(B站劉二大人P7學(xué)習(xí)筆記)

Kaede / 3534人閱讀

摘要:注在數(shù)據(jù)庫(kù)中的表,每一行表示一個(gè)記錄,每一列表示一個(gè)字段而在深度學(xué)習(xí)的數(shù)據(jù)集中,每一行表示一個(gè)分類,每一列表示一個(gè)特征。

目錄

1 模型的改變

1.1?采用Mini-Batch(N samples)的形式

2 代碼的改變

2.1 構(gòu)造一個(gè)多層的神經(jīng)網(wǎng)絡(luò)

2.2 代碼的改變

2.2.1? 數(shù)據(jù)集

2.2.2? 定義多層次的神經(jīng)網(wǎng)絡(luò)函數(shù)

2.2.3? 損失函數(shù)和優(yōu)化器

2.2.4?訓(xùn)練函數(shù)

2.2.5 完整代碼


? ? ? 本節(jié)課以糖尿病病人的數(shù)據(jù)集為例展開,如圖所示是糖尿病病人的數(shù)據(jù)集,其中X1~X8表示病人8項(xiàng)特征的詳細(xì)數(shù)據(jù),Y表示未來一年內(nèi)糖尿病病人的病情是否會(huì)加重。而我們需要做的事情就是:根據(jù)數(shù)據(jù)集中的數(shù)據(jù),利用深度學(xué)習(xí),讓機(jī)器能夠自己判斷Y的取值(1表示未來一年糖尿病會(huì)加重,0表示未來一年糖尿病不會(huì)加重)。

? ? ? X1~X8的值構(gòu)成一個(gè)八維矩陣,Y構(gòu)成一個(gè)一維矩陣,就完成輸入的數(shù)據(jù)集。

? ? ? 注:在數(shù)據(jù)庫(kù)中的表,每一行表示一個(gè)記錄,每一列表示一個(gè)字段;而在深度學(xué)習(xí)的數(shù)據(jù)集中,每一行表示一個(gè)分類,每一列表示一個(gè)特征。


1 模型的改變

? ? ? ?在之前的學(xué)習(xí)中,因?yàn)橐粋€(gè)樣本里只有一個(gè)特征,所以只用這單個(gè)特征值乘以權(quán)重在加上偏置量,輸入Sigmoid函數(shù)中,即可得到一個(gè)0到1之間的數(shù)值;

? ? ? ?但在本節(jié)課,一個(gè)樣本里有八個(gè)特征,但計(jì)算的最終結(jié)果需要是一個(gè)實(shí)數(shù),所以將樣本中的每一個(gè)特征值都都和一個(gè)權(quán)重相乘再求和,再加一個(gè)偏置量 ,最后整體再錄入到sigmoid函數(shù)中,獲得??值。

1.1?采用Mini-Batch(N samples)的形式

? ? ? ?采用Mini-Batch的形式可以將方程運(yùn)算轉(zhuǎn)換矩陣的運(yùn)算。

? ? ? ?為什么要把方程運(yùn)算轉(zhuǎn)換成矩陣運(yùn)算?

? ? ? ?把方程運(yùn)算轉(zhuǎn)換成矩陣這種向量化的運(yùn)算之后,可以利用計(jì)算機(jī)GPU/CPU的并行運(yùn)算的能力來提高整個(gè)運(yùn)算的速度。

?模型的改變:

? ? ? ?Pytorch提供的Sigmoid函數(shù)是一個(gè)按照向量?jī)?nèi)每個(gè)元素計(jì)算的函數(shù)(Sigmoid function is in an element-wise dashion.)


2 代碼的改變

2.1 構(gòu)造一個(gè)多層的神經(jīng)網(wǎng)絡(luò)

? ? ? ?神經(jīng)網(wǎng)絡(luò)層次疊加的過程,就是維度不斷下降的過程。如下圖所示,就是多層神經(jīng)網(wǎng)絡(luò)不斷嵌套的過程:

? ? ?? ?神經(jīng)網(wǎng)絡(luò)的本質(zhì):就是尋找一種最優(yōu)的非線性的空間變換函數(shù)。而這種非線性的空間變換函數(shù)是通過多個(gè)線性變換層,通過找到最優(yōu)的權(quán)重,組合起來的模擬的一種非線性的變化。

? ? ? ? 為什么選擇Sigmoid函數(shù),因?yàn)榧せ詈瘮?shù)(Sigmoid函數(shù))可以將線性變換增加一些非線性的因子,這樣我們就可以擬合一些非線性的變換。(如果每一層的神經(jīng)網(wǎng)絡(luò)只是不斷的疊加線性函數(shù)的話,最終的函數(shù)還會(huì)只是一個(gè)線性函數(shù)。)

(神經(jīng)網(wǎng)絡(luò)并不是學(xué)習(xí)能力越強(qiáng)越好,學(xué)習(xí)能力太強(qiáng),會(huì)學(xué)習(xí)數(shù)據(jù)集中的一些噪聲,并不利于優(yōu)化模型)

2.2 代碼的改變

本例中并沒有采用Mini-Batch的方法,依然采用的是full-batch。

2.2.1? 數(shù)據(jù)集

將糖尿病數(shù)據(jù)集為解壓文件放在與代碼同目錄下,如下圖:

數(shù)據(jù)集下載地址:鏈接:百度網(wǎng)盤 請(qǐng)輸入提取碼? ?提取碼:vlfd

?具體代碼如下:

xy = np.loadtxt("diabetes.csv.gz", delimiter=",", dtype=np.float32)# 取前8列x_data = torch.from_numpy(xy[:, :-1])# 取最后1列y_data = torch.from_numpy(xy[:, [-1]])

2.2.2? 定義多層次的神經(jīng)網(wǎng)絡(luò)函數(shù)

代碼如下:

class Model(torch.nn.Module):    def __init__(self):        super(Model, self).__init__()        self.linear1 = torch.nn.Linear(8, 6)        self.linear2 = torch.nn.Linear(6, 4)        self.linear3 = torch.nn.Linear(4, 2)        self.linear4 = torch.nn.Linear(2, 1)        self.sigmoid = torch.nn.Sigmoid()    def forward(self, x):        # 注意所有輸入?yún)?shù)都使用x        x = self.sigmoid(self.linear1(x))        x = self.sigmoid(self.linear2(x))        x = self.sigmoid(self.linear3(x))        x = self.sigmoid(self.linear4(x))        return xmodel = Model()

2.2.3? 損失函數(shù)和優(yōu)化器

損失函數(shù)如下:

? ? ? 損失函數(shù)依然采用交叉熵公式,但是需要取均值,所有reduction=‘mean’,課堂中老師講的size_average=True 已經(jīng)棄用。具體代碼如下:

criterion = torch.nn.BCELoss(reduction="mean")optimizer = torch.optim.SGD(model.parameters(), lr=0.1)

2.2.4?訓(xùn)練函數(shù)

具體代碼如下:

for epoch in range(1000000):    y_pred = model(x_data)    loss = criterion(y_pred, y_data)    print(epoch, loss.item())    # 反饋    optimizer.zero_grad()    loss.backward()    optimizer.step()

2.2.5 完整代碼

import numpy as npimport torchimport matplotlib.pyplot as pltxy = np.loadtxt("diabetes.csv.gz", delimiter=",", dtype=np.float32)# 取前8列x_data = torch.from_numpy(xy[:, :-1])# 取最后1列y_data = torch.from_numpy(xy[:, [-1]])class Model(torch.nn.Module):    def __init__(self):        super(Model, self).__init__()        self.linear1 = torch.nn.Linear(8, 6)        self.linear2 = torch.nn.Linear(6, 4)        self.linear3 = torch.nn.Linear(4, 2)        self.linear4 = torch.nn.Linear(2, 1)        self.sigmoid = torch.nn.Sigmoid()    def forward(self, x):        # 注意所有輸入?yún)?shù)都使用x        x = self.sigmoid(self.linear1(x))        x = self.sigmoid(self.linear2(x))        x = self.sigmoid(self.linear3(x))        x = self.sigmoid(self.linear4(x))        return xmodel = Model()criterion = torch.nn.BCELoss(reduction="mean")optimizer = torch.optim.SGD(model.parameters(), lr=0.1)for epoch in range(1000000):    y_pred = model(x_data)    loss = criterion(y_pred, y_data)    print(epoch, loss.item())    # 反饋    optimizer.zero_grad()    loss.backward()    optimizer.step()

部分運(yùn)行截圖如下:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/123508.html

相關(guān)文章

  • 從零開始PyTorch項(xiàng)目:YOLO v3目標(biāo)檢測(cè)實(shí)現(xiàn)

    摘要:全卷積神經(jīng)網(wǎng)絡(luò)僅使用卷積層,這就使其成為全卷積神經(jīng)網(wǎng)絡(luò)。輸入圖像中包含了真值對(duì)象框中心的網(wǎng)格會(huì)作為負(fù)責(zé)預(yù)測(cè)對(duì)象的單元格。在圖像中,它是被標(biāo)記為紅色的單元格,其中包含了真值框的中心被標(biāo)記為黃色。在過去幾個(gè)月中,我一直在實(shí)驗(yàn)室中研究提升目標(biāo)檢測(cè)的方法。在這之中我獲得的較大啟發(fā)就是意識(shí)到:學(xué)習(xí)目標(biāo)檢測(cè)的較佳方法就是自己動(dòng)手實(shí)現(xiàn)這些算法,而這正是本教程引導(dǎo)你去做的。 在本教程中,我們將使用 P...

    sourcenode 評(píng)論0 收藏0
  • 15個(gè)Python庫(kù),讓你學(xué)習(xí)數(shù)據(jù)科學(xué)更輕松

    摘要:在本節(jié)中,我們將看到一些最流行和最常用的庫(kù),用于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)是用于數(shù)據(jù)挖掘,分析和機(jī)器學(xué)習(xí)的最流行的庫(kù)。愿碼提示網(wǎng)址是一個(gè)基于的框架,用于使用多個(gè)或進(jìn)行有效的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)。 showImg(https://segmentfault.com/img/remote/1460000018961827?w=999&h=562); 來源 | 愿碼(ChainDesk.CN)內(nèi)容編輯...

    W4n9Hu1 評(píng)論0 收藏0
  • 從框架優(yōu)缺點(diǎn)說起,這是一份TensorFlow入門極簡(jiǎn)教程

    摘要:第一個(gè)主流產(chǎn)品級(jí)深度學(xué)習(xí)庫(kù),于年由啟動(dòng)。在年月日宣布,的開發(fā)將終止。張量中最基本的單位是常量變量和占位符。占位符并沒有初始值,它只會(huì)分配必要的內(nèi)存。是一個(gè)字典,在字典中需要給出每一個(gè)用到的占位符的取值。 為什么選擇 TensorFlow?在本文中,我們將對(duì)比當(dāng)前最流行的深度學(xué)習(xí)框架(包括 Caffe、Theano、PyTorch、TensorFlow 和 Keras),幫助你為應(yīng)用選擇最合適...

    AlphaWatch 評(píng)論0 收藏0
  • TensorFlow和PyTorch相繼發(fā)布最新版本,有什么變化?

    摘要:統(tǒng)計(jì)分布庫(kù)的初始版本。允許將邊界傳遞到最優(yōu)化接口。從版本開始,這樣的模型將接受導(dǎo)出時(shí)指定的密鑰。更新示例以使用,并移動(dòng)到中。此外,此更改增加了設(shè)備列表中的主要以支持指定。廣播語(yǔ)義密切跟隨式廣播。 Tensorflow主要特征和改進(jìn)在Tensorflow庫(kù)中添加封裝評(píng)估量。所添加的評(píng)估量列表如下:1. 深度神經(jīng)網(wǎng)絡(luò)分類器(DNN Classifier)2. 深度神經(jīng)網(wǎng)絡(luò)回歸量(DNN Regr...

    Jrain 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<