卷积层

通过卷积核(滤波器)在输入数据上滑动,卷积层能够自动检测和提取局部特征,如边缘、纹理、颜色等。不同的卷积核可以捕捉不同类型的特征。 

nn.conv2d()

in_channels:输入的通道数,彩色图片一般为3通道

out_channels:通过卷积之后输出的通道数

kernel_size(int or tuple):卷积核的大小,一个数表示正方形

kernel_size(int or tuple):卷积核的大小,一个数表示正方形

stride:计算过程中的步长

padding:输入边缘填充的大小

padding_mode:填充方式,一般设置为0,即填充数为0

import torch
import torch.nn.functional as F
input=torch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],[2,1,0,1,1]])
kernel=torch.tensor([[1,2,1],[0,1,0],[2,1,0]])
print(input.shape)
print(kernel.shape)
#由于con2d要求尺寸数字为4,变换形状
#元组第一个参数是batch size样本数量(也就是图片的数量),第二个参数是channel图像的通道数量,H高,W宽
input=torch.reshape(input,(1,1,5,5))
kernel=torch.reshape(kernel,(1,1,3,3))print(input.shape)
print(kernel.shape)
#stride为步长,也就是卷积核移动的格数
output=F.conv2d(input,kernel,stride=1)
print(output)
#向右移动两格,向下移动两格
output2=F.conv2d(input,kernel,stride=2)
print(output2)
#padding为填充原数据,如果为1,上下左右各填充一行一列
output3=F.conv2d(input,kernel,stride=1,padding=1)
print(output3)

 实战,对数据集CIFAR10进行卷积

import torch
import torchvision
from torch import nn
from torch.nn import Conv2d
from torch.utils.data import DataLoader#获取数据集
from torch.utils.tensorboard import SummaryWriterdataset=torchvision.datasets.CIFAR10("./data",train=False,transform=torchvision.transforms.ToTensor(),download=True)#加载数据
dataloader=DataLoader(dataset,batch_size=64)#定义卷积层
class operate(nn.Module):def __init__(self):super(operate, self).__init__()self.conv1=Conv2d(in_channels=3,out_channels=3,kernel_size=3,stride=1,padding=0)def forward(self,x):x=self.conv1(x)return xop=operate()writer=SummaryWriter("conv")
step=0
for data in dataloader:imgs,targets=dataoutput=op(imgs)writer.add_images("input",imgs,step)writer.add_images("output",output,step)step+=1writer.close()

 卷积前后的效果

池化层

池化操作通过减小特征图的空间尺寸(如高度和宽度),降低后续层的计算负担,同时保留主要特征信息。

nn.MaxPool2d()

kernel_size:池化核的大小

stride:步长,默认值为池化核的大小

padding:填充大小

dilation:空洞卷积

ceil_mode:设置为True时,为ceil模式向上取整,否则为floor模式,向下取整。在池化过程,如果输入比池化核小的话,是否进行池化,取决于ceil_mode的值,如果为True则保留,否则舍弃。

import torch
from torch import nn
from torch.nn import MaxPool2dinput=torch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],[5,2,3,1,1],[2,1,0,1,1]],dtype=torch.float32)#设置为浮点数
input=torch.reshape(input,(-1,1,5,5))
#池化层
class operate(nn.Module):def __init__(self):super(operate, self).__init__()self.mp1 = MaxPool2d(kernel_size=3,ceil_mode=True)def forward(self,input):output= self.mp1(input)return outputop=operate()
output=op(input)
print(output)

实战,对CIFAR10进行池化

import torch
import torchvision#获取数据集
from torch import nn
from torch.nn import MaxPool2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriterdataset=torchvision.datasets.CIFAR10("./data",train=False,transform=torchvision.transforms.ToTensor(),download=True)
#加载数据
dataloader=DataLoader(dataset,batch_size=64)#定义池化层
class operate(nn.Module):def __init__(self):super(operate, self).__init__()self.mp=MaxPool2d(kernel_size=3,ceil_mode=True)def forward(self,input):output=self.mp(input)return outputop=operate()writer=SummaryWriter("maxpool")step=0
for data in dataloader:imgs,targets=dataoutput=op(imgs)writer.add_images("input",imgs,step)writer.add_images("output",output,step)step+=1writer.close()

池化结果

 非线性激活

让网络能够学习复杂的非线性关系,但可能导致模型过拟合。

nn.relu()

inplace:是否采用返回值的形式接收返回值,如果为True,则直接修改原变量,否则返回一个新变量,原值不变

