8.卷積神經網絡基礎

8.1 卷積核計算

import torch 
from torch import nn
import matplotlib.pyplot as plt
def corr2d(X,k):#計算二維互相關運算h,w=k.shape#卷積核的長和寬Y=torch.zeros((X.shape[0]-h+1,X.shape[1]-w+1))#創建(X-H+1,X-W+1)的全零矩陣for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,j]=(X[i:i+h,j:j+w]*k).sum()#不指定dim的話是全部都加載一起#print(X[i:i+h,j:j+w]*k)return Y
X = torch.tensor([[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]])
K = torch.tensor([[0.0, 1.0], [2.0, 3.0]])
Y=corr2d(X, K)

8.2 卷積核邊緣計算

import torch 
from torch import nn
import matplotlib.pyplot as plt
def corr2d(X,k):#計算二維互相關運算h,w=k.shape#卷積核的長和寬Y=torch.zeros((X.shape[0]-h+1,X.shape[1]-w+1))#創建(X-H+1,X-W+1)的全零矩陣for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,j]=(X[i:i+h,j:j+w]*k).sum()#不指定dim的話是全部都加載一起#print(X[i:i+h,j:j+w]*k)return Y
X = torch.ones((6, 8))
X[:, 2:6] = 0
K=torch.tensor([[1.0,-1.0]])
Y=corr2d(X,K)#這樣檢測之后如果兩個水平相鄰的元素相同則輸出為0,否則則是非0元素
print(Y)

8.3 卷積核學習設計

#卷積層設計--學習卷積核
import torch 
from torch import nn
import matplotlib.pyplot as plt
def corr2d(X,k):#計算二維互相關運算h,w=k.shape#卷積核的長和寬Y=torch.zeros((X.shape[0]-h+1,X.shape[1]-w+1))#創建(X-H+1,X-W+1)的全零矩陣for i in range(Y.shape[0]):for j in range(Y.shape[1]):Y[i,j]=(X[i:i+h,j:j+w]*k).sum()#不指定dim的話是全部都加載一起#print(X[i:i+h,j:j+w]*k)return Y
class Conv2D(nn.Module):def __init__(self, kernel_size):super().__init__()self.weight=nn.Parameter(torch.rand(kernel_size))self.bias=nn.Parameter(torch.zeros(1))def forward(self,x):return corr2d(x,self.weight)+self.bias
X = torch.ones((6, 8))
X[:, 2:6] = 0
K=torch.tensor([[1.0,-1.0]])
Y = corr2d(X, K)
conv2d=Conv2D(kernel_size=(1,2))
optimizer=torch.optim.SGD(conv2d.parameters(),lr=0.05)
for epoch in range(500):out=conv2d(X)loss=((out-Y)**2).mean()optimizer.zero_grad()loss.backward()optimizer.step()print(f"Epoch {epoch+1}, loss = {loss.item():.4f}")
print(conv2d.weight.data)
print(conv2d.bias.data)

8.4 Q&A

在這里插入圖片描述

1.沒有什么本質區別,兩者其實是一樣的
2.權重變形只是數學算法上推理理解的概念,重新索引是指將權重矩陣的坐標與卷積結果的位置匹配上,所以要用到i,j,a,b四個維度的坐標。
3.圖像輸入進來就是矩陣了,在前面只不過是由于機器學習分類器的緣故必須做flatten操作,卷積神經網絡就沒有必要做這個操作了,本質上其就是個二維矩陣。
4.沒有特定的要求一般不用可變卷積
5.感受野是局部的感受,但是隨著卷積肯定能看完所有的圖像信息,那我不妨把感受野設計小一些,讓模型看的更仔細,然后在深層網絡中一步一步提取逐漸變深。
6.當然可以了,有相關的文章。
7.-號在數學中相當于卷積核反過來計算,這樣的結果可能有些不一樣了,但可能只是和FFT公示推導有關系,深度學習的卷積是正常的做corr相關計算的。
8.平移不變指的是卷積核的數是在這一卷積操作過程中平移不變的,卷積核的大小體現了局部性。

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

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

相關文章

【每天一個知識點】子空間聚類(Subspace Clustering)

“子空間聚類(Subspace Clustering)”是一種面向高維數據分析的聚類方法,它通過在數據的低維子空間中尋找簇結構,解決傳統聚類在高維空間中“維度詛咒”帶來的問題。子空間聚類簡介在高維數據分析任務中,如基因表達、圖…

《匯編語言:基于X86處理器》第7章 整數運算(2)

本章將介紹匯編語言最大的優勢之一:基本的二進制移位和循環移位技術。實際上,位操作是計算機圖形學、數據加密和硬件控制的固有部分。實現位操作的指令是功能強大的工具,但是高級語言只能實現其中的一部分,并且由于高級語言要求與平臺無關&am…

JVM故障處理與類加載全解析

