Pytorch 之torch.nn初探 卷积--Convolution Layers

news2024/11/20 12:18:32

任务描述

本关任务:

本关提供了一个Variable 类型的变量input,按照要求创建一 Conv1d变量conv,对input应用卷积操作并赋值给变量 output,并输出output 的大小。

相关知识

卷积的本质就是用卷积核的参数来提取原始数据的特征,通过矩阵点乘的运算,提取出和卷积核特征一致的值。

卷积层是用一个固定大小的矩形块去席卷原始数据,将原始数据分成一个个和卷积核大小相同的小块,然后将这些小块和卷积核相乘输出一个卷积值(注意这里是一个单独的值,不再是矩阵了)。

这里我们拿最常用的 conv1d举例说明卷积过程的计算。

conv1d

基本形式:

torch.nn.Conv1d (in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

用途:对输入样本应用一维卷积核

输入大小为(N,C_{in},L)

输出(N,C_{out},L_{out})

这里imes代表 the valid cross -correlation operator。

参数说明:

参数名

参数类型

说明

默认值

in_channels

int

输入图像中的通道数量

out_channels

int

卷积产生的通道数

kernel_size

int或 tuple

循环内核的大小

stride

int or tuple, optional

滑动窗口,指每次卷积对原数据滑动n个单元格。

默认为1

padding

int or tuple, optional

是否对输入数据填充0

默认为0(不填充)

dilation

int or tuple, optional

卷积核之间的空格

默认为1

groups

int ,optional

将输入数据分组,通常不用管这个参数

bias

boolean ,optional

偏移量参数,一般也不用管

optional 表示可选 padding可以将输入数据的区域改造成是卷积核大小的整数倍,这样对不满足卷积核大小的部分数据就不会忽略了。通过padding参数指定填充区域的高度和宽度。

维度:Input : (N,C_{in},L_{in})

Output :(N,C_{out},L_{out})
Lout=floor((L_{in}+2))

变量:

  • weight (Tensor) – 模块的卷积核权重,也就是卷积核本。是一个三维数组(out_channels, in_channels, kernel_size)。out_channels是卷积核输出层的神经元个数,也就是这层有多少个卷积核;in_channels是输入通道数;kernel_size是卷积核的宽度。
  • bias (Tensor) – 卷积核输出层的偏移量。

应用示例:

m = nn.Conv1d(16, 33, 3, stride=2)
input = Variable(torch.randn(20, 16, 50))
output = m(input)
print(output.size())

输出结果: torch.Size([20, 33, 24])

conv1d是一维卷积,它和conv2d的区别在于只对宽度进行卷积,对高度不卷积。

conv2d

基本形式:

torch.nn.Conv2d (in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)

用途:对输入样本应用二维卷积核

输入大小为(N,C_{in},H,W)

输出(N,C_{out},H_{out},W_{out})

这里imes代表 the valid 2D cross -correlation operator

参数说明:

与 conv1d 相同

维度:

Input : (N,C_{in},H,W)

Output :(N,C_{out},H_{out},W_{out})

H_{out}=floor((H_{in}+2))

W_{out}=floor((W_{in}+2))

应用示例:

#Conv2d

# With square kernels and equal stride
m = nn.Conv2d(16, 33, 3, stride=2)

# non-square kernels and unequal stride and with padding
m = nn.Conv2d(16, 33, (3, 5), stride=(2, 1), padding=(4, 2))

input = Variable(torch.randn(20, 16, 50, 100))
output = m(input)
print(output.size())

输出结果: torch.Size([20, 33, 28, 100])

编程要求

本关涉及的代码文件为convolution.py,本次编程任务是补全右侧代码片段中Begin至End中间的代码,具体要求如下:

  • 创建一个in_channels=16, out_channels=33, kernel_size=3, stride=2的Conv1d变量conv;
  • 对input应用卷积操作并赋值给变量 output;
  • 输出 output 的大小。
  • 具体请参见后续测试样例。

测试说明

测试过程:

  • 本关涉及的测试文件为convolution.py,运行用户填写后的程序判断正误。
  • 测试程序将检测两个方面:是否包含特定的代码行以及程序的输出是否正确,若两个方面均正确则输出下面的预期输出,否则报错。
  • 请注意输出格式及规范。
  • 注意,在声明变量时请按照提示命名,否则将会报错。

以下是测试样例:

测试输入: 预期输出: torch.Size([10, 24,13])

Congratulation!

代码实战

import torch
import torch.nn as nn
from torch.autograd import Variable

input = Variable(torch.randn(10, 16, 40))

#/********** Begin *********/

#创建一个in_channels=16, out_channels=24, kernel_size=4, stride=3的Conv1d变量conv
conv = nn.Conv1d(16, 24, 4, stride=3)

#对input应用卷积操作并赋值给变量 output
output=conv(input)

#输出 output 的大小,要求输出不换行
print(output.size())

#/********** End *********/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1629056.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

成都金沙国际学校招生介绍

成都金沙国际学校于2017年9月正式开学,涵盖了初中、高中学段,致力于为川南地区培育更多更优秀的国际化人才,是一所真正意义上的外国语教育窗口学校。校园环境优美,教学设施全市一流,师资团队精良,游学、留学…

绘制签章 乱码问题 (踩坑日记)

签章汉字乱码问题 原因:我们在docker上因为没有汉字字体需要我们手动把文件打进去 注意点:如果开启了打包过滤加上字体不过滤 绘制签章转载

系统服务(22年国赛)—— 磁盘管理(压缩去重)

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! 系统服务(22年国赛)—— 磁盘管理(压缩&&去重)https://myweb.myskillstree.cn/90.html 目录 StorageSrv 安装并创建vdo 将…

3122.使矩阵满足条件的最少操作次数

周赛第三题,知道要用动态规划,但是不知道怎么回到子问题 显然根据题意我们需要让每一列都相同,但是相邻列不能选择同一种数字,观察到数据nums[i]介于0-9,我们就以此为突破口. 首先我们用count[n][10], count[i][j]记录第i1列值为j的元素个数,转移方程如下: dfs(i,pre) max(dfs…

Vue基于高德地图API封装一个地图组件

一、参考资料 高德开放平台 | 高德地图API (amap.com) 二、安装及配置 pnpm i vuemap/vue-amap --save man.ts 密钥及安全密钥需要自己到高德地图开放平台控制台获取. import { createApp } from vue import App from ./App.vue import router from ./router i…

Orange3数据可视化(组件概览)

概要 大家见过Orange3提供的丰富数据可视化组件吗? Orange3为您提供了一系列生动的图表工具,包括树图、箱线图、小提琴图、分布图、散点图、折线图、条形图、筛图、马赛克图、自由投影、线性投影、雷达图、热力图、韦恩图、轮廓图、毕达哥拉斯树、毕达哥…

Python | Leetcode Python题解之第48题旋转图像

题目: 题解: class Solution:def rotate(self, matrix: List[List[int]]) -> None:n len(matrix)# 水平翻转for i in range(n // 2):for j in range(n):matrix[i][j], matrix[n - i - 1][j] matrix[n - i - 1][j], matrix[i][j]# 主对角线翻转for …

鸿蒙内核源码分析(任务调度篇) | 任务是内核调度的单元

任务即线程 在鸿蒙内核中,广义上可理解为一个任务就是一个线程 官方是怎么描述线程的 基本概念 从系统的角度看,线程是竞争系统资源的最小运行单元。线程可以使用或等待CPU、使用内存空间等系统资源,并独立于其它线程运行。 鸿蒙内核每个…

OS对软件的管理,进程,PCB、子进程

进程 可执行程序加载到内存中,操作系统为内个程序都形成一个PCB对象(结构体对象),PCB里存放着这个程序的所有的属性。进程可执行程序PCB ,CPU执行程序也是先通过该程序的PCB找到相应的程序代码,然后一条一…

鸿蒙内核源码分析(时钟任务篇)

时钟概念 时间是非常重要的概念,我们整个学生阶段有个东西很重要,就是校园铃声. 它控制着上课,下课,吃饭,睡觉的节奏.没有它学校的管理就乱套了,老师拖课想拖多久就多久,那可不行,下课铃声一响就是在告诉老师时间到了,该停止了让学生HAPPY去了. 操作系统也一样&…

Flutter基础语法

Flutter概要 Flutter目录结构 文件夹 作用 android android 平台相关代码 ios ios平台相关代码 lib flutter相关代码,我们主要编写的代码就在这个文件夹中 test 用于存放测试的代码 pubspec.yaml 配置文件,一般存放一些第三方库的依赖 Flutt…

【研发管理】产品经理知识体系-产品设计与开发工具

导读:产品设计与开发工具的重要性体现在多个方面,它们对于产品的成功开发、质量提升以及市场竞争力都具有至关重要的影响。产品设计工具可以帮助设计师更高效地创建和优化产品原型。开发工具在产品开发过程中发挥着至关重要的作用。产品设计与开发工具还…

细致讲解——不同类型LSA是作用以及相互之间的联系

目录 一.常见的LSA类型 二.OSPF特殊区域 1.区域类型 2.stub区域和totally stub区域 (1)stub区域 (2)totally stub区域 3.nssa区域和totally nssa区域 (1)nssa区域 (2)totall…

tensorflow_decision_forests\tensorflow\ops\inference\inference.so not found

恰好有一个帖子提到了py3.10里面的解决方案 pip install --user tensorflow2.11.0My tensorflow version is 2.11.0 and my tensorflow_decision_forests version is 1.2.0 so those should be compatible. I also am using Python version 3.10.11原文链接: http…

基于SpringBoot+VueHome F家居系统的设计与实现

系统介绍 该Home F家居系统采用B/S架构、前后端分离以及MVC模型进行设计,并采用Java语言以及SpringBoot框架进行开发。本系统主要设计并完成了用户注册、登录,购买家具过程、个人信息修改等,商家添加家具信息、对家具进行发货,管理…

假定输入字符串只包含字母和*号。编写函数fun:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 假定…

第10章:知识整合提示

这种技术使用模型的预先存在的知识,来整合新、旧信息,助力我们全面认知特定的主题。 与ChatGPT配合时,只需提供新信息与任务目标,加上清晰的提示词,它就能为你生成满意文本。 例 1:知识整合 任务:将新信息…

YOLOv9最新改进系列:完美融合即插即用的涨点模块之注意力机制(SEAttention)。

YOLOv9最新改进系列:完美融合即插即用的涨点模块之注意力机制(SEAttention)。 YOLOv9原文链接戳这里,原文全文翻译请关注B站Ai学术叫叫首er B站全文戳这里! 详细的改进教程以及源码,戳这!戳这…

QingHub Studio快速部署

简要介绍 QingHub Studio部署套件,主要针对需要本地化离线部署的用户提供一键部署的能力。目前本地化部署只支持单机版。需高可用部署的可以自行研究或寻求轻云研发团队技术支持。本地部署只作为用户开发的前后端应用的运行环境,不包括应用设计及监控运…