pytorch 自定义卷积核进行卷积--卷积核订制

使用torch自实现简易版conv2d卷积(2种方法) padding参数代表在输入特征矩阵四周补零的情况默认为0,同样输入可以为int型如1 代表上下方向各补一行,左右方向各补一列,如果输入为tuple型如(2, 1) 代表在上下方向补两行,左右方向补一列。kernel_size参数代表卷积核的尺寸,输入可以是int类型如3 代表卷积核的height=width=3,也可以是tuple类型如(3, 5)代表卷积核的height=3,width=5;卷积核尺寸为3*3*3,一共有2个卷积核;输入特征图尺寸为5*5,通道为3;– 卷积核元素之间的间距; 阅读详情

镜像问题:tensorflow 卷积:设定特定卷积核

动机:

有时候我们希望对神经网络得到的张量进行特定的卷积操作,如求梯度,求边缘等。

或者,有时我们希望把图像进行预处理操作后输入神经网络,而这个预处理可以用卷积操作实现,如求梯度或高斯滤波。我们希望这个卷积操作在GPU上执行,这样可以加快运行速度。

这就需要我们在pytorch中进行自定义的卷积核卷积。

困难:

在常用的pytorch的卷积操作中,只有卷积核的尺寸和通道信息,且定义的卷积核是可训练的变量,无法实现卷积核订制,且保持不变

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

解决方法:

幸运的是,torch.nn.functional.conv2d 可以实现卷积核订制。

torch.nn.functional.conv2d(input, weight, bias=None, stride=1, padding=0, dilation=1, groups=1)

该函数的参数如下:

  • input – input tensor of shape (minibatch,in_channels,iH,iW) # [N,C,H,W]

  • weight – filters of shape(out_channels,in_channels​,kH,kW) # [C_out,C_in,kH,kW]

  • bias – optional bias tensor of shape (out_channels) . Default: None

  • stride – the stride of the convolving kernel. Can be a single number or a tuple (sH, sW). Default: 1

  • padding – implicit paddings on both sides of the input. Can be a single number or a tuple (padH, padW). Default: 0

  • dilation – the spacing between kernel elements. Can be a single number or a tuple (dH, dW). Default: 1

  • groups – split input into groups, \text{in\_channels}in_channels should be divisible by the number of groups. Default: 1

 

注意事项:

在torch.nn.functional.conv2d中,input.shape=[B,C,H,W],卷积核weight.shape=[out_channels,in_channels,h,w]。这与tensorflow中的习惯不同。

如果输入的数据的shape=[B,C,H,W],可使用 tensor.permute()操作进行张量维度的重新排列。

应用示例:

import cv2
import torch
import torch.nn as nn
import torch.nn.functional as F

import numpy as np
import matplotlib.pyplot as plt

def gradient_blur_bhwc(input_bhwc):
	"""
	:param     input_bhwc: shape=[B,H,W,C]
	:return:   grad_x_bhwc: x方向梯度图,shape = [B,H,W-1,1]
		       grad_y_bhwc:y方向梯度图,shape = [B,H-1,W,1]
	"""
	in_channel = input_bhwc.size()[-1]
	input_bchw = input_bhwc.permute(0,3,1,2)

	filter_x = torch.tensor([[[[-1., 1.]]] * in_channel], dtype=torch.float32)  # [outchannel,in_channel,h,w]=>[1,3,1,2]
	filter_y = torch.tensor([[[[-1.], [1.]]] * in_channel],dtype=torch.float32)  # [outchannel,in_channel,h,w]=>[1,3,2,1]
	
	grad_x_bhwc = F.conv2d(input_bchw, weight=filter_x, stride=1).permute(0,2,3,1)
	grad_y_bhwc = F.conv2d(input_bchw, weight=filter_y, stride=1).permute(0,2,3,1)
	
	return grad_x_bhwc,grad_y_bhwc


def gradient_blur_bchw(input_bchw):
	"""
	:param      input_bchw: shape=[B,C,H,W]
	:return:	grad_x_bchw: x方向梯度图,shape = [B,1,H,W-1]
		        grad_y_bchw:y方向梯度图,shape = [B,1,H-1,W]
	"""
	in_channel = input_bchw.size()[1]
	
	filter_x = torch.tensor([[[[-1., 1.]]] * in_channel], dtype=torch.float32)  # [outchannel,in_channel,h,w]=>[1,3,1,2]
	filter_y = torch.tensor([[[[-1.], [1.]]] * in_channel],dtype=torch.float32)  # [outchannel,in_channel,h,w]=>[1,3,2,1]
	
	grad_x_bchw = F.conv2d(input_bchw, weight=filter_x, stride=1)
	grad_y_bchw = F.conv2d(input_bchw, weight=filter_y, stride=1)
	
	return grad_x_bchw, grad_y_bchw

