動手學深度學習(Pytorch版)代碼實踐 -計算機視覺-47轉置卷積

47轉置卷積

在這里插入圖片描述
在這里插入圖片描述

import torch
from torch import nn
from d2l import torch as d2l# 輸入矩陣X和卷積核矩陣K實現基本的轉置卷積運算
def trans_conv(X, K):h, w = K.shapeY = torch.zeros((X.shape[0] + h - 1, X.shape[1] + w - 1))for i in range(X.shape[0]):for j in range(X.shape[1]):Y[i: i + h, j: j + w] += X[i, j] * Kreturn YX = torch.tensor([[0.0, 1.0], [2.0, 3.0]])
K = torch.tensor([[0.0, 1.0], [2.0, 3.0]])
print(trans_conv(X, K))
"""
tensor([[ 0.,  0.,  1.],[ 0.,  4.,  6.],[ 4., 12.,  9.]])
"""# 使用高級API獲得相同的結果
X, K = X.reshape(1, 1, 2, 2), K.reshape(1, 1, 2, 2)
tconv = nn.ConvTranspose2d(1, 1, kernel_size=2, bias=False)
tconv.weight.data = K
print(tconv(X))
"""
tensor([[[[ 0.,  0.,  1.],[ 0.,  4.,  6.],[ 4., 12.,  9.]]]], grad_fn=<SlowConvTranspose2DBackward>)
"""# 填充、步幅和多通道
# 當將高和寬兩側的填充數指定為1時,轉置卷積的輸出中將刪除第一和最后的行與列。
tconv = nn.ConvTranspose2d(1, 1, kernel_size=2, padding=1, bias=False)
tconv.weight.data = K
print(tconv(X))
# tensor([[[[4.]]]], grad_fn=<SlowConvTranspose2DBackward>)# 步幅為2的轉置卷積的輸出
tconv = nn.ConvTranspose2d(1, 1, kernel_size=2, stride=2, bias=False)
tconv.weight.data = K
print(tconv(X))
"""
tensor([[[[0., 0., 0., 1.],[0., 0., 2., 3.],[0., 2., 0., 3.],[4., 6., 6., 9.]]]]
"""X = torch.rand(size=(1, 10, 16, 16))
conv = nn.Conv2d(10, 20, kernel_size=5, padding=2, stride=3)
tconv = nn.ConvTranspose2d(20, 10, kernel_size=5, padding=2, stride=3)
print(conv(X).shape) # torch.Size([1, 20, 6, 6])
print(tconv(conv(X)).shape) # torch.Size([1, 10, 16, 16])
print(tconv(conv(X)).shape == X.shape) # True# 與矩陣變換的聯系
X = torch.arange(9.0).reshape(3, 3)
K = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
Y = d2l.corr2d(X, K)
print(Y)
"""
tensor([[27., 37.],[57., 67.]])
"""# 將卷積核K重寫為包含大量0的稀疏權重矩陣W。 權重矩陣的形狀是4 * 9
def kernel2matrix(K):k, W = torch.zeros(5), torch.zeros((4, 9))k[:2], k[3:5] = K[0, :], K[1, :]W[0, :5], W[1, 1:6], W[2, 3:8], W[3, 4:] = k, k, k, kreturn WW = kernel2matrix(K)
print(W)
"""
tensor([[1., 2., 0., 3., 4., 0., 0., 0., 0.],[0., 1., 2., 0., 3., 4., 0., 0., 0.],[0., 0., 0., 1., 2., 0., 3., 4., 0.],[0., 0., 0., 0., 1., 2., 0., 3., 4.]])
"""print(Y == torch.matmul(W, X.reshape(-1)).reshape(2, 2))
"""
tensor([[True, True],[True, True]])
"""# 使用矩陣乘法來實現轉置卷積
Z = trans_conv(Y, K)
print(Z == torch.matmul(W.T, Y.reshape(-1)).reshape(3, 3))
"""
tensor([[True, True, True],[True, True, True],[True, True, True]])
"""

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

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

相關文章

昇思25天學習打卡營第5天|數據變換Transforms

