国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Kaede / 3314人閱讀

摘要:注在數據庫中的表,每一行表示一個記錄,每一列表示一個字段而在深度學習的數據集中,每一行表示一個分類,每一列表示一個特征。

目錄

1 模型的改變

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

2 代碼的改變

2.1 構造一個多層的神經網絡

2.2 代碼的改變

2.2.1? 數據集

2.2.2? 定義多層次的神經網絡函數

2.2.3? 損失函數和優化器

2.2.4?訓練函數

2.2.5 完整代碼


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

? ? ? X1~X8的值構成一個八維矩陣,Y構成一個一維矩陣,就完成輸入的數據集。

? ? ? 注:在數據庫中的表,每一行表示一個記錄,每一列表示一個字段;而在深度學習的數據集中,每一行表示一個分類,每一列表示一個特征。


1 模型的改變

? ? ? ?在之前的學習中,因為一個樣本里只有一個特征,所以只用這單個特征值乘以權重在加上偏置量,輸入Sigmoid函數中,即可得到一個0到1之間的數值;

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

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

? ? ? ?采用Mini-Batch的形式可以將方程運算轉換矩陣的運算。

? ? ? ?為什么要把方程運算轉換成矩陣運算?

? ? ? ?把方程運算轉換成矩陣這種向量化的運算之后,可以利用計算機GPU/CPU的并行運算的能力來提高整個運算的速度。

?模型的改變:

? ? ? ?Pytorch提供的Sigmoid函數是一個按照向量內每個元素計算的函數(Sigmoid function is in an element-wise dashion.)


2 代碼的改變

2.1 構造一個多層的神經網絡

? ? ? ?神經網絡層次疊加的過程,就是維度不斷下降的過程。如下圖所示,就是多層神經網絡不斷嵌套的過程:

? ? ?? ?神經網絡的本質:就是尋找一種最優的非線性的空間變換函數。而這種非線性的空間變換函數是通過多個線性變換層,通過找到最優的權重,組合起來的模擬的一種非線性的變化。

? ? ? ? 為什么選擇Sigmoid函數,因為激活函數(Sigmoid函數)可以將線性變換增加一些非線性的因子,這樣我們就可以擬合一些非線性的變換。(如果每一層的神經網絡只是不斷的疊加線性函數的話,最終的函數還會只是一個線性函數。)

(神經網絡并不是學習能力越強越好,學習能力太強,會學習數據集中的一些噪聲,并不利于優化模型)

2.2 代碼的改變

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

2.2.1? 數據集

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

數據集下載地址:鏈接:百度網盤 請輸入提取碼? ?提取碼: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? 定義多層次的神經網絡函數

代碼如下:

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):        # 注意所有輸入參數都使用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? 損失函數和優化器

損失函數如下:

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

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

2.2.4?訓練函數

具體代碼如下:

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):        # 注意所有輸入參數都使用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()

部分運行截圖如下:

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/123508.html

相關文章

  • 從零開始PyTorch項目:YOLO v3目標檢測實現

    摘要:全卷積神經網絡僅使用卷積層,這就使其成為全卷積神經網絡。輸入圖像中包含了真值對象框中心的網格會作為負責預測對象的單元格。在圖像中,它是被標記為紅色的單元格,其中包含了真值框的中心被標記為黃色。在過去幾個月中,我一直在實驗室中研究提升目標檢測的方法。在這之中我獲得的較大啟發就是意識到:學習目標檢測的較佳方法就是自己動手實現這些算法,而這正是本教程引導你去做的。 在本教程中,我們將使用 P...

    sourcenode 評論0 收藏0
  • 15個Python庫,讓你學習數據科學更輕松

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

    W4n9Hu1 評論0 收藏0
  • 從框架優缺點說起,這是一份TensorFlow入門極簡教程

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

    AlphaWatch 評論0 收藏0
  • TensorFlow和PyTorch相繼發布最新版本,有什么變化?

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

    Jrain 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<