input_bhwc = torch.tensor(np.expand_dims(cv2.imread("001.jpg"),axis=0),dtype=torch.float32) # b,h,w,c
input_bchw = input_bhwc.permute(0,3,1,2)
grad_x_bchw, grad_y_bchw = gradient_blur_bchw(input_bchw)

# 可视化
print(grad_x_bchw.shape,grad_y_bchw.shape)
plt.figure()
plt.subplot(131)
plt.imshow(input_bhwc[0,...]/255.,cmap='gray')
plt.subplot(132)
plt.imshow(grad_x_bchw[0,0,...],cmap='gray')
plt.subplot(133)
plt.imshow(grad_y_bchw[0,0,...],cmap='gray')
plt.show()

参考:pytorch 自定义高斯核进行卷积操作

pytorch 自定义卷积核进行卷积操作方式 今天小编就为大家分享一篇pytorch 自定义卷积核进行卷积操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 立即下载

相关推荐

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

pytorch 自定义核进行卷积操作

1.介绍     高斯滤波的用处很多,也有很多现成的包可以被调用,比如opencv里面的cv2.GaussianBlur,一般情况,我们是没必要去造轮子,除非遇到特殊情况,比如我们在使用pytorch的过程中,需要自定义高斯核进行卷积操作,假设,我们要用的高斯核的参数是以下数目: 0.00...

Arthur_Holmes的博客 1882

Spring Boot 微服务 API 网关实战:Spring Cloud Gateway 整合,搞定路由转发 + 统一认证 + 限流熔断(企业级落地)

摘要:本文详细介绍了SpringCloud Gateway在微服务架构中的核心作用与实现方案。作为API网关,它解决了服务入口分散、认证冗余、流量失控等痛点,提供路由转发、统一认证、限流熔断等能力。文章通过图书管理系统案例,演示了SpringBoot整合Gateway的全流程,包括基础路由配置、JWT全局认证、局部参数校验、Sentinel限流熔断以及Nacos动态路由等核心功能实现。特别强调了企业级落地中的关键注意事项,如路由顺序、过滤器执行顺序、HTTPS配置等。该方案能有效构建统一、安全、高效的微服务

lamehsl的专栏 1381

Pytorch学习日记02-自定义模型及卷积操作

最简单的方式了解Pytorch中的卷积过程。了解每一个参数每一个结果的图像化展示。

qq_43617906的博客 926

基于STM32的智能交通灯管理系统设计

本项目基于STM32微控制器设计了一个智能交通灯管理系统,通过多个传感器模块实现对交通灯的智能化控制。项目涉及硬件电路设计、传感器数据采集和逻辑控制实现,适用于城市交通路口或小区路口。该基于STM32的智能交通灯系统通过超声波传感器实现了流量监测,结合LED和蜂鸣器实现了自动交通信号控制,适用于城市或社区路口。基于STM32CubeMX生成的框架,编写红绿灯切换、流量监测和蜂鸣器控制的代码。以下为主循环,通过不断读取传感器数据,结合交通灯和蜂鸣器模块实现智能交通灯控制。

2401_88410555的博客 2063

基于Simulink的无迹卡尔曼滤波(UKF)SOC高精度估计仿真

本文介绍了基于Simulink的无迹卡尔曼滤波(UKF)在电池SOC高精度估计中的应用。通过无迹变换替代传统EKF的线性化过程,UKF显著提升了SOC估计精度,在强非线性工况下误差可控制在0.5%以内。文章详细阐述了UKF的核心原理,包括Sigma点生成、状态预测和观测更新等关键步骤,并基于Thevenin等效电路模型构建了完整的UKF SOC估算系统。通过Simulink建模和仿真验证,展示了UKF在大电流脉冲、变温工况等复杂场景下的优异性能,其动态响应时间小于30ms,长期累积误差低于0.7%。研究为储

amy_mhd的博客 124

Pytorch学习-自定义卷积核

这段代码定义了一个标准的2D卷积层,并打印出卷积核的形状以及卷积核的前两个元素。你可以通过更改in_channels, out_channels, kernel_size, stride, 和 padding 的值来定制你的卷积层。

黑猴子1357751126@qq.com 561

【2026OD新机考】【不定滑窗】20260415-API请求日志去重分析【Py/Java/C++/C/JS/Go六种语言OD真题】【欧弟算法】全网注释最详细分类最全的华子OD真题题解

