最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用PyTorch處理多維特征輸入數(shù)據(jù)的完美實(shí)現(xiàn)

 更新時間:2023年10月13日 09:48:03   作者:小饅頭學(xué)python  
在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域,我們經(jīng)常會面對具有多維特征輸入的問題,這種情況出現(xiàn)在各種應(yīng)用中,包括圖像識別、自然語言處理、時間序列分析等,PyTorch是一個強(qiáng)大的深度學(xué)習(xí)框架,在本篇博客中,我們將探討如何使用PyTorch來處理多維特征輸入數(shù)據(jù)

引言

在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域,我們經(jīng)常會面對具有多維特征輸入的問題。這種情況出現(xiàn)在各種應(yīng)用中,包括圖像識別、自然語言處理、時間序列分析等。PyTorch是一個強(qiáng)大的深度學(xué)習(xí)框架,它提供了豐富的工具和庫,可以幫助我們有效地處理這些多維特征輸入數(shù)據(jù)。在本篇博客中,我們將探討如何使用PyTorch來處理多維特征輸入數(shù)據(jù)。

前期的回顧與準(zhǔn)備

這里我們采用一組預(yù)測糖尿病的數(shù)據(jù)集,如下圖

在這里插入圖片描述

這里的每一行代表一個樣本,同樣的,每一列代表什么呢,代表一個特征,如下圖。所以糖尿病的預(yù)測由下面這八個特征共同進(jìn)行決定

在這里插入圖片描述

按照過去的邏輯回歸,應(yīng)該是下圖所示的,因?yàn)檫@是單特征值

在這里插入圖片描述

但是現(xiàn)在由單特征值已經(jīng)轉(zhuǎn)變?yōu)槎嗵卣髦盗耍晕覀冃枰獙γ總€特征值進(jìn)行處理,如下圖

在這里插入圖片描述

中間的特征值與權(quán)重的點(diǎn)乘可以從矩陣的形式進(jìn)行表現(xiàn)

在這里插入圖片描述

因?yàn)檫壿嫽貧w所以還有套一個Sigmoid函數(shù),通常情況下我們將函數(shù)內(nèi)的整體成為z(i)

在這里插入圖片描述

注意: Sigmoid函數(shù)是一個按向量方式實(shí)現(xiàn)的

下面我們從矩陣相乘的形式進(jìn)行展示,說明可以將一組方程合并為矩陣運(yùn)算,可以想象為拼接哈。這樣的目的是轉(zhuǎn)化為并行運(yùn)算,從而實(shí)現(xiàn)更快的運(yùn)行速度。

在這里插入圖片描述

所以從代碼的角度去修改,我們只需要改變一下維度就行了

class Model(torch.nn.Module):
	def __init__(self):
		super(Model, self).__init__()
		self.linear = torch.nn.Linear(8, 1) 
		self.sigmoid = torch.nn.Sigmoid()
	def forward(self, x):
		x = self.sigmoid(self.linear(x)) 
		return x
model = Model()

這里的輸入維度設(shè)置為8,就像上圖中展示的x一樣是N×8形式的矩陣,而 y ^ \hat{y} y^?是一個N×1的矩陣。
這里我們將矩陣看做是一個空間變換的函數(shù)

我們可以從下圖很好的展示多層神經(jīng)網(wǎng)絡(luò)的變換

在這里插入圖片描述

從一開始的屬于8維變?yōu)檩敵?維,再從輸入的6維變?yōu)檩敵龅?維,最后從輸入的4維變?yōu)檩敵龅?維。

如果從代碼的角度去寫,可以從下面的代碼進(jìn)行實(shí)現(xiàn)

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, 1) 
		self.sigmoid = torch.nn.Sigmoid()
	def forward(self, x):
		x = self.sigmoid(self.linear1(x)) 
		x = self.sigmoid(self.linear2(x)) 
		x = self.sigmoid(self.linear3(x)) 
		return x
model = Model()

