首页 > 其他分享 >多通道二维卷积手动版+pytorch版本

多通道二维卷积手动版+pytorch版本

时间:2025-01-19 18:29:55浏览次数:3  
标签:kernel weight 卷积 torch 多通道 batch pytorch input size

文章目录

1. 百度链接手动版

通过网盘分享的文件:conv2dtest.xlsx
链接: https://pan.baidu.com/s/1q3McqwfcKO1iX-Ms0BfAGA?pwd=ttsu 提取码: ttsu

2. Pytorch 版本

  • python
import torch
import torch.nn as nn
import torch.nn.functional as F

torch.set_printoptions(precision=3, sci_mode=False)

if __name__ == "__main__":
    run_code = 0
    batch_size = 1
    in_channels = 2
    out_channels = 3
    input_h = 5
    input_w = 5
    total = batch_size * in_channels * input_h * input_w
    # input_matrix = torch.randn(batch_size, in_channels, input_h, input_w)
    input_matrix = torch.arange(total).reshape((batch_size, in_channels, input_h, input_w)).to(torch.float)
    kernel_size = 3
    # total = batch_size * in_channels * input_h * input_w
    print(f"input_matrix=\n{input_matrix}")
    my_conv2d = nn.Conv2d(out_channels=out_channels, in_channels=in_channels, kernel_size=kernel_size, stride=1,
                          bias=False)
    weight_0 = torch.arange(9).reshape((batch_size, kernel_size, kernel_size)).to(torch.float)
    weight_1 = torch.arange(9).reshape((batch_size, kernel_size, kernel_size)).to(torch.float) + 1
    weight_2 = torch.arange(9).reshape((batch_size, kernel_size, kernel_size)).to(torch.float) + 2
    weight_3 = torch.arange(9).reshape((batch_size, kernel_size, kernel_size)).to(torch.float) + 3
    weight_4 = torch.arange(9).reshape((batch_size, kernel_size, kernel_size)).to(torch.float) + 4
    weight_5 = torch.arange(9).reshape((batch_size, kernel_size, kernel_size)).to(torch.float) + 5
    weight_01 = torch.cat((weight_0, weight_1), dim=0)
    weight_23 = torch.cat((weight_2, weight_3), dim=0)
    weight_45 = torch.cat((weight_4, weight_5), dim=0)
    print(f"weight_01=\n{weight_01}")
    print(weight_01.shape)
    weight_01 = torch.unsqueeze(weight_01, dim=0)
    weight_23 = torch.unsqueeze(weight_23, dim=0)
    weight_45 = torch.unsqueeze(weight_45, dim=0)
    weight_012345 = torch.cat((weight_01, weight_23, weight_45), dim=0)
    print(f"weight_0123.shape=\n{weight_012345.shape}")
    print(f"weight_012345=\n{weight_012345}")
    my_conv2d.weight = nn.Parameter(weight_012345)
    output_matrix = my_conv2d(input_matrix)
    print(f"output_matrix=\n{output_matrix}")
  • 结果:
input_matrix=
tensor([[[[ 0.,  1.,  2.,  3.,  4.],
          [ 5.,  6.,  7.,  8.,  9.],
          [10., 11., 12., 13., 14.],
          [15., 16., 17., 18., 19.],
          [20., 21., 22., 23., 24.]],

         [[25., 26., 27., 28., 29.],
          [30., 31., 32., 33., 34.],
          [35., 36., 37., 38., 39.],
          [40., 41., 42., 43., 44.],
          [45., 46., 47., 48., 49.]]]])
weight_01=
tensor([[[0., 1., 2.],
         [3., 4., 5.],
         [6., 7., 8.]],

        [[1., 2., 3.],
         [4., 5., 6.],
         [7., 8., 9.]]])
torch.Size([2, 3, 3])
weight_0123.shape=
torch.Size([3, 2, 3, 3])
weight_012345=
tensor([[[[ 0.,  1.,  2.],
          [ 3.,  4.,  5.],
          [ 6.,  7.,  8.]],

         [[ 1.,  2.,  3.],
          [ 4.,  5.,  6.],
          [ 7.,  8.,  9.]]],


        [[[ 2.,  3.,  4.],
          [ 5.,  6.,  7.],
          [ 8.,  9., 10.]],

         [[ 3.,  4.,  5.],
          [ 6.,  7.,  8.],
          [ 9., 10., 11.]]],


        [[[ 4.,  5.,  6.],
          [ 7.,  8.,  9.],
          [10., 11., 12.]],

         [[ 5.,  6.,  7.],
          [ 8.,  9., 10.],
          [11., 12., 13.]]]])