中找到所有的连续的相同元素,同时统计对应的连续相同元素对应的值的平均值。:当右指针为第一个元素(没有前一个元素),或者右指针对应的元素。某微服务系统的日志监控平台需分析API调用记录,日志含大量。相等,说明当前元素仍然属于同一个相同元素窗口,将当前元素值。中的所有元素均相等,并且计算窗口和情况即可。请实现一个函数,对给定的日志数据去重合并处理。位置,表示开启一个新的窗口,此时需要重置窗口和。,为了优化重复的请求记录,存储和后续分析需对。:对应的响应时间数组(毫秒)。重新置为当前右指针的元素值。

weixin_48157259的博客 112

PyTorch 自定义卷积核「数据」

在做一些模型分析的时候可能需要将卷积核内的参数定制化(eg:全为1),此时就没办法直接使用模型中定义好的卷积了,需要将其数据给修改下方能使用,但是其输入输出通道以及卷积核大小需要留用,在此就可以单独的将 卷积的 weight/bias 进行从新赋值即可: ⚠️注意 在给 conv.weight/bais.data 赋值的时候,其类型必须是 Tensor 维度必须符合卷积核的尺寸,即 conv.weight : dim=(in_dim, out_dim, kerneal_size) conv.bias

绿色羽毛 4803

大模型——CoPaw:阿里云通义推出的个人智能体工作台,让 AI 助理真正落地

阿里云通义实验室于2026年2月发布CoPaw个人智能助理,采用"本地+云端"双部署模式,支持多平台接入和技能扩展。该产品基于AgentScope多智能体生态构建,具备极简部署、长期记忆系统和灵活的技能插件体系三大核心特性。用户可通过简单命令快速安装,并通过记忆文件系统实现个性化交互体验。CoPaw还支持钉钉、飞书等主流平台接入,并开源了模块化架构,允许本地模型接入。技术架构采用多频道对话网关与可插拔Skills系统,为用户提供真正的AI助理服务体验。

2133

MATLAB算法实战应用案例精讲-【数模应用】校准曲线(附MATLAB、python和R语言代码实现)

模型校准曲线(Calibration Curve),也称为可靠性曲线(Reliability Curve)或概率校准曲线(Probability Calibration Curve),是一种评估分类模型输出概率准确性的图形工具。它可以帮助我们理解模型的预测概率是否与实际标签的分布一致。校准曲线通常包括以下步骤:计算模型预测概率:对于测试集中的每个样本,模型会输出一个概率值,表示样本属于正类的概率。将数据分桶:将这些概率值分成若干个等宽的桶(例如10个桶),每个桶中的样本具有相似的预测概率。

qq_36130719的博客 557

pytorch 自定义高斯核进行卷积操作

pytorch 自定义高斯核进行卷积操作

修行之路 1870

Linux LT8912b调试记录(MIPI转LVDS/HDMI)

本文记录了在RK3588平台上使用LT8912B芯片实现MIPI转LVDS/HDMI的调试过程。主要包含设备树配置、驱动代码实现及常见问题解决。调试重点包括:1)正确配置1280x800分辨率的LVDS屏幕参数;2)确保I2C总线正常通信;3)解决花屏、图像抖动、黑屏等问题,涉及lane-rate计算、同步信号极性调整及MIPI模式选择。文中提供了详细的寄存器配置代码和故障排查方法,特别强调了I2C通信验证和电压匹配的重要性。通过参数优化和多种模式测试,最终实现了稳定的视频输出转换。

qq_45147279的博客 1088

自定义卷积核——pytorch

自定义卷积核——pytorch 自定义一些常见的滤波器卷积核,定义成类,可以在网络框架中直接调用 定义类,写入自定义卷积核,用于网络处理图片 高斯滤波器写入网络框架 import torch import torch.nn as nn import torch.nn.functional as F from torch.autograd import Variable import numpy as np import cv2 import matplotlib.pyplot as plt clas

bank777777的博客 2808

AD9361功能介绍和使用

AD9361使用分数分频锁相环(PLL)来产生发射机和接收机本地振荡器(LO)频率和BB PLL。BB PLL 可用于数据转换、数字滤波器和 |/O 端口。PLL的参考时钟可以由外部振荡器或外部晶体(XO)和数字可编程片内可变电容提供,电容微调产生参考时钟频率,XO和微调电容的组合统称为DCXO。有多个天线输入的分集系统。接收链数据首先经过低噪声放大器(LNA),然后是同相(1)和正交(Q)放大器,混频器和频带整形滤波器,可将接收到的信号下变频为基带以进行数字化。时分双工(TDD)和频分双工(FDD)。。。

