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

ops/2024/10/19 11:49:08/

任务描述

本关任务:

本关提供了一个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 Variableinput = 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.ppmy.cn/ops/19936.html

相关文章

Android 生成二维码

一、生成二维码工具类封装 1、二维码库 // 二维码implementation com.journeyapps:zxing-android-embedded:4.3.0 2、工具类 /*** 二维码* 处理工具*/public class QRCodeDealUtils {/*** param content 字符串内容* param size 位图宽&高(单位:px)* param log…

【机器学习】机器学习学习笔记 - 无监督学习 - k-means/均值漂移聚类/凝聚层次聚类/近邻传播聚类 - 05

pdf在线免费转word文档 https://orcc.online/pdf 不限次数、免费不需要注册。 无监督学习 (聚类) 聚类是一种无监督学习方法,是将数据划分为若干个簇,使得簇内的点尽可能相似,簇间尽可能不相似。 k-means 聚类 k-means 聚类算法是一种迭…

css中新型的边框设置属性border-block

border-block 是 CSS 中的一个属性,主要用于在样式表中一次性设置元素的逻辑块向边框的属性值。这个属性是简写属性,可以同时设置 border-block-width、border-block-style 和 border-block-color。其中,border-block-start 用于设置元素的开…

Python项目开发实战:动物分拣器的实现

注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程:Python项目开发实战_动物分拣器的实现_编程案例解析实例详解课程教程.pdf 1、步骤 一、项目背景与目标 在生物研究、动物园管理以及动物保护等领域中…

SpringCloud系列(11)--将微服务注册进Eureka集群

前言:在上一章节中我们介绍并成功搭建了Eureka集群,本章节则介绍如何把微服务注册进Eureka集群,使服务达到高可用的目的 Eureka架构原理图 1、分别修改consumer-order80模块和provider-payment8001模块的application.yml文件,使这…

Java、Android面试高频系列文章合集

本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。 整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可关注收…

ESBMC代码阅读笔记

文档描述 本文档为对ESBMC模型检测工具进行代码阅读随手写的文档,该文档针对工具ESBMC version 7.5.0 64-bit x86_64 linux 的BMC框架进行代码阅读,主要关注其BMC算法框架,数据结构以及如何从BMC得到的中间数据结构进行SMT编码的过程。本文档…

elment-table实现行滚动效果

通过获取dom &#xff0c;来控制表格滚动 <template><div class"scroll_table"><div style"display: inline-block; width: 100%"><el-table:data"tableData"ref"table"borderheight"100%"highlight-c…