通過示例學習:連續 XOR

通過示例學習:連續 XOR

如果我們想在 PyTorch 中構建神經網絡,可以使用 (with) 指定所有參數(權重矩陣、偏差向量),讓 PyTorch 計算梯度,然后調整參數。但是,如果我們有很多參數,事情很快就會變得繁瑣。在 PyTorch 中,有一個名為 Package,它使構建神經網絡更加方便。Tensorsrequires_grad=Truetorch.nn

將介紹在 PyTorch 中訓練神經網絡可能需要的庫和所有其他部分,并在一個簡單但眾所周知的示例 XOR 上使用一個簡單的示例分類器。給定兩個二進制輸入x1和x2,則要預測的標簽為1如果x1或x2是1而另一個是0,或者標簽為0在所有其他情況下。這個例子因單個神經元(即線性分類器)無法學習這個簡單的函數而出名。 因此,將學習如何構建一個可以學習此函數的小型神經網絡。 為了更有趣,我們將 XOR 移動到連續空間,并在二進制輸入上引入一些高斯噪聲。期望的 XOR 數據集分離如下所示:

該包定義了一系列有用的類,如線性網絡層、激活函數、損失函數等。完整列表可在此處找到。如果您需要某個網絡層,請先查看包的文檔,然后再自己編寫該層,因為該包可能已經包含其代碼。我們在下面導入它:torch.nn

[1]:
import torch.nn as nn

此外,還有 。它包含在網絡層中使用的函數。這與定義它們的方式形成鮮明對比(更多內容見下文),并且實際上使用了 中的許多功能。因此,功能包在許多情況下都很有用,因此我們在這里也導入它。torch.nntorch.nn.functionaltorch.nnnn.Modulestorch.nntorch.nn.functional

[2]:
import torch.nn.functional as F
nn.模塊

在 PyTorch 中,神經網絡是由模塊構建的。模塊可以包含其他模塊,神經網絡本身也被視為一個模塊。模塊的基本模板如下:

[3]:
class MyModule(nn.Module):def __init__(self):super().__init__()# Some init for my moduledef forward(self, x):# Function for performing the calculation of the module.pass

forward 函數是進行模塊計算的地方,并在您調用 module () 時執行。在 init 函數中,我們通常使用 來創建模塊的參數,或者定義 forward 函數中使用的其他模塊。向后計算是自動完成的,但如果需要,也可以被覆蓋。nn?=?MyModule();?nn(x)nn.Parameter

簡單分類器

我們現在可以使用包中的預定義模塊,并定義我們自己的小型神經網絡。我們將使用一個最小網絡,其中包含一個輸入層、一個以 tanh 作為激活函數的隱藏層和一個輸出層。換句話說,我們的網絡應該看起來像這樣:torch.nn

輸入神經元以藍色顯示,表示坐標和數據點。包括 tanh 激活在內的隱藏神經元顯示為白色,輸出神經元顯示為紅色。在 PyTorch 中,我們可以按如下方式定義它:x1x2

[4]:

class SimpleClassifier(nn.Module):def __init__(self, num_inputs, num_hidden, num_outputs):super().__init__()# Initialize the modules we need to build the networkself.linear1 = nn.Linear(num_inputs, num_hidden)self.act_fn = nn.Tanh()self.linear2 = nn.Linear(num_hidden, num_outputs)def forward(self, x):# Perform the calculation of the model to determine the predictionx = self.linear1(x)x = self.act_fn(x)x = self.linear2(x)return x

對于本筆記本中的示例,我們將使用一個具有兩個輸入神經元和四個隱藏神經元的微型神經網絡。當我們執行二元分類時,我們將使用單個輸出神經元。請注意,我們還沒有對輸出應用 sigmoid。這是因為其他函數(尤其是 loss)在原始輸出上計算時比在 sigmoid 輸出上計算時更有效、更精確。我們稍后會討論詳細原因。

[5]:
model = SimpleClassifier(num_inputs=2, num_hidden=4, num_outputs=1)
# Printing a module shows all its submodules
print(model)
SimpleClassifier((linear1): Linear(in_features=2, out_features=4, bias=True)(act_fn): Tanh()(linear2): Linear(in_features=4, out_features=1, bias=True)
)