output_matrix=
tensor([[[[1803., 1884., 1965.],
          [2208., 2289., 2370.],
          [2613., 2694., 2775.]],

         [[2469., 2586., 2703.],
          [3054., 3171., 3288.],
          [3639., 3756., 3873.]],

         [[3135., 3288., 3441.],
          [3900., 4053., 4206.],
          [4665., 4818., 4971.]]]], grad_fn=<ConvolutionBackward0>)

  • excel 版本结果:与pytorch版本一致,此版本无bias偏置。
    在这里插入图片描述

标签:kernel,weight,卷积,torch,多通道,batch,pytorch,input,size
From: https://blog.csdn.net/scar2016/article/details/145136396

相关文章

  • 卷积加法自注意力CASAtt详解及代码复现
    自注意力机制简介自注意力机制(Self-Attention)是一种特殊的注意力机制,允许模型在处理序列数据时考虑每个元素与其他所有元素的关系。这种机制通过计算查询、键和值向量,帮助模型更好地理解序列中的上下文信息。自注意力机制的核心在于计算每个元素的权重,反映元素之间的相互关......
  • Python 项目和Pytorch 项目的环境构建
    python项目环境搭建首先下载软件包,打开安装创建项目:点击主菜单新建项目位置+pythonProject1构建python环境condecreate–p.envpython=3.10解释器:文件设置解释器本地解释器现有调试运行pytorch项目环境搭建先检查版本pip--version首先下载anaconda安装包这里......
  • 学习笔记:Pytorch基础(一)--张量
    张量(Tensor)是PyTorch中的核心数据结构,用于存储和操作多维数组。相当于NumPy的ndarray(NumPy是python的一种开源的数据计算扩展,支持大量的维度数组和矩阵运算)。但是PyTorch的张量可以运行在不同的设备上,比如CPU和GPU,这使得它们非常适合于进行大规模并行计算,特别是在深度学......
  • 计算机毕业设计Python+CNN卷积神经网络考研院校推荐系统 考研分数线预测 考研推荐系统
    温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!温馨提示:文末有CSDN平台官方提供的学长联系方式的名片!作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO......
  • 识别可用的卷积神经网络
    1、ResNet(残差网络):ResNet通过引入残差学习框架解决了深度网络训练中的退化问题。它通过添加跳跃连接(skipconnections)来提高网络的深度,从而提高性能。2、DenseNet(密集连接网络):DenseNet通过将每一层与前面所有层连接起来,实现了特征的重用和传递。这种结构可以减少参数数量,提高训练......
  • ExpGCN:深度解析可解释推荐系统中的图卷积网络
    一、引言在当今信息爆炸的时代,推荐系统已成为电子商务和社交网络中不可或缺的工具,旨在为用户筛选出符合其兴趣的信息。传统的协同过滤(CF)技术通过挖掘用户与项目之间的交互记录来生成推荐,但这种方法简化了模型,难以充分利用网络数据中的丰富信息。近年来,推荐系统的发展趋势逐渐......
  • 图像的卷积处理
     实验名称:图像的卷积处理实验描述:包含图像的平滑卷积和边缘卷积,通过实验观察和理解三种平滑卷积的差异性、理解边缘卷积提取图像边缘特征的作用。实验步骤一、平滑卷积1.加载图像并可视化2.生成带有雪花噪声的图像3.用均值卷积去噪声4.用中值卷积去噪5.用高斯......
  • 卷积运算
      对应位置数字相乘,求和。  卷积核(或滤波器)的小窗口在输入数据上滑动,计算窗口覆盖区域的元素乘积之和,从而生成输出数据。二维卷积运算    1x7+2x6+3x5+4x4=50   1x6+2x2+3x4+4x2=30        彩色图像卷积运算; ......
  • 深度学习框架大比拼:TensorFlow vs PyTorch,亦菲彦祖的选择
    深度学习框架大比拼:TensorFlowvsPyTorch,亦菲彦祖的选择亲爱的亦菲彦祖,欢迎来到这次的深度学习框架擂台!在我们之前的讨论中,你已经学习了深度学习的核心概念、神经网络的基本原理、卷积神经网络(CNN)和循环神经网络(RNN)等技术。但要想真正落地实践,还需要一个合适、易用且高效的深......
  • PyTorch使用教程(4)-torch.nn
    torch.nn是PyTorch深度学习框架中的一个核心模块,专门用于构建和训练神经网络。它提供了一系列用于构建神经网络所需的组件,包括层(Layers)、激活函数(ActivationFunctions)、损失函数(LossFunctions)等。orch.nn模块的核心是nn.Module类,它是所有神经网络组件的基类。通过继承n......