基礎神經網絡模型搭建

nn 包提供通用深度學習網絡的模塊集合,接收輸入張量,計算輸出張量,并保存權重。通常使用兩種途徑搭建 PyTorch 中的模型:nn.Sequential和 nn.Module。

nn.Sequential通過線性層有序組合搭建模型;nn.Module通過__init__ 函數指定層,然后通過?forward 函數將層應用于輸入,更靈活地構建自定義模型。

目錄

搭建線性層

通過nn.Sequential搭建

通過nn.Module搭建

獲取模型摘要


搭建線性層

使用 nn 包搭建線性層。線性層接收 64*1000 維的輸入,保存 1000*100 維的權重,并計算 64*100 維的輸出。

import torch
from torch import nn
input_tensor = torch.randn(64, 1000)
linear_layer = nn.Linear(1000, 100)
output = linear_layer(input_tensor)
print(input_tensor.size())
print(output.size())

通過nn.Sequential搭建

考慮一個兩層的神經網絡,四個節點作為輸入,五個節點在隱藏層,一個節點作為輸出

from torch import nn
model = nn.Sequential(nn.Linear(4, 5),nn.ReLU(),nn.Linear(5, 1),
)
print(model)

通過nn.Module搭建

在 PyTorch 中搭建模型的另一種方法是對 nn.Module?類進行子類化,通過__init__ 函數指定層,然后通過?forward 函數將層應用于輸入,更靈活地構建自定義模型。

考慮兩個卷積層和兩個完全連接層搭建的模型:

import torch.nn.functional as F
class Net(nn.Module):def __init__(self):super(Net, self).__init__()def forward(self, x):pass

定義__init__ 函數和forward 函數

def __init__(self):super(Net, self).__init__()self.conv1 = nn.Conv2d(1, 20, 5, 1)self.conv2 = nn.Conv2d(20, 50, 5, 1)self.fc1 = nn.Linear(4*4*50, 500)self.fc2 = nn.Linear(500, 10)
def forward(self, x):x = F.relu(self.conv1(x))x = F.max_pool2d(x, 2, 2)x = F.relu(self.conv2(x))x = F.max_pool2d(x, 2, 2) x = x.view(-1, 4*4*50)x = F.relu(self.fc1(x))x = self.fc2(x)return F.log_softmax(x, dim=1)

重寫兩個類函數并打印模型

重寫:子類中實現一個與父類的成員函數原型完全相同的函數

Net.__init__ = __init__
Net.forward = forward
model = Net()
print(model)

?查看模型位置

print(next(model.parameters()).device)

?

將模型移動至CUDA設備?

device = torch.device("cuda:0")
model.to(device)
print(next(model.parameters()).device)

獲取模型摘要

借助torchsummary包查獲取模型摘要

pip install torchsummary
from torchsummary import summary
summary(model, input_size=(1, 28, 28))

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

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

相關文章

基于單片機出租車計價器設計

傳送門 👉👉👉👉其他作品題目速選一覽表 👉👉👉👉其他作品題目功能速覽 概述 本設計實現了一種基于單片機的智能化出租車計價系統。系統以單片機為核心處理器,集成…

134. Java 泛型 - 上限通配符

文章目錄134. Java 泛型 - 上限通配符 (? extends T)**1. 什么是上限通配符 (? extends T)?****2. 為什么使用 ? extends T?****3. 示例:使用 ? extends T 進行數據讀取****? 示例 1:計算數值列表的總和****4. 注意事項&…

【1】YOLOv13 AI大模型-可視化圖形用戶(GUI)界面系統開發

【文章內容適用于任意目標檢測任務】【GUI界面系統不局限于YOLOV13,主流YOLO系列模型同樣適用】本文以車輛行人檢測為背景,介紹基于【YOLOV13模型】和【AI大模型】的圖形用戶(GUI)界面系統的開發。助力大論文實現目標檢測模型的應…

小程序常用api

1. wx.request - 發起網絡請求 用于向服務器發送 HTTP 請求,獲取數據或提交表單。 // 示例:GET 請求獲取數據 wx.request({url: https://api.example.com/data, // 替換為實際 API 地址method: GET,success: (res) > {console.log(請求成功, res.da…

PaliGemma 2-輕量級開放式視覺語言模型

PaliGemma 2是輕量級開放式視覺語言模型 (VLM),靈感源自 PaLI-3,基于 SigLIP 視覺模型和 Gemma 語言模型等開放式組件。PaliGemma 同時接受圖片和文本作為輸入,并且可以回答有關圖片的詳細問題和背景信息。PaliGemma 2 提供 30 億、100 億和 …

騰訊云云服務器深度介紹