nn.sigmoid()

函数公式为:

h(x)=\frac{1}{1+exp(-x)}

import torch
from torch import nn
from torch.nn import ReLUinput=torch.tensor([[1,0.5],[-1,3]])input=torch.reshape(input,(-1,1,2,2))class operater(nn.Module):def __init__(self):super(operater, self).__init__()self.relu1=ReLU()def forward(self,input):output=self.relu1(input)return  outputop=operater()
output=op(input)
print(output)

实战,对CIFAR10进行sigmoid激活

import torch
import torchvision#获取数据集
from torch import nn
from torch.nn import ReLU, Sigmoid
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriterdataset=torchvision.datasets.CIFAR10("./data",train=False,transform=torchvision.transforms.ToTensor(),download=True)
#加载数据
dataloader=DataLoader(dataset,batch_size=64)#激活函数
class operater(nn.Module):def __init__(self):super(operater, self).__init__()self.relu=ReLU()self.sg=Sigmoid()def forward(self,input):output=self.sg(input)return outputop=operater()writer=SummaryWriter("sigmoid")
step=0
for data in dataloader:imgs,targets=dataoutput=op(imgs)writer.add_images("input",imgs,step)writer.add_images("output",output,step)step+=1writer.close()

实验结果

正则化

通过约束模型复杂度,确保网络学习到的是有意义的模式,而非噪声。

BatchNormal2d

num_features:通道数

线性层

nn.liner()

in_features:输入数据的大小

out_features:输出数据的大小

bias(bool):偏置值