這里我說明一下下面這條語句

  • self.sigmoid = torch.nn.Sigmoid():這一行創(chuàng)建了一個 Sigmoid 激活函數(shù)的實(shí)例,用于在神經(jīng)網(wǎng)絡(luò)的正向傳播中引入非線性。

后面的前向計算就是一層的輸出是另一層輸入進(jìn)行傳,最后將 y ^ \hat{y} y^?返回

同時我們的損失函數(shù)也沒有變化,更新函數(shù)也沒有變化,采用交叉熵和梯度下降

在這里插入圖片描述

這里沒有使用Mini-Batch進(jìn)行批量,后續(xù)的學(xué)習(xí)應(yīng)該會更新

在這里插入圖片描述

代碼實(shí)現(xiàn)

import torch
import torch.nn as nn
import torch.optim as optim
from sklearn import datasets
from sklearn.model_selection import train_test_split
import numpy as np
# 載入Diabetes數(shù)據(jù)集
diabetes = datasets.load_diabetes()
# 將數(shù)據(jù)集拆分為特征和目標(biāo)
X = diabetes.data  # 特征
y = diabetes.target  # 目標(biāo)
# 數(shù)據(jù)預(yù)處理
X = (X - np.mean(X, axis=0)) / np.std(X, axis=0)  # 特征標(biāo)準(zhǔn)化
# 拆分?jǐn)?shù)據(jù)集為訓(xùn)練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 轉(zhuǎn)換為PyTorch張量
X_train = torch.FloatTensor(X_train)
y_train = torch.FloatTensor(y_train).view(-1, 1)  # 將目標(biāo)變量轉(zhuǎn)換為列向量
X_test = torch.FloatTensor(X_test)
y_test = torch.FloatTensor(y_test).view(-1, 1)
# 構(gòu)建包含多個線性層的神經(jīng)網(wǎng)絡(luò)模型
class DiabetesModel(nn.Module):
    def __init__(self, input_size):
        super(DiabetesModel, self).__init__()
        self.fc1 = nn.Linear(input_size, 64)  # 第一個線性層
        self.fc2 = nn.Linear(64, 32)  # 第二個線性層
        self.fc3 = nn.Linear(32, 1)  # 最終輸出線性層
    def forward(self, x):
        x = torch.relu(self.fc1(x))  # ReLU激活函數(shù)
        x = torch.relu(self.fc2(x))
        x = self.fc3(x)
        return x
# 初始化模型
input_size = X_train.shape[1]
model = DiabetesModel(input_size)
# 定義損失函數(shù)和優(yōu)化器
criterion = nn.MSELoss()  # 均方誤差損失
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 訓(xùn)練模型
num_epochs = 1000
for epoch in range(num_epochs):
    # 前向傳播
    outputs = model(X_train)
    loss = criterion(outputs, y_train)
    # 反向傳播和優(yōu)化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    if (epoch + 1) % 100 == 0:
        print(f'Epoch [{epoch + 1}/{num_epochs}], Loss: {loss.item():.4f}')
# 在測試集上進(jìn)行預(yù)測
model.eval()
with torch.no_grad():
    y_pred = model(X_test)
# 計算性能指標(biāo)
mse = nn.MSELoss()(y_pred, y_test)
print(f"均方誤差 (MSE): {mse.item():.4f}")

運(yùn)行結(jié)果如下

在這里插入圖片描述

感興趣的同學(xué)可以使用不同的激活函數(shù)一一測試一下

比如我使用tanh函數(shù)測試后得到的均方誤差就小了許多

在這里插入圖片描述

此鏈接是GitHub上的大佬做的可視化函數(shù):

https://dashee87.github.io/deep%20learning/visualising-activation-functions-in-neural-networks/

總結(jié)