以下是圍繞騰訊云云服務器(CVM)的詳細介紹與推薦文章,結合其核心優勢、應用場景及技術特性,為不同用戶群體提供參考: 🚀 一、產品定位與核心價值 騰訊云云服務器(Cloud Virtual Machine, CVM&a…

Ceph OSD.419 故障分析

Ceph OSD.419 故障分析 1. 問題描述 在 Ceph 存儲集群中,OSD.419 無法正常啟動,系統日志顯示服務反復重啟失敗。 2. 初始狀態分析 觀察到 OSD.419 服務啟動失敗的系統狀態: systemctl status ceph-osd419 ● ceph-osd419.service - Ceph obje…

MySQL持久化原理及其常見問題

目錄 MySQL刷盤原理 臟頁和干凈頁 MySQL出現短暫的堵塞SQL現象 情況分析 應對措施 數據庫表中數據刪除原理 刪除表中數據數據庫空間大小不會改變 情況分析 應對措施 MySQL刷盤原理 一般主要分為兩個步驟 內存更新和 redo log 記錄是同一事務修改的兩個必要操作&#…

VSCode中Cline無法正確讀取終端的問題解決

出現的問題是:Cline 無法正確讀取終端輸出。 Shell Integration Unavailable Cline won’t be able to view the command’s output. Please update VSCode (CMD/CTRL Shift P → “Update”) and make sure you’re using a supported shell: zsh, bash, fish, o…

scalelsd 筆記 線段識別 本地部署 模型架構

ant-research/scalelsd | DeepWiki https://arxiv.org/html/2506.09369?_immersive_translate_auto_translate1 https://gitee.com/njsgcs/scalelsd https://github.com/ant-research/scalelsd https://huggingface.co/cherubicxn/scalelsd 模型鏈接: https…

Python, C ++開發個體戶/個人品牌打造APP

個體戶/個人品牌打造APP開發方案(Python C)一、技術選型與分工1. Python- 核心場景:后端API開發、數據處理、內容管理、第三方服務集成(如社交媒體分享、支付接口)。- 優勢:開發效率高,豐富的庫…

SQLAlchemy 常見問題筆記

文章目錄SQLAlchemy Session對象如何操作數據庫SQLAlchemy非序列化對象如何返回1.問題分析2.解決方案方法1:使用 Pydantic 響應模型(推薦)方法2:手動轉換為字典(簡單快速)方法3:使用 SQLAlchemy…

Shell腳本-uniq工具

一、前言在 Linux/Unix 系統中,uniq 是一個非常實用的文本處理命令,用于對重復的行進行統計、去重和篩選。它通常與 sort 搭配使用,以實現高效的文本數據清洗與統計分析。無論是做日志分析、訪問頻率統計,還是編寫自動化腳本&…

氛圍編碼(Vice Coding)的工具選擇方式

一、前言 在寫作過程中,我受益于若干優秀的博客分享,它們給予我寶貴的啟發: 《5分鐘選對AI編輯器,每天節省2小時開發時間讓你早下班!》:https://mp.weixin.qq.com/s/f0Zm3uPTcNz30oxKwf1OQQ 二、AI編輯的…

[硬件電路-57]:根據電子元器件的受控程度,可以把電子元器件分為:不受控、半受控、完全受控三種大類

根據電子元器件的受控程度,可將其分為不受控、半受控、完全受控三大類。這種分類基于元器件的工作狀態是否需要外部信號(如電壓、電流、光、熱等)的主動調控,以及調控的精確性和靈活性。以下是具體分類及實例說明:一、…

基于Pytorch的人臉識別程序

人臉識別原理詳解人臉識別是模式識別和計算機視覺領域的重要研究方向,其目標是從圖像或視頻中識別出特定個體的身份。現代人臉識別技術主要基于深度學習方法,特別是卷積神經網絡 (CNN),下面從多個維度詳細解析其原理:1. 人臉識別的…

ubuntu 開啟ssh踩坑之旅

文章目錄確認當前用戶為普通用戶 or root命令使用ssh還是sshd服務名稱的由來apt update和apt upgrade的關系apt upgrade報錯:“E: 您在 /var/cache/apt/archives/ 上沒有足夠的可用空間”開啟ssh步驟錯誤排查查看日志修改sshd_config文件允許防火墻通過22端口確認當…

力扣:動態規劃java

sub07 線性DP - O(1) 狀態轉移2_嗶哩嗶哩_bilibili 跳樓梯 class Solution {public int climbStairs(int n) {if (n < 1) {return 1; // 處理邊界情況}int[] dp new int[n 1]; // 創建長度為n1的數組&#xff0c;比方說跳二級樓梯dp[0] 1; // 初始值設定dp[1] 1;for (…

React Native打開相冊選擇圖片或拍照 -- react-native-image-picker

官方文檔&#xff1a;https://www.npmjs.com/package/react-native-image-picker 場景&#xff1a;點擊按鈕打開相冊選擇圖片或者點擊按鈕拍照 import { launchCamera, launchImageLibrary } from react-native-image-picker;// ... <TouchableOpacityactiveOpacity{0.7}o…

USRP B210生成信號最大帶寬測試之Frank

書接上文&#xff1a; USRP B210生成LFM,SFM,BPSK,Frank信號的最大帶寬測試&#xff08;一&#xff09; USRP B210生成信號最大帶寬測試&#xff08;二&#xff09;SFM USRP B210生成信號最大帶寬測試&#xff08;三&#xff09;LFM USRP B210生成信號最大帶寬測試之BPSK …