【PyTorch】4.張量拼接操作

???????

個人主頁:Icomi

在深度學習蓬勃發展的當下,PyTorch 是不可或缺的工具。它作為強大的深度學習框架,為構建和訓練神經網絡提供了高效且靈活的平臺。神經網絡作為人工智能的核心技術,能夠處理復雜的數據模式。通過 PyTorch,我們可以輕松搭建各類神經網絡模型,實現從基礎到高級的人工智能應用。接下來,就讓我們一同走進 PyTorch 的世界,探索神經網絡與人工智能的奧秘。本系列為PyTorch入門文章,若各位大佬想持續跟進,歡迎與我交流互關。

?????????前面我們學習了張量和 numpy 數組的相互轉換,這是我們在深度學習數據處理中非常實用的技能。

????????今天,咱們要講講張量的拼接操作,這可是在神經網絡搭建過程中極為常用的方法,就好比搭建一座宏偉建筑時不可或缺的連接工藝。想象一下,我們構建神經網絡就像搭建一座復雜的大廈,張量就是構成大廈的各種預制構件,而拼接操作就像是把這些構件精準連接在一起的關鍵技術。

????????比如說,在后面將要學習到的殘差網絡里,張量的拼接起到了至關重要的作用。殘差網絡能夠有效解決深度神經網絡訓練過程中的梯度消失和梯度爆炸問題,讓網絡可以更深層次地學習數據特征。這里面,通過巧妙地拼接不同層的張量,就像是把不同功能的建筑模塊合理組合,從而構建出了強大的深層網絡結構。

????????還有注意力機制,這也是深度學習領域的一個重要概念。在注意力機制中,張量的拼接幫助我們對不同的信息進行整合與聚焦,就像在紛繁復雜的信息海洋中,通過拼接操作找到最關鍵的信息片段并組合起來,讓模型能夠更加 “聰明” 地處理數據。

????????所以,掌握張量的拼接操作,對于我們理解和構建先進的神經網絡模型至關重要。接下來,咱們就深入學習一下張量的拼接到底是怎么實現的,以及在不同場景下該如何靈活運用它。

1. torch.cat 函數的使用?

torch.cat 函數可以將兩個張量根據指定的維度拼接起來.
?

import torchdef tensor_concatenation():# 創建第一個三維隨機整數張量tensor_1 = torch.randint(0, 10, [3, 5, 4])# 創建第二個三維隨機整數張量tensor_2 = torch.randint(0, 10, [3, 5, 4])print(tensor_1)print(tensor_2)print('-' * 50)# 1. 按 0 維度拼接concatenated_tensor_dim0 = torch.cat([tensor_1, tensor_2], dim=0)print(concatenated_tensor_dim0.shape)print('-' * 50)# 2. 按 1 維度拼接concatenated_tensor_dim1 = torch.cat([tensor_1, tensor_2], dim=1)print(concatenated_tensor_dim1.shape)print('-' * 50)# 3. 按 2 維度拼接concatenated_tensor_dim2 = torch.cat([tensor_1, tensor_2], dim=2)print(concatenated_tensor_dim2)if __name__ == '__main__':tensor_concatenation()

程序輸出結果:

tensor([[[6, 8, 3, 5],[1, 1, 3, 8],[9, 0, 4, 4],[1, 4, 7, 0],[5, 1, 4, 8]],[[0, 1, 4, 4],[4, 1, 8, 7],[5, 2, 6, 6],[2, 6, 1, 6],[0, 7, 8, 9]],[[0, 6, 8, 8],[5, 4, 5, 8],[3, 5, 5, 9],[3, 5, 2, 4],[3, 8, 1, 1]]])
tensor([[[4, 6, 8, 1],[0, 1, 8, 2],[4, 9, 9, 8],[5, 1, 5, 9],[9, 4, 3, 0]],[[7, 6, 3, 3],[4, 3, 3, 2],[2, 1, 1, 1],[3, 0, 8, 2],[8, 6, 6, 5]],[[0, 7, 2, 4],[4, 3, 8, 3],[4, 2, 1, 9],[4, 2, 8, 9],[3, 7, 0, 8]]])
--------------------------------------------------
torch.Size([6, 5, 4])
--------------------------------------------------
torch.Size([3, 10, 4])
tensor([[[6, 8, 3, 5, 4, 6, 8, 1],[1, 1, 3, 8, 0, 1, 8, 2],[9, 0, 4, 4, 4, 9, 9, 8],[1, 4, 7, 0, 5, 1, 5, 9],[5, 1, 4, 8, 9, 4, 3, 0]],[[0, 1, 4, 4, 7, 6, 3, 3],[4, 1, 8, 7, 4, 3, 3, 2],[5, 2, 6, 6, 2, 1, 1, 1],[2, 6, 1, 6, 3, 0, 8, 2],[0, 7, 8, 9, 8, 6, 6, 5]],[[0, 6, 8, 8, 0, 7, 2, 4],[5, 4, 5, 8, 4, 3, 8, 3],[3, 5, 5, 9, 4, 2, 1, 9],[3, 5, 2, 4, 4, 2, 8, 9],[3, 8, 1, 1, 3, 7, 0, 8]]])