打印模型會列出它包含的所有子模塊。可以使用模塊的函數獲取模塊的參數,也可以獲取每個參數對象的名稱。對于我們的小型神經網絡,我們有以下參數:parameters()named_parameters()

[6]:
for name, param in model.named_parameters():print(f"Parameter {name}, shape {param.shape}")
Parameter linear1.weight, shape torch.Size([4, 2])
Parameter linear1.bias, shape torch.Size([4])
Parameter linear2.weight, shape torch.Size([1, 4])
Parameter linear2.bias, shape torch.Size([1])

每個線性層都有一個形狀為 的權重矩陣和一個形狀為 的偏置。tanh 激活函數沒有任何參數。請注意,僅為作為直接對象屬性的對象注冊參數,即 .如果定義模塊列表,則這些模塊的參數不會注冊到外部模塊,并且在嘗試優化模塊時可能會導致一些問題。有一些替代方案,如 , 和 ,允許您擁有不同的模塊數據結構。我們將在后面的一些教程中使用它們,并在那里解釋它們。[output,?input][output]nn.Moduleself.a?=?...nn.ModuleListnn.ModuleDictnn.Sequential

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78486.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78486.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78486.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

百度Create大會深度解讀:AI Agent與多模態模型如何重塑未來?

目錄 百度Create大會亮點全解析:從數字人到Agent生態布局 數字人商業化:從"擬人"到"高說服力"的進化 Agent生態:從"心響"App看百度的Agent戰略布局 "心響"App的技術架構與創新點 多模態大模型&a…

django filter 日期大于當前日期的