wangjie36的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

pytorch 自定义卷积核进行卷积操作

一 卷积操作:在pytorch搭建起网络时,大家通常都使用已有的框架进行训练,在网络中使用最多就是卷积操作,最熟悉不过的就是 torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, gro...

Arthur_Holmes的博客 2980

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【已解决 含代码调试分析】pytorch自定义手动设置卷积核

卷积内部结构卷积核内部结构例如迁移学习,或者使用固定参数初始化等,有些模型的初始化并不一样,都可能需要使用到自定义卷积核。找到卷积核所在的tensor,conv.weight.data,然后对其赋值操作。运行结果。

pytorch 入门与进阶 978

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

pytorch高斯函数自定义卷积核

1.直接输入参数 np.repeat()用于将numpy数组重复。 numpy.repeat(a, repeats, axis=None); 参数: axis=0,沿着y轴复制,实际上增加了行数 axis=1,沿着x轴复制,实际上增加了列数 torch.nn.functional.conv2d(input,filters,bias,stride,padding, dilation,groups) 在一次卷积计算中,filter可以在input的两个维度上扫描,即参数str...

jsc142915的博客 3053

pytorch深度学习基础(九)——深入浅析卷积核

提到卷积,应该多数人都会想到类似上图的这种示例,可以简单的理解成卷积核与图像中和卷积核相同大小的一块区域与卷积核相乘再求和,通过移动区域产生一个有和组成的新的图像,那么卷积核是什么呢,本文将从原理通俗易懂的介绍卷积核

艾醒的博客 1941

pytorch自定义高斯卷积核进行卷积

pytorch支持自定义卷积核进行卷积操作,使用 torch.nn.functional.conv2d 下面是我用到的自定义高斯卷积核的代码: class SA_net(nn.Module): def __init__(self): super(SA_net, self).__init__() kernel =get_kernel(kernlen=5,nsig=3) #获得高斯卷积核 kernel = torch.FloatTensor(ker

rocking_struggling的博客 3661

深度学习pytorch之简单方法自定义9类卷积即插即用

本文详细解析了 PyTorch 中 torch.nn.Conv2d 的核心参数,通过代码示例演示了如何利用这一基础函数实现多种卷积操作。涵盖的卷积类型包括:标准卷积、逐点卷积(1x1 卷积)、非对称卷积(长宽不等的卷积核)、空洞卷积(扩大感受野)、深度卷积(逐通道滤波)、组卷积(分组独立处理)、深度可分离卷积(深度+逐点组合)、转置卷积(上采样)和动态卷积(动态生成卷积核),帮助读者理解如何通过调整参数灵活构建卷积层,适应不同任务需求。

一个AI从业者的博客 1384

如何在 PyTorch 中自定义卷积核参数(亲测,已解决)

如何在 PyTorch 中自定义卷积核参数(亲测,已解决)

Vertira的博客 931

Pytorch常用的函数(三)深度学习中常见的卷积操作详细总结

Pytorch常用的函数(三)深度学习中常见的卷积操作详细总结

qq_44665283的博客 4160

pytorch之nn.Conv2d用法

nn.functional.Conv2d提供了卷积的计算函数,需要自己定义卷积核,输入图像的相关信息(值),从而帮助计算卷积。而nn.Conv2d类仅需要提供输入层,卷积核的尺寸信息即可计算,自动初始化权重等信息。

mengdeer_Q的博客 903

pytorch中的卷积操作详解

深度好文-----pytorch中的卷积操作详解 首先说下pytorch中的Tensor通道排列顺序是:[batch, channel, height, width] 我们常用的卷积(Conv2d)在pytorch中对应的函数是: torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, gr

Lily的博客 3090

Pytorch学习笔记——卷积操作

卷积操作是一种数学运算,它涉及两个函数:输入函数(通常是图像)和卷积核(也称为滤波器或特征检测器)。卷积核在输入函数上滑动,将核中的每个元素与其覆盖的输入函数区域中的对应元素相乘,然后将所有乘积相加,形成输出函数的一个值。这个过程在整个输入函数上重复,生成一个新的二维数组,称为特征图或激活图。卷积操作的主要目的是从输入数据中提取特征。通过改变卷积核的值,可以检测不同类型的特征,如边缘、角点、纹理等。

weixin_50765519的博客 1895
上一篇: Pytorch Dataset类和Dataloader实践
下一篇: pytorch convLSTM实现
wzg2016
博客等级 码龄10年 539粉丝 493原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值