數據變換Transforms 介紹Transforms分類Common TransformsVision TransformsText TransformsPythonTokenizer LookupLambda Transforms 參考 介紹 MindSpore提供不同種類的數據變換&#xff08;Transforms&#xff09;&#xff0c;配合數據處理Pipeline來實現數據預處理。 所有…

【ROS】apt 找不到 ROS版本?(ROS1和ROS2通用方案)

問題描述 安裝ROS底層系統時&#xff0c;經常遇到一個情況就是apt找不到ros的對應版本 解決方案 添加ros官方給的apt源和安裝密鑰 ROS1 # ros獎項 sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.li…

數學建模 —— MATLAB中的向量

目錄 向量的創建方法 (1)直接輸入法 (2)冒號法&#xff08;常用&#xff09; (3)利用MATLAB函數創建 linspace函數 logspace函數 向量元素的引用 (1)單個元素引用 (2)多個元素引用 向量元素的修改和刪除 向量的創建方法 在 MATLAB中&#xff0c;向量的創建方法主要有…

微軟Edge瀏覽器多用戶配置文件管理:個性化瀏覽體驗

在家庭或工作環境中&#xff0c;經常需要在同一臺計算機上為多個用戶創建和管理獨立的瀏覽體驗。微軟Edge瀏覽器提供了多用戶配置文件管理功能&#xff0c;允許用戶為每個賬戶設置獨立的書簽、歷史記錄、密碼、擴展和設置。本文將詳細介紹如何在微軟Edge中管理多個用戶配置文件…

連接Sql Server時報錯:無法通過使用安全套接字層加密與 SQL Server 建立安全連接

JDBC連接Sql Server時報錯:無法通過使用安全套接字層加密與 SQL Server 建立安全連接 前言解決辦法一解決辦法二總結 前言 今天使用jdbc連接sql server突然報錯為&#xff1a;SQLServerException: “Encrypt”屬性設置為“true”且 “trustServerCertificate”屬性設置為“fals…

GoMate:配置化模塊化的Retrieval-Augmented Generation (RAG) 框架

文章目錄 GoMate簡介1.1 GoMate的核心技術文檔解析向量存儲嵌入模型問題查詢文本生成文檔更新 1.2 GoMate的應用領域智能客服知識庫構建內容生成教育培訓法律文書處理 GoMate的產品特色2.1 文檔解析2.2 向量存儲2.3 嵌入模型2.4 問題查詢2.5 文本生成2.6 文檔更新 GoMate的使用…

解決SPA(單頁應用)首屏加載速度慢

SPA是目前流行的前端開發模式&#xff0c;相對于傳統的多頁面用戶體驗更好&#xff0c;操作更順暢&#xff0c;開發效率也更高。但是SPA首屏加載速度慢一直是個致命的問題&#xff0c;由于SPA應用首次打開需要一次性加載大量的靜態資源&#xff0c;這就導致了加載速度慢的問題&…

監聽設備方向變化?分享 1 段優質 JS 代碼片段!

大家好&#xff0c;我是大澈&#xff01; 本文約 700 字&#xff0c;整篇閱讀約需 1 分鐘。 每日分享一段優質代碼片段。 今天分享一段 JS 代碼片段&#xff0c;用于在H5端監聽設備方向的變化。 老規矩&#xff0c;先閱讀代碼片段并思考&#xff0c;再看代碼解析再思考&#…

文件夾內-資源名稱前加序號排列

問題&#xff1a;在文件夾下的資源可以按時間排序&#xff0c;導入unity后資源順序會亂掉&#xff0c;不方便按順序賦值&#xff0c;為了方便&#xff0c;通過下面方法在文件夾下統一在資源名稱前按順序加上序號 win11在文件夾內右鍵&#xff0c;選擇——在終端中打開 輸入&a…

制造企業用AI可以做什么?

ChatGPT橫空出世&#xff0c;有關AI的浪潮席卷全球&#xff0c;比起人工智能如何改變世界&#xff0c;可能你更感興趣我能用AI可以做的事情是什么&#xff1f; 制造企業用AI可以做的事情是什么?人工智能在制造企業中可以做很多事情&#xff0c;以下是一些主要的應用&#xff1…

