【一起深度学习吧!!!!!】24/05/03

devtools/2024/11/13 5:31:34/

卷积层里的多输入输出通道

  • 1、 多输入通道:
    • 代码演示:
  • 多输出通道:
    • 代码实现:

1、 多输入通道:

当输入包含多个通道时,需要构造一个输入通道与之相等的卷积核,以便进行数据互相关计算。

例如李沐老师中的例子:
输入有两个通道(前后),故卷积核也应有两个输入通道。
计算式子如下:
(11 + 22 + 43 + 54) + (00 + 11 + 32 + 43) = 56

代码演示:

import torch
from d2l import torch as d2ldef corr2d_multi_in(X, K):# 先遍历“X”和“K”的第0个维度(通道维度),再把它们加在一起return sum(d2l.corr2d(x, k) for x, k in zip(X, K))

X = torch.tensor([[[0.0, 1.0, 2.0],[3.0, 4.0, 5.0],[6.0, 7.0, 8.0]],[[1.0, 2.0, 3.0],[4.0, 5.0, 6.0],[7.0, 8.0, 9.0]]])
K = torch.tensor([[[0.0, 1.0],[2.0, 3.0]],[[1.0, 2.0],[3.0, 4.0]]])
print(X.shape)
print(K.shape)
print(corr2d_multi_in(X, K))

输出结果:
torch.Size([2, 3, 3])
torch.Size([2, 2, 2])
tensor([[ 56., 72.],
[104., 120.]])
多个输入通道并不会影响输出张量个数

zip():
zip() 是将不同张量中的数据,对应位置拼接起来形成元组。
例如:

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]xyz = zip(x, y, z)print xyz'''结果是:'''
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

在本例子中呢,根据X,K的shape可知:
第一个元组:
tensor([[0., 1., 2.],
[3., 4., 5.],
[6., 7., 8.]])
tensor([[0., 1.],
[2., 3.]])
第二个元组:
tensor([[1., 2., 3.],
[4., 5., 6.],
[7., 8., 9.]])
tensor([[1., 2.],
[3., 4.]])

多输出通道:

多个输出通道,也就意味着有多个卷积核的存在。

代码实现:

def corr2d_multi_in_out(X, K):# 迭代“K”的第0个维度,每次都对输入“X”执行互相关运算。# 最后将所有结果都叠加在一起return torch.stack([corr2d_multi_in(X, k) for k in K], 0)
K = torch.stack((K, K + 1, K + 2), 0)
K.shape

torch.stack(),实现将多个张量堆叠起来,0表示从0维的位置插入。
K = torch.stack((K, K + 1, K + 2), 0) 如何理解这句代码呢?
K 一开始我们就定义了:
K = torch.tensor([[[0.0, 1.0],
[2.0, 3.0]],
[[1.0, 2.0],
[3.0, 4.0]]
])
那么K+1 也就是在K的基础上,将所有元素进行加一操作。
通过stack将K,K+1,K+2 三个不同的张量(三个不同的卷积核)堆叠在一起,形成了三个输出通道。与X进行互相关操作。


http://www.ppmy.cn/devtools/37335.html

相关文章

解决方案:应对文本数据超限处理的有效策略

在处理大规模文本数据时,经常会遇到数据量超出系统、软件或工具处理能力上限的挑战。这不仅影响处理速度,还可能导致系统崩溃或性能严重下降。为了有效应对这一问题,本文汇总了几种实用的策略,帮助开发者和数据处理专业人员高效管…

ssm+vue的数据学院教务管理系统。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的数据学院教务管理系统。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Spr…

什么是Vue的单文件组件(SFC)

Vue的单文件组件(Single File Components,简称SFC)是Vue.js框架中用来组织和编写组件的一种文件格式。简单来说,一个.vue文件就是一个单独的组件,它封装了组件的HTML模板、CSS样式和JavaScript逻辑。这种开发方式有助于…

Penpad再获 Presto Labs 投资,Scroll 生态持续扩张

​Penpad 是 Scroll 生态的 LaunchPad 平台,其整计划像收益聚合器以及 RWA 等功能于一体的综合性 Web3 平台拓展,该平台在近期频获资本市场关注,并获得了多个知名投资者/投资机构的支持。 截止到本文发布前,Penpad 已经获得了包括…

Java使用JSch实现SSH远程执行命令

前言 有一个奇怪的需求,就是将本地的内容直接提交到远程服务器,并且需要针对文件夹进行处理。所以,这里就直接采用JSch来实现。在这里,感谢秀发浓密的程序猿的这篇博客,给了很大启发。 思路 既然是直接读取文件夹&am…

nuxt2路由,以及重构以前项目,路由使用

Nuxt.js根据pages目录结构自动生成vue-router模块的路由配置。 配置生成的路由可在.nuxt文件下的router.js文件中查看到,如: export const routerOptions {mode: history,base: /,linkActiveClass: nuxt-link-active,linkExactActiveClass: nuxt-link…

C语言栈的含义与栈数据操作代码详解!

引言:在本篇博客中,我们将学到数据结构——栈,讲到栈的含义与关于栈的数据操作代码。栈可以在顺序表、双向链表以及单链表的基础上实现,而于本篇博客中,我们选择在顺序表的基础上实现栈。 更多有关C语言和数据结构知识…

【网站项目】戒烟网站

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…