1、故障處理工具基礎故障處理工具jps:可以列出正在運行的虛擬機進程,并顯示虛擬機執行主類(Main Class,main()函數所在的類)名稱以及這些進程的本地虛擬機唯一ID(LVMID,Local Virtual Machine I…

Python 第三方庫的安裝與卸載全指南

在 Python 開發中,第三方庫是提升效率的重要工具。無論是數據分析、Web 開發還是人工智能領域,都離不開豐富的第三方資源。本文將詳細介紹 Python 第三方庫的安裝與卸載方法,幫助開發者輕松管理依賴環境。 一、第三方庫安裝方法 1. pip 工具…

RabbitMQ 高級特性之消息分發

1. 為什么要消息分發當 broker 擁有多個消費者時,就會將消息分發給不同的消費者,消費者之間的消息不會重復,RabbitMQ 默認的消息分發機制是輪詢,但會無論消費者是否發送了 ack,broker 都會繼續發送消息至消費者&#x…

Linux操作系統從入門到實戰:怎么查看,刪除,更新本地的軟件鏡像源

Linux操作系統從入門到實戰:怎么查看,刪除,更新本地的軟件鏡像源前言一、 查看當前鏡像源二、刪除當前鏡像源三、更新鏡像源四、驗證前言 我的Linux版本是CentOS 9 stream本篇博客我們來講解怎么查看,刪除,更新國內本…

兩臺電腦通過網線直連形成局域網,共享一臺wifi網絡實現上網

文章目錄一、背景二、實現方式1、電腦A(主)2、電腦B3、防火墻4、驗證三、踩坑1、有時候B上不了網一、背景 兩臺windows電腦A和B,想通過**微軟無界鼠標(Mouse without Borders)**實現一套鍵盤鼠標控制兩臺電腦&#xf…

Java Reference類及其實現類深度解析:原理、源碼與性能優化實踐

1. 引言:Java引用機制的核心地位在JVM內存管理體系中,Java的四種引用類型(強、軟、弱、虛)構成了一個精巧的內存控制工具箱。它們不僅決定了對象的生命周期,還為緩存設計、資源釋放和內存泄漏排查提供了基礎設施支持。…

華為云對碳管理系統的全生命周期數據處理流程

碳管理系統的全生命周期數據處理流程包含完整的數據采集、處理、治理、分析和應用的流程架構,可以理解為是一個核心是圍繞數據的“采集-傳輸-處理-存儲-治理-分析-應用”鏈路展開。以下是對每個階段的解釋,以及它們與數據模型、算法等的關系: 1. 設備接入(IoTDA) 功能: …

大模型安全風險與防護產品綜述 —— 以 Otter LLM Guard 為例

大模型安全風險與防護產品綜述 —— 以 Otter LLM Guard 為例 一、背景與安全風險 近年來,隨著大規模預訓練語言模型(LLM)的廣泛應用,人工智能已成為推動文檔處理、代碼輔助、內容審核等多領域創新的重要技術。然而,…

1.2.2 計算機網絡分層結構(下)

繼續來看計算機網絡的分層結構,在之前的學習中,我們介紹了計算機網絡的分層結構,以及各層之間的關系。我們把工作在某一層的軟件和硬件模塊稱為這一層的實體,為了完成這一層的某些功能,同一層的實體和實體之間需要遵循…

實訓八——路由器與交換機與網線

補充——基本功能路由器:用于不同邏輯網段通信的交換機:用于相同邏輯網段通信的1.網段邏輯網段(IP地址網段):IP地址的前三組數字代表不同的邏輯網段(有限條件下);IP地址的后一組數字…

C++——構造函數的補充:初始化列表

C中,構造函數為成員變量賦值的方法有兩種:構造函數體賦值和初始化列表。構造函數體賦值是在構造函數里面為成員變量賦值,如:class Data { public://構造函數體賦值Data(int year,int month,int day){_year year;_month month;_d…

代碼隨想錄|圖論|12島嶼周長

leetcode:106. 島嶼的周長 題目 題目描述 給定一個由 1(陸地)和 0(水)組成的矩陣,島嶼是被水包圍,并且通過水平方向或垂直方向上相鄰的陸地連接而成的。 你可以假設矩陣外均被水包圍。在矩陣中恰好擁有…

開發制作模仿參考抄別人的小程序系統

很多老板看見別人公司的小程序系統界面好看,功能強大,使用人數多。就想要抄襲模仿參考別人家的小程序系統。想要了解一下有沒有侵權風險,以及怎么開發制作開發制作模仿參考抄別人的小程序系統。首先回答第一個問題,只要你的小程序…

c語言中的數組IV

數組的集成初始化 集成初始化的定位 數組的大小 數組的賦值 不能直接將一個數組a賦值給數組b&#xff0c;只能通過遍歷來實現 遍歷數組 示例——檢索元素在數組中的位置#include <stdio.h> int search(int key,int a[],int length); int main(void){int a[] {2,4,6,7,1,…

LDO選型

目錄 一、最大輸出電流 二、最大輸入電壓 三、最大功率&#xff1a;Pmax 四、負載動態調整率 五、輸入電源紋波抑制比&#xff1a;PSRR 一、最大輸出電流 參考TI LM1117IMPX-3.3/NOPB數據手冊 由于LDO轉換效率很低&#xff0c;LDO的標稱最大電流 ≥ 實際最大負載電流 1…

飛算JavaAI:重構Java開發的“人機協同”新范式

目錄一、從需求到架構&#xff1a;AI深度參與開發“頂層設計”1.1 需求結構化&#xff1a;自然語言到技術要素的準確轉換1.2 架構方案生成&#xff1a;基于最佳實踐的動態匹配二、編碼全流程&#xff1a;從“手寫代碼”到“人機協同創作”2.1 復雜業務邏輯生成&#xff1a;以“…

解決SQL Server SQL語句性能問題(9)——SQL語句改寫(7)

9.4.15. 消除join場景一 與Oracle等其他關系庫類似,SQL Server中,join作為基本語法用于SQL語句中相關表之間的連接,有些場景中,join既可以增強SQL語句的可讀性,同時,又可以提升SQL語句的性能,但有些場景中,join會導致CBO為SQL語句產生次優的查詢計劃,進而出現SQL語句…

深度學習-數據準備

一、數據準備 1.1定義 數據準備&#xff08;Data Preparation&#xff09; 是數據分析與機器學習流程中的核心環節&#xff0c;指將原始數據轉換為適合分析或建模的結構化格式的過程。 1.2組成 數據準備主要由兩個部分組成&#xff0c;一個是劃分數據集&#xff0c;一個是構建…