企業源代碼加密軟件丨透明加密技術是什么

在一個繁忙的軟件開發公司中&#xff0c;兩位員工小李和小張正在討論源代碼安全的問題。 “小張&#xff0c;你有沒有想過我們的源代碼如果被泄露了怎么辦&#xff1f;”小李擔憂地問。 “是啊&#xff0c;這是個大問題。源代碼是我們的核心競爭力&#xff0c;一旦泄露&#…

LUA 語言中subtree 的使用教程

在線編輯器&#xff1a; https://www.runoob.com/try/runcode.php?filenameHelloWorld&typelua 在Lua語言中&#xff0c;"subtree"通常指的是一個子表或者子樹&#xff0c;它指的是一個Lua表&#xff08;table&#xff09;中的一個部分&#xff0c;可以是一個單…

<電力行業> - 《第8課:輸電(一)》

1 輸電環節的意義 電能的傳輸&#xff0c;是電力系統整體功能的重要組成環節。發電廠與電力負荷中心通常都位于不同地區。在水力、煤炭等一次能源資源條件適宜的地點建立發電廠&#xff0c;通過輸電可以將電能輸送到遠離發電廠的負荷中心&#xff0c;使電能的開發和利用超越地…

哪些存儲器內可以直接運行程序?

存儲器是否可以運行程序&#xff0c;主要取決于其是否支持eXecute In Place (XIP) 或類似的直接執行特性。下面根據不同存儲器進行分別說明&#xff1a; 1.PROM&#xff08;Programmable Read-Only Memory&#xff0c;可編程只讀存儲器&#xff09;是一種可以通過用戶編程來存…

fiddler使用

1、設置抓取HTTPS的請求 先選中瀏覽器Browser---Chrome 默認是不抓https的數據包的 有時我們抓取的的包是https的&#xff0c;不是http的&#xff0c;就要做一些設置 Tools---Options 勾選Capture HTTPS CONNECTs 勾選Decrypt HTTPS traffic 勾選 Ignore server certificat…

(單機版)神魔大陸|v0.51.0|冰火榮耀

前言 今天給大家帶來一款單機游戲的架設&#xff1a;神魔大陸v0.51.0:冰火榮耀。 如今市面上的資源參差不齊&#xff0c;大部分的都不能運行&#xff0c;本人親自測試&#xff0c;運行視頻如下&#xff1a; (單機版)神魔大陸 下面我將詳細的教程交給大家&#xff0c;請耐心閱…

[數據集][目標檢測]電力場景下電柜箱門把手檢測數據集VOC+YOLO格式1167張1類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;1167 標注數量(xml文件個數)&#xff1a;1167 標注數量(txt文件個數)&#xff1a;1167 標注…

編譯工具-Gradle

文章目錄 Idea中配置Gradle項目project目錄settings.gradlebuild.gradlegradlewgradlew.bat Gradle Build生命周期編寫Settings.gradle編寫Build.gradleTasksPlugins Idea中配置 配置項&#xff1a;gradle位置 及倉庫位置 Gradle項目 Task&#xff0c;settings.gradle,build.…

微型無人機未來發展方向

盡管今天的納米和微型無人機顯示出比早期系統大得多的能力&#xff0c;但在速度、續航能力、航程和有效載荷能力方面仍然存在局限性。在任何或所有這些領域的改進將使部隊能夠在推進或打擊之前收集更大、更詳細的可操作情報。這將允許優化任務規劃&#xff0c;并有可能減少傷亡…

java一面 哭了-------

常見的設計模式 首先設計模式可分為三大類 創建型模式 單例模式&#xff1a;一個類只有一個實例&#xff0c;并提供全局訪問&#xff1b;工廠模式&#xff1a;將創建實例的過程隱藏&#xff0c;實例通過一個工廠方法返回&#xff1b;抽象工廠模式&#xff1a;提供一個創建實…