当前位置: 首页 > wzjs >正文

平台网站建设报价wordpress 菜单 颜色

平台网站建设报价,wordpress 菜单 颜色,WordPress换主机教程,做企业网站用什么cms好卷积(Convolution) 是信号处理和图像处理中的一种重要操作,广泛应用于深度学习(尤其是卷积神经网络,CNN)中。它的核心思想是通过一个卷积核(Kernel) 或 滤波器(Filter&am…

卷积(Convolution) 是信号处理和图像处理中的一种重要操作,广泛应用于深度学习(尤其是卷积神经网络,CNN)中。它的核心思想是通过一个卷积核(Kernel) 或 滤波器(Filter) 对输入信号或图像进行扫描,提取局部特征。在信号处理领域,卷积可以看作是两个函数或信号在某种程度上的“重叠”运算。在图像处理中,卷积是图像滤波的核心操作。图像滤波器,例如边缘检测、模糊和锐化都是通过卷积来实现的。

1. 卷积的数学定义

一维离散卷积

给定两个离散信号 f 和 g,它们的卷积 (f∗g) 定义为:

(f * g)[n] = \sum_{m=-\infty}^{\infty} f[m] \cdot g[n - m]

二维离散卷积

对于二维信号(如图像),卷积的定义为:

(f * g)[m, n] = \sum_{k_1=-\infty}^{\infty} \sum_{k_2=-\infty}^{\infty} f[k_1, k_2] \cdot g[m - k_1, n - k_2]

2. 卷积的直观理解

卷积操作可以理解为:

  1. 滑动窗口:卷积核在输入信号或图像上滑动。

  2. 点积操作:在每个位置,卷积核与输入信号的局部区域进行点积。

  3. 特征提取:通过卷积核提取输入信号的局部特征。

3. 卷积的参数

在深度学习中,卷积操作通常包含以下参数:

  • 输入(Input):输入信号或图像,形状为 (batch_size, channels, height, width)

  • 卷积核(Kernel):滤波器,形状为 (out_channels, in_channels, kernel_height, kernel_width)

  • 步长(Stride):卷积核滑动的步长,控制输出的大小。

  • 填充(Padding):在输入信号或图像的边缘填充值(如 0),控制输出的大小。

  • 输出(Output):卷积操作的结果,形状为 (batch_size, out_channels, output_height, output_width)

4. 卷积的输出大小

卷积操作的输出大小可以通过以下公式计算:

\text{output\_height} = \left\lfloor \frac{\text{input\_height} - \text{kernel\_height}+2*\text{padding}}{\text{stride}} \right\rfloor + 1

其中:

  • input_size:输入信号或图像的大小。

  • kernel_size:卷积核的大小。

  • padding:填充大小。

  • stride:步长。

5.卷积的计算

1.单输入通道,单个卷积核

输入图片的像素值如下:

\begin{bmatrix} 1 & 1 & 1 & 0 & 0 \\ 0 & 1 & 1 & 1 & 0 \\ 0 & 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 1 & 0 \\ 0 & 1 & 1 & 0 & 0 \end{bmatrix}

卷积核为:

\begin{bmatrix} 1 & 0 &1 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \\ \end{bmatrix}

计算第一个子区域和卷积核的对应元素乘积之和,如下图所示:

 Cov_feature[0,0]=1x1+1x0+1x1+0x0+1x1+1x0+0x1+0x0+1x1 =4

接着计算第二个子区域和卷积核的对应元素乘积之和,如下图所示:

Cov_feature[0,1] =1x1+1x0+0x1+1x0+1x1+1x0+0x1+1x0+1x1=3

……

2.多输入通道,单个卷积核

若输入含有多个通道,则对于某个卷积核,分别对每个通道求feature map后将对应位置相加得到最终的feature map,如下图所示:

3.多个卷积核

6. 卷积的代码实现

1.简单卷积的实现(不包含batch_size,channels):

import  torchdef  matrix_muti_for_cov(x,kernel,stride=1):# kernel.shape ->(h,w)output_h= int((x.shape[0]-kernel.shape[0])/stride) +1   # 计算输入的高output_w= int((x.shape[1]-kernel.shape[1])/stride) +1   # 计算输入的宽output =torch.zeros(output_h,output_w) #  初始化为(output_h,output_w)的矩阵for i in range (0,x.shape[0]-kernel.shape[0]+1,stride): # 遍历高的维度for j in range (0,x.shape[1]-kernel.shape[1]+1,stride): # 遍历宽的维度area = x[i:i+kernel.shape[0],j:j+kernel.shape[1]] # 获取卷积核滑过区域output[i,j] =torch.sum(area*kernel)  实现卷积操作return  output

 调用函数,求卷积结果


input =torch.randn(5,5)
kernel =torch.randn(3,3)  
output =matrix_muti_for_cov(input,kernel)
print(output)

 输出为

tensor([[-2.0837, -1.1043,  3.2571],
        [-1.1638,  0.7576,  3.2776],
        [ 0.3669,  0.4015,  0.9808]])

使用torch.nn.functional.conv2d(input,jernel) 来测试:

在conv2d函数中,要求

input.shape(batch_size,in_channels,hight,weight)

kernel.shape(out_channels,in_channels,kernel_hight,kernel_weight)

input =input.reshape((1,1,input.shape[0],input.shape[1]))
kernel =kernel.reshape((1,1,kernel.shape[0],kernel.shape[1]))
cov_out =F.conv2d(input,kernel)
print(cov_out.squeeze(0).squeeze(0))

 输出为

tensor([[-2.0837, -1.1043,  3.2571],
        [-1.1638,  0.7576,  3.2776],
        [ 0.3669,  0.4015,  0.9808]])

cov_out.squeeze(0).squeeze(0)是为了将batch_size维度和channels维度的数据剔出,和上面的output的数据维度相对应。

对上述代码进行简单的升级操作

def  matrix_muti_for_cov(x,kernel,stride=1,padding=0):# kernel.shape ->(h,w)output_h= int((x.shape[0]-kernel.shape[0])/stride) +1output_w= int((x.shape[1]-kernel.shape[1])/stride) +1output =torch.zeros(output_h,output_w)area_matrix = torch.zeros(output.numel(),kernel.numel())kernel_matrix =kernel.reshape(kernel.numel(),-1)for i in range (0,x.shape[0]-kernel.shape[0]+1,stride):for j in range (0,x.shape[1]-kernel.shape[1]+1,stride):area = x[i:i+kernel.shape[0],j:j+kernel.shape[1]]area_matrix[i+j] = torch.flatten(area)output_matrix =area_matrix@ kernel_matrixoutput = output_matrix.reshape(output_h, output_w)return  output

2.简易完整卷积的实现(包含batch_size,channels,stride,padding):

def  matrix_muti_for_cov2(input,kernel,stride=1,padding=1):# input.size ---> [batch_size,channels,hight,weight]batch,channel,x_h,x_w =input.shape# input.size ---> [out_channels,in_channels,kernel_hight,kernel_weight]channel_out,channels_in,kernel_h,kernel_w =kernel.shape# math.floor() 函数的作用是向下取整,也称为取底。 它返回小于或等于给定数值的最大整数output_h= (math.floor((x_h+2*padding-kernel_h)/stride) +1)output_w= (math.floor((x_w+2*padding-kernel_w)/stride) +1)output =torch.zeros(batch,channel_out,output_h,output_w)  # 初始化矩阵input_padded = torch.zeros(batch, channel, x_h+2*padding, x_w+2*padding) #  实现padding操作input_padded[:,:,padding:x_h+padding,padding:x_w+padding] =input  # 将input的值赋值给input_padded对应的区域for  b in range(batch):   # 遍历batch维度for c_out  in  range(channel_out):  # 遍历out_channel维度for i in range (0,output_h,stride): # 遍历hight维度for j in range (0,output_w,stride):  # 遍历 weight维度area = input_padded[b,:,i:i+kernel_h,j:j+kernel_w]output[b,c_out,i,j] =torch.sum(area*kernel[c_out])                   return output

调用函数, 测试结果

cov_out =matrix_muti_for_cov2(input,kernel)
# print(cov_out)
cov_out2 =F.conv2d(input,kernel,padding=1)
# print(cov_out2)
if torch.allclose(cov_out, cov_out2, rtol=1e-05, atol=1e-08):print("两个卷积结果近似相等。") 
else:print("两个卷积结果不相等。")  print("最大绝对误差:", torch.max(torch.abs(cov_out - cov_out2))) 

 输出为“ 两个卷积结果近似相等。”


文章转载自:

http://Qhjpzz8v.gmdtk.cn
http://VBN8qhQD.gmdtk.cn
http://ywO59KjB.gmdtk.cn
http://ERpWuKQs.gmdtk.cn
http://FJqYah9K.gmdtk.cn
http://ORIYR4ln.gmdtk.cn
http://iwsbJkSh.gmdtk.cn
http://DFXilr0K.gmdtk.cn
http://9te0uBsn.gmdtk.cn
http://Z0YHjnI0.gmdtk.cn
http://iai7tPDC.gmdtk.cn
http://FlfCHz5W.gmdtk.cn
http://5TNjdAhK.gmdtk.cn
http://WYBG0mps.gmdtk.cn
http://y6ER1lAF.gmdtk.cn
http://XC0slzvT.gmdtk.cn
http://bBBHD7Av.gmdtk.cn
http://43tSAMJ8.gmdtk.cn
http://gTTDEKZa.gmdtk.cn
http://1pXurh6P.gmdtk.cn
http://eY9DkkUt.gmdtk.cn
http://y2e0Wq58.gmdtk.cn
http://zqKZQ3JQ.gmdtk.cn
http://2BdbKYSx.gmdtk.cn
http://N1FLTvo5.gmdtk.cn
http://qxJNnnNb.gmdtk.cn
http://I3LZ4MDH.gmdtk.cn
http://TSzlJStj.gmdtk.cn
http://WekhVSce.gmdtk.cn
http://9965yP2z.gmdtk.cn
http://www.dtcms.com/wzjs/740264.html

相关文章:

  • 温州网站建设及推广怎么查房产信息查询
  • 自己建的网站百度查找不到想做一个自己设计公司的网站怎么做
  • 怎样快速学好网站建设一级做a免费体验区不用下载网站
  • django做待办事项网站如何确认wordpress使用什么主题
  • 国外品牌网站深圳优化公司公认安高粱seo
  • html5网站在线制作建立网站团队
  • 建网站如何安装wordpress主题
  • 网站没有经过我司审核通过白名单长沙公司排行榜
  • 家具网站建设需求网站建设清单
  • 网站建设手机源码雅江网站建设
  • 网站怎么加友情链接网站空间服务器续费
  • 织梦手机网站有广告黄冈网站推广在线
  • 网上装修公司网站策划书商标设计网站免费
  • 宁津做网站seo站内优化技巧
  • 小说网站推荐网站建设规划过程和
  • 福安市教育局建设网站怎么做链接
  • 建设c2c网站需要多少投资问答社区网站建设
  • 教你如何建设网站阿里去wordpress前台登陆验证码
  • 个人怎么做跨境电商市场seo是什么意思
  • 网站建设基础课件东莞常平社保咨询电话
  • 做网站一般都选哪家公司网站后缀
  • 江苏连云港网站制作公司安阳网站制作 网络服务
  • 南通网站托管做网站用到的软件
  • 网站制作教程如何做公司网站推广
  • 网站建设360 全景制作方案如何进外贸大公司网站
  • 石家庄模板建站代理网页设计代码写入文字
  • 淘宝做网站被骗增长超人做网站多少钱
  • 桂林生活网官方网站邯郸做网站电话
  • asp是网站开发吗seo必备工具
  • 建筑设计网站免费wordpress 博客群