在Django中,如果你想要過濾出日期大于當前日期的記錄,你可以使用Django的QuerySet API中的__gt(大于)操作符。這里是如何做到這一點的步驟: 確定你的模型:首先,確保你有一個模型(Mo…

C#本地使用離線ocr庫識別圖片中文本,工具包PaddleOCRSharp

C#本地使用離線ocr庫識別圖片文本,工具包PaddleOCRSharp PaddleOCRSharp介紹 項目地址:https://github.com/raoyutian/PaddleOCRSharp PaddleOCRSharp 是一個.NET版本OCR可離線使用類庫。項目核心組件PaddleOCR.dll目前已經支持C\C、.NET、Python、Go…

缺省處理、容錯處理

布爾判定 假:false 0 null undefined NaN 可選符.?和?? let obj {name: jim,data: {money: 0,age: 18,fn(a){return a}} }1、如果左側的值為null或者undefined,則使用右側值。需要使用"??" obj?.data?.a…

【Java面試題系列02】Java 集合常見面試題

文章目錄 一、前言🚀🚀🚀二、Java 基礎面試題:??????1、說說 Java 中 HashMap 的原理?2、HashMap 的擴容機制?3、為什么 Java 中 HashMap 的默認負載因子是 0.75?4、JDK 1.8 對 HashMap 除了紅黑樹還…

如何創建并使用極狐GitLab 部署令牌?

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有: 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 部署令牌 (BASIC ALL) 您可以使用部署令牌來啟用部署任務的身份驗證,而與用戶賬戶無關。在大多數情況下&#xf…

OpenGl ES 3.0 筆記一:初步概念

🎯 整體比喻:開一場 3D 打印畫展! 想象你在做一件事情:「拿設計圖,把它畫在一張紙上」。 這整個流程就好像 GPU 在渲染一幅畫。 而下面這幾個階段,就是這場「畫展」里每個具體的人或機器要做的事情&#x…

人類社會的第四階段

本書的主旨是探討一場新的權力革命,它將以20世紀民族國家的毀滅為代價, 解放出個體。創新,以前所未有的方式改變了暴力的邏輯,并且正在革新未來的 邊界。如果我們的推論是正確的,你們正站在一場有史以來最宏大的革命的…

位置差在坐標系間的相互轉換

1 NED轉經緯高 (n 系下的北向、東向和垂向位置差異(單位 m)轉化為緯度、經度和高程分量的差異) 2 基站坐標轉換 緯度、經度、高程 到 ECEF %緯度、經度、高程 到 ECEF clc; clear; glvs; addpath(genpath(E:\GNSSINS\ACES)…

WPF定義擴展屬性和依賴屬性

WPF擴展屬性與依賴屬性詳解 一、依賴屬性(Dependency Property)詳解 1. 什么是依賴屬性? 依賴屬性是WPF框架的核心特性之一,它允許屬性值依賴于: 父元素的屬性值(繼承)樣式和模板動畫數據綁定資源查找2. 依賴屬性的特點 ??屬性值繼承??:子元素可以繼承父元素的屬性…

邊緣函數:全棧開發的最后1毫秒性能革命

一、邊緣計算的時空折疊術 1. 傳統CDN vs. 智能邊緣網絡 全球電商平臺實測數據: 場景云端處理延遲邊緣處理延遲轉化率提升搜索建議320ms8ms18%個性化推薦450ms12ms27%實時庫存檢查680ms9ms42%欺詐檢測920ms15ms63% 二、邊緣全棧架構的量子糾纏 1. 代碼的時空分布…

Codeforces Round 1021 (Div. 2) D. Baggage Claim(建圖)

每周五篇博客:(4/5) https://codeforces.com/contest/2098/problem/D 題意 每個機場都有一個行李索賠區,巴爾貝索沃機場也不例外。在某個時候,Sheremetyevo的一位管理員提出了一個不尋常的想法:將行李索…

LLM(大語言模型)技術的最新進展可總結

截至2025年4月26日,LLM(大語言模型)技術的最新進展可總結為以下關鍵方向: 1. 架構創新與性能突破 多模態能力深化:GPT-4o等模型通過統一架構支持文本、圖像、音頻和視頻的跨模態推理,顯著提升復雜場景下的…

黑馬點評redis改 part 6

GEO數據結構 GEO就是Geolocation的簡寫形式,代表地理坐標。Redis在3.2版本中加入了對GEO的支持,允許存儲地理坐標信息,幫助我們根據經緯度來檢索數據。常見的命令有: GEOADD:添加一個地理空間信息,包含&a…

Spring_MVC 中的 JSON 數據處理與 REST 風格開發

Spring_MVC 中的 JSON 數據處理與 REST 風格開發 一、JSON 格式參數 1. 格式布置 依賴導入 為了處理 JSON 數據&#xff0c;需要在項目中引入 Jackson 庫&#xff0c;它是 Spring_MVC 默認使用的 JSON 處理工具。 <dependency><groupId>com.fasterxml.jackson…

藍橋杯 8. 移動距離

移動距離 原題目鏈接 題目描述 X 星球居民小區的樓房全是一樣的&#xff0c;并且按矩陣樣式排列。樓房的編號為 1, 2, 3, ??。 當排滿一行時&#xff0c;從下一行相鄰的樓往反方向排號。 例如&#xff0c;當小區排號寬度為 6 時&#xff0c;排列如下&#xff1a; 1 2 …

第11章 安全網絡架構和組件(一)

11.1 OSI 模型 協議可通過網絡在計算機之間進行通信。 協議是一組規則和限制&#xff0c;用于定義數據如何通過網絡介質&#xff08;如雙絞線、無線傳輸等&#xff09;進行傳輸。 國際標準化組織(ISO)在20世紀70年代晚期開發了開放系統互連(OSI)參考模型。 11.1.1 OSI模型的…

文獻分享:一種四價雙特異性抗體的功能性和IgG樣穩定性、藥理學和可開發特性研究

背景 雙特異性抗體&#xff08;bsAb&#xff09;是一種有前途的藥物形式&#xff0c;能夠同時結合相同或不同抗原上的兩個不同表位。迄今為止&#xff0c;已有14個雙特異性抗體藥物獲得上市批準&#xff0c;盡管取得了這些成功并且迄今為止設計了多種形式&#xff0c;但具有高…

英文中數字讀法規則

以下是英文中數字讀法的詳細規則&#xff0c;涵蓋基本數字、大數字、小數、分數、序數詞及特殊場景&#xff08;如電話號碼、年份、金額等&#xff09;&#xff1a; 一、基本數字&#xff08;0-10&#xff09; 數字基數詞&#xff08;Cardinal&#xff09;序數詞&#xff08;O…

32BIT的SPI主機控制

SPI傳輸位數可參數化配置。 SPI_MASTER: timescale 1ns / 1ps module SPI_Master #(parameter CLK_FREQ 50,parameter SPI_CLK 1000,parameter CPOL 0,parameter CPHA 0 )(input clk,input rst_n,input WrRdReq, //讀/寫數據請求output …