import torch
import torchvision
from torch import nn
from torch.nn import Linear
from torch.utils.data import DataLoaderdataset=torchvision.datasets.CIFAR10("./data",train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(dataset,batch_size=64)class operater(nn.Module):def __init__(self):super(operater, self).__init__()self.liner1=Linear(196608,10)def forward(self,input):output=self.liner1(input)return outputop=operater()
for data in dataloader:imgs,targets=dataprint(imgs.shape)input=torch.flatten(imgs)#将数据降成一维print(input.shape)output=op(input)print(output.shape)

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在MATLAB中使用GPU加速计算及多GPU配置

文章目录 在MATLAB中使用GPU加速计算及多GPU配置一、基本GPU加速使用1. 检查GPU可用性2. 将数据传输到GPU3. 执行GPU计算 二、多GPU配置与使用1. 选择特定GPU设备2. 并行计算工具箱中的多GPU支持3. 数据并行处理(适用于深度学习) 三、高级技巧1. 异步计算…

【unitrix】 4.12 通用2D仿射变换矩阵(matrix/types.rs)

一、源码 这段代码定义了一个通用的2D仿射变换矩阵结构,可用于表示二维空间中的各种线性变换。 /// 通用2D仿射变换矩阵(元素仅需实现Copy trait) /// /// 该矩阵可用于表示二维空间中的任意仿射变换,支持以下应用场景&#xff…

android RecyclerView隐藏整个Item后,该Item还占位留白问题

前言 android RecyclerView隐藏整个Item后,该Item还占位留白问题 思考了利用隐藏和现实来控制item 结果实现不了方案 解决方案 要依据 model 的第三个参数(布尔值)决定是否保留数据,可以通过 ​filter 高阶函数结合 ​空安全操作符​ 实…

地图瓦片介绍与地图瓦片编程下载

前沿 地图瓦片指将一定范围内的地图按照一定的尺寸和格式,按缩放级别或者比例尺,切成若干行和列的正方形栅格图片,对切片后的正方形栅格图片被形象的称为瓦片[。瓦片通常应用于B/S软件架构下,浏览器从服务器获取地图数据&#xf…

手机屏亮点缺陷修复及相关液晶线路激光修复原理

摘要 手机屏亮点缺陷严重影响显示品质,液晶线路短路、电压异常是导致亮点的关键因素。激光修复技术凭借高能量密度与精准操控性,可有效修复液晶线路故障,消除亮点缺陷。本文分析亮点缺陷成因,深入探究液晶线路激光修复原理、工艺…

MySQL数据一键同步至ClickHouse数据库

随着数据量的爆炸式增长和业务场景的多样化,传统数据库系统如MySQL虽然稳定可靠,但在海量数据分析场景下逐渐显露出性能瓶颈。这时,ClickHouse凭借其列式存储架构和卓越的OLAP(在线分析处理)能力脱颖而出,成…

Android中Compose常用组件以及布局使用方法

一、基础控件详解 1. Text - 文本控件 Text(text "Hello Compose", // 必填,显示文本color Color.Blue, // 文字颜色fontSize 24.sp, // 字体大小(注意使用.sp单位)fontStyle FontStyle.Italic, // 字体样式&…

SCI一区黑翅鸢优化算法+三模型光伏功率预测对比!BKA-CNN-GRU、CNN-GRU、GRU三模型多变量时间序列预测

SCI一区黑翅鸢优化算法三模型光伏功率预测对比!BKA-CNN-GRU、CNN-GRU、GRU三模型多变量时间序列预测 目录 SCI一区黑翅鸢优化算法三模型光伏功率预测对比!BKA-CNN-GRU、CNN-GRU、GRU三模型多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 …

创客匠人视角:创始人 IP 打造为何成为知识变现的核心竞争力

在互联网流量成本高企的当下,知识变现行业正经历从 “产品竞争” 到 “IP 竞争” 的范式迁移。创客匠人 CEO 老蒋指出,创始人 IP 已成为企业突破增长瓶颈的关键支点 —— 美特斯邦威创始人周成建首次直播即创下 1500 万元成交额,印证了创始人…

类图+案例+代码详解:软件设计模式----生成器模式(建造者模式)

生成器模式(建造者模式) 把复杂对象的建造过程和表示分离,让同样的建造过程可以创建不同的表示。 假设你去快餐店买汉堡,汉堡由面包、肉饼、蔬菜、酱料等部分组成。 建造者模式的角色类比: 产品(Product…

UI前端与数字孪生融合探索:为智慧物流提供可视化解决方案

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 在全球供应链数字化转型的浪潮中,智慧物流正从概念走向落地 —— 据 MarketsandMa…

远程办公与协作新趋势:从远程桌面、VDI到边缘计算,打造高效、安全的混合办公环境

一、引言 随着数字化转型的加速,越来越多的企业开始采用远程办公和混合办公模式,以提升员工的灵活性和企业的敏捷性。然而,异地办公也带来了诸如桌面环境不一致、安全风险增加、沟通协作效率降低等诸多挑战。因此,如何打造一致、…

算法总结篇:二叉树

二叉树解题整体框架: 1、确定当前题型是做高度还是深度还是搜索树还是其他 高度(从下往上,求根深度、高度等): 使用后序遍历会更加简单,递归方法一般需要返回值返回上级,让上级对返回值进行判断…

【Elasticsearch】most_fields、best_fields、cross_fields 的区别与用法

most_fields、best_fields、cross_fields 的区别与用法 1.核心区别概述2.详细解析与用法2.1 best_fields(最佳字段匹配)2.2 most_fields(多字段匹配)2.3 cross_fields(跨字段匹配) 3.对比案例3.1 使用 best…

力扣网C语言编程题:在数组中查找目标值位置之暴力解法

一. 简介 本文记录一下力扣网上涉及数组的问题:排序数组中查找目标值的位置。主要以C语言实现。 二. 力扣网C语言编程题:在数组中查找目标值位置 题目:在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 …

OSCP - Proving Grounds - tre

主要知识点 突破边界的方法比较多样观察pspy64的检测结果 具体步骤 依旧nmap扫描开始,开放了80,8082,22端口 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-16 03:39 UTC Nmap scan report for 192.168.56.84 Host is up (0.00083s latency). Not shown: 65532 c…

【Mars3d】支持的basemaps数组与layers数组的坐标系列举

问题场景: basemap 是epsg4326的。,layer 图层是 epsg 4450的。可以在一个页面中展示吗? 回复: 可以不同坐标系叠加,但layer 图层是 epsg 4450的只支持arcgis动态服务,其他情况的不支持 wmts只支持3个坐标…

【算法】509. 斐波那契数

509. 斐波那契数 简单 相关标签 premium lock icon 相关企业 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 …

FOC学习笔记(5)内嵌式电机与表贴式电机的区别

1. 引言 在现代电机设计中,永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)因其高效率、高功率密度和优异的动态性能,在工业、新能源汽车、航空航天等领域得到广泛应用。根据永磁体在转子中的安装方式不同,永…

算法 按位运算

按位与(Bitwise AND)和按位异或(Bitwise XOR) 按位与(&) 按位与是对两个数的二进制表示的每一位进行逻辑与操作。 规则:两个对应位都为1时,结果位才为1,否则为0。…