這就是使用PyTorch處理多維特征輸入的基本流程。當(dāng)然,實(shí)際應(yīng)用中,你可能需要更復(fù)雜的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),更大的數(shù)據(jù)集,以及更多的調(diào)優(yōu)和正則化技巧。但這個指南可以幫助你入門如何處理多維特征輸入的問題,并利用PyTorch構(gòu)建強(qiáng)大的深度學(xué)習(xí)模型。希望這篇博客對你有所幫助!

以上就是使用PyTorch處理多維特征輸入數(shù)據(jù)的完美實(shí)現(xiàn)的詳細(xì)內(nèi)容,更多關(guān)于PyTorch處理多維特征輸入的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Django權(quán)限控制的使用

    Django權(quán)限控制的使用

    這篇文章主要介紹了Django權(quán)限控制的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python使用docxtpl庫高效生成Word文檔的方法

    Python使用docxtpl庫高效生成Word文檔的方法

    在現(xiàn)代辦公自動化、數(shù)據(jù)報告生成、批量文檔處理等場景中,如何高效、準(zhǔn)確地生成格式統(tǒng)一且內(nèi)容動態(tài)的Word文檔,一直是開發(fā)者和業(yè)務(wù)人員關(guān)注的重點(diǎn),docxtpl庫憑借其簡潔的API和強(qiáng)大的模板能力,成為生成.docx文檔的首選工具之一,本文將全面、深入地介紹docxtpl庫
    2026-01-01
  • python入門課程第二講之怎么運(yùn)行Python

    python入門課程第二講之怎么運(yùn)行Python

    這篇文章主要介紹了python入門課程第二講之怎么運(yùn)行Python,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • python中abs&map&reduce簡介

    python中abs&map&reduce簡介

    map與reduce是兩個十分常用的Python內(nèi)置函數(shù),它們與Hadoop中的MapReduce在某些方面有一定的相似之處。
    2018-02-02
  • Python爬蟲新手入門之初學(xué)lxml庫

    Python爬蟲新手入門之初學(xué)lxml庫

    這篇文章主要給大家介紹了關(guān)于Python爬蟲新手入門之初學(xué)lxml庫的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python模塊相關(guān)知識點(diǎn)小結(jié)

    Python模塊相關(guān)知識點(diǎn)小結(jié)

    這篇文章主要介紹了Python模塊相關(guān)知識點(diǎn),總結(jié)分析了Python模塊的功能、原理、使用方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • 關(guān)于numpy強(qiáng)制類型轉(zhuǎn)換的問題

    關(guān)于numpy強(qiáng)制類型轉(zhuǎn)換的問題

    這篇文章主要介紹了關(guān)于numpy強(qiáng)制類型轉(zhuǎn)換的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 對pandas的dataframe繪圖并保存的實(shí)現(xiàn)方法

    對pandas的dataframe繪圖并保存的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄獙andas的dataframe繪圖并保存的實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • python實(shí)現(xiàn)簡單神經(jīng)網(wǎng)絡(luò)算法

    python實(shí)現(xiàn)簡單神經(jīng)網(wǎng)絡(luò)算法

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡單神經(jīng)網(wǎng)絡(luò)算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python transpose()處理高維度數(shù)組的軸變換的實(shí)現(xiàn)

    python transpose()處理高維度數(shù)組的軸變換的實(shí)現(xiàn)

    本文主要介紹了python transpose()處理高維度數(shù)組的軸變換的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09

最新評論

兴海县| 岚皋县| 丘北县| 长寿区| 丹江口市| 怀宁县| 靖江市| 贡嘎县| 衡阳市| 唐海县| 萨迦县| 常山县| 西充县| 祁门县| 屯门区| 若尔盖县| 尼勒克县| 桂阳县| 富顺县| 中宁县| 苗栗市| 宁国市| 茌平县| 安乡县| 廉江市| 钦州市| 奈曼旗| 搜索| 康平县| 乐安县| 神木县| 天门市| 宜章县| 全南县| 满城县| 六枝特区| 天峻县| 南充市| 淮南市| 巴彦淖尔市| 定边县|