2. torch.stack 函數的使用?

torch.stack 函數可以將兩個張量根據指定的維度疊加起來.

import torchdef test():data1= torch.randint(0, 10, [2, 3])data2= torch.randint(0, 10, [2, 3])print(data1)print(data2)new_data = torch.stack([data1, data2], dim=0)print(new_data.shape)new_data = torch.stack([data1, data2], dim=1)print(new_data.shape)new_data = torch.stack([data1, data2], dim=2)print(new_data)if __name__ == '__main__':test()

3. 總結?

張量的拼接操作也是在后面我們經常使用一種操作。cat 函數可以將張量按照指定的維度拼接起來,stack 函數可以將張量按照指定的維度疊加起來。

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

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

相關文章

jstat命令詳解

jstat 用于監視虛擬機運行時狀態信息的命令,它可以顯示出虛擬機進程中的類裝載、內存、垃圾收集、JIT 編譯等運行數據。 命令的使用格式如下。 jstat [option] LVMID [interval] [count]各個參數詳解: option:操作參數LVMID:本…

App.Current.Services.GetService<UserView>()無限循環

代碼無線循環 public partial class UserView : UserControl{public UserView(){InitializeComponent();InitData();}private void InitData(){DataContext App.Current.Services.GetService<UserView>();}} } DataContext App.Current.Services.GetService<User…

(動態規劃路徑基礎 最小路徑和)leetcode 64

視頻教程 1.初始化dp數組&#xff0c;初始化邊界 2、從[1行到n-1行][1列到m-1列]依次賦值 #include<vector> #include<algorithm> #include <iostream>using namespace std; int main() {vector<vector<int>> grid { {1,3,1},{1,5,1},{4,2,1}…

松靈機器人 scout ros2 驅動 安裝

必須使用 ubuntu22 必須使用 鏈接的humble版本 #打開can 口 sudo modprobe gs_usbsudo ip link set can0 up type can bitrate 500000sudo ip link set can0 up type can bitrate 500000sudo apt install can-utilscandump can0mkdir -p ~/ros2_ws/srccd ~/ros2_ws/src git cl…

pytorch基于GloVe實現的詞嵌入

PyTorch 實現 GloVe&#xff08;Global Vectors for Word Representation&#xff09; 的完整代碼&#xff0c;使用 中文語料 進行訓練&#xff0c;包括 共現矩陣構建、模型定義、訓練和測試。 1. GloVe 介紹 基于詞的共現信息&#xff08;不像 Word2Vec 使用滑動窗口預測&…

C++ 堆棧分配的區別

這兩種聲明方式有什么區別 1.使用 new 關鍵字動態分配內存 動態分配&#xff1a;使用 new 關鍵字會在堆&#xff08;heap&#xff09;上分配內存&#xff0c;并返回一個指向該內存位置的指針。生命周期&#xff1a;對象的生命周期不會隨著聲明它的作用域結束而結束&#xff0…

深入解析 Linux 內核中的頁面錯誤處理機制

在現代操作系統中,頁面錯誤(Page Fault)是內存管理的重要組成部分。當程序試圖訪問未映射到物理內存的虛擬內存地址時,CPU 會觸發頁面錯誤異常。Linux 內核通過一系列復雜的機制來處理這些異常,確保系統的穩定性和性能。本文將深入解析 Linux 內核中處理頁面錯誤的核心代碼…

MATLAB-Simulink并行仿真示例

一、概述 在進行simulink仿真的過程中常常遇到CPU利用率較低&#xff0c;仿真緩慢的情況&#xff0c;可以借助并行仿真改善這些問題&#xff0c;其核心思想是將參數掃描、蒙特卡洛分析或多工況驗證等任務拆分成多個子任務&#xff0c;利用多核CPU或計算集群的并行計算能力&…

Workbench 中的熱源仿真

探索使用自定義工具對移動熱源進行建模及其在不同行業中的應用。 了解熱源動力學 對移動熱源進行建模為各種工業過程和應用提供了有價值的見解。激光加熱和材料加工使用許多激光束來加熱、焊接或切割材料。盡管在某些情況下&#xff0c;熱源 &#xff08;q&#xff09; 不是通…

I2C基礎知識

引言 這里祝大家新年快樂&#xff01;前面我們介紹了串口通訊協議&#xff0c;現在我們繼續來介紹另一種常見的簡單的串行通訊方式——I2C通訊協議。 一、什么是I2C I2C 通訊協議&#xff08;Inter-Integrated Circuit&#xff09;是由Phiilps公司在上個世紀80年代開發的&#…

深度學習 DAY3:NLP發展史

NLP發展史 NLP發展脈絡簡要梳理如下&#xff1a; (遠古模型&#xff0c;上圖沒有但也可以算NLP&#xff09; 1940 - BOW&#xff08;無序統計模型&#xff09; 1950 - n-gram&#xff08;基于詞序的模型&#xff09; (近代模型&#xff09; 2001 - Neural language models&am…

CSS 背景與邊框:從基礎到高級應用

CSS 背景與邊框&#xff1a;從基礎到高級應用 1. CSS 背景樣式1.1 背景顏色示例代碼&#xff1a;設置背景顏色 1.2 背景圖像示例代碼&#xff1a;設置背景圖像 1.3 控制背景平鋪行為示例代碼&#xff1a;控制背景平鋪 1.4 調整背景圖像大小示例代碼&#xff1a;調整背景圖像大小…

HarmonyOS簡介:應用開發的機遇、挑戰和趨勢

問題 更多的智能設備并沒有帶來更好的全場景體驗 連接步驟復雜數據難以互通生態無法共享能力難以協同 主要挑戰 針對不同設備上的不同操作系統&#xff0c;重復開發&#xff0c;維護多套版本 多種語言棧&#xff0c;對人員技能要求高 多種開發框架&#xff0c;不同的編程…

【Linux】列出所有連接的 WiFi 網絡的密碼

【Linux】列出所有連接的 WiFi 網絡的密碼 終端輸入 sudo grep psk /etc/NetworkManager/system-connections/*會列出所有連接過 Wifi 的信息&#xff0c;格式類似 /etc/NetworkManager/system-connections/AAAAA.nmconnection:pskBBBBBAAAAA 是 SSID&#xff0c;BBBBB 是對…

如何使用tushare pro獲取股票數據——附爬蟲代碼以及tushare積分獲取方式

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、pandas是什么&#xff1f;二、使用步驟 1.引入庫2.讀入數據 總結 一、Tushare 介紹 Tushare 是一個提供中國股市數據的API接口服務&#xff0c;它允許用戶…

觀察者模式和訂閱發布模式的關系

有人把觀察者模式等同于發布訂閱模式&#xff0c;也有人認為這兩種模式存在差異&#xff0c;本質上就是調度的方法不同。 發布訂閱模式: 觀察者模式: 相比較&#xff0c;發布訂閱將發布者和觀察者之間解耦。&#xff08;發布訂閱有調度中心處理&#xff09;

linux 環境安裝 dlib 的 gpu 版本

默認使用 pip 安裝的 dlib 是不使用 gpu 的 在國內社區用百度查如何安裝 gpu 版本的 dlib 感覺信息都不太對&#xff0c;都是說要源碼編譯還有點復雜 還需要自己安裝 cuda 相關的包啥的&#xff0c;看著就頭大 于是想到這個因該 conda 自己就支持了吧&#xff0c;然后查了一下…

【HarmonyOS之旅】基于ArkTS開發(三) -> 兼容JS的類Web開發(二)

目錄 1 -> HML語法 1.1 -> 頁面結構 1.2 -> 數據綁定 1.3 -> 普通事件綁定 1.4 -> 冒泡事件綁定5 1.5 -> 捕獲事件綁定5 1.6 -> 列表渲染 1.7 -> 條件渲染 1.8 -> 邏輯控制塊 1.9 -> 模板引用 2 -> CSS語法 2.1 -> 尺寸單位 …

三路排序算法

三路排序算法 引言 排序算法是計算機科學中基礎且重要的算法之一。在數據分析和處理中&#xff0c;排序算法的效率直接影響著程序的執行速度和系統的穩定性。本文將深入探討三路排序算法&#xff0c;包括其原理、實現和應用場景。 一、三路排序算法的原理 三路排序算法是一…

Python的那些事第五篇:數據結構的藝術與應用

新月人物傳記&#xff1a;人物傳記之新月篇-CSDN博客 目錄 一、列表&#xff08;List&#xff09;&#xff1a;動態的容器 二、元組&#xff08;Tuple&#xff09;&#xff1a;不可變的序列 三、字典&#xff08;Dict&#xff09;&#xff1a;鍵值對的集合 四、集合&#xf…