第二十一讲 卷积公式

本文详细介绍了卷积公式的概念、求解过程及其在微分方程中的应用。通过举例和证明,阐述了卷积如何将两个函数的乘积转化为变换后的乘积再逆变换的结果。此外,还探讨了卷积的交换律,并将其应用于放射性物质衰变的数学模型建立中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,卷积公式:

  • 已知:F(s)=\int_{0}^{\infty }f(t)e^{-st}dtG(s)=\int_{0}^{\infty }g(t)e^{-st}dt
  • 设:F(s)G(s)=\int_{0}^{\infty }[f(t)\ast g(t)]e^{-st}dt
  • 求:f(t)\ast g(t)=\mathcal {L}^{-1}[F(s)G(s)]
  • 因为拉氏变换是由幂级数变过来的,所以上面的问题可以转换为下面的问题方便计算:
  1. 已知:F(s)=\sum_{0}^{\infty }a(n)x^{n}G(s)=\sum_{0}^{\infty }b(n)x^{n}
  2. 设:F(s)G(s)=\sum_{0}^{\infty }[a(n)\ast b(n)]x^{n}
  3. 求:a(n)\ast b(n),(求解过程省略)
  • 解得卷积公式:f(t)\ast g(t)=\mathcal {L}^{-1}[F(s)G(s)]=\int_{0}^{t}f(u)g(t-u)du
  • 文字解读:两个函数的乘积,等于分别将它们变换后的乘积,再逆变换的结果,由于被变换卷在了一起,因此称为卷积。
  • 满足交换律:f(t)\ast g(t)=g(t)\ast f(t)

二,例1:

  • 求:t^{2}\ast t
  • 代入卷积公式:t^{2}\ast t=\int_{0}^{t}u^{2}(t-u)du
### CNN卷积神经网络中的数学公式 #### 卷积操作的数学表示 在一个典型的二维卷积运算中,假设输入是一个大小为 \( H \times W \times C_{in} \) 的张量(高度\(H\)、宽度\(W\)、通道数\(C_{in}\),对于灰度图像是单通道),而滤波器(也称为内核或权重矩阵)尺寸为 \( K_h \times K_w \times C_{in} \)[^1]。 卷积层的一个输出特征映射可以看作是由多个这样的过滤器产生的响应组合而成。具体来说,如果第 \( i \) 个滤波器记作 \( k_i^{(l)} \),其中 \( l \) 是层数,则该位置处的输出可以通过下述公式计算: \[ (I * k)_i(x, y)=\sum _{m=0}^{K_h-1}\sum _{n=0}^{K_w-1}(k_m,_n\times I(x+m,y+n))_i+bias_i \] 这里 \( bias_i \) 表示偏置项;\( I(x+m,y+n)_i \) 和 \( k_m,n \) 分别代表输入图像和滤波器对应位置上的值。 当应用多个不同参数设置下的滤波器时,会得到一系列不同的特征映射作为输出,形成新的三维张量 \( H' \times W' \times C_{out} \),这里的 \( C_{out} \) 就是指使用的滤波器数量。 #### 非线性激活函数的应用 为了引入非线性的能力,通常会在每次卷积之后紧跟一个非线性激活单元,比如 ReLU 函数: \[ f(z)=max(0,z) \] 这一步骤使得模型具备更强的表现力来捕捉复杂模式[^3]。 #### 池化层的作用 池化层用于减少空间维度的同时保留重要信息。最常用的类型是最大池化(max pooling), 它选取局部区域内最大的数值作为输出的一部分。设窗口大小为 \( S_h \times S_w \),步幅(stride)同样设定为 \( s \),则最大池化的输出可描述如下: \[ O(i,j,c)=\underset{(h,w)\in R}{\operatorname {argmax}}X(h+i*s,w+j*s,c) \] 其中 \( X \) 是输入张量,\( O \) 则是经过池化后的输出张量[^2]。 #### 全连接层的工作机制 最后几层往往是全连接形式,意味着每一层里的每一个节点都与其他相邻层的所有节点相连。这些层接收来自前面各层处理过的特征,并最终给出分类预测结果。例如,在手写字体识别任务里,最后一层可能有十个单位分别对应着十种可能性——即 '0' 至 '9'[^4]。 ```python import torch.nn as nn class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self).__init__() # Define two convolutional layers with ReLU activation and max-pooling self.conv1 = nn.Conv2d(in_channels=1, out_channels=8, kernel_size=(5, 5)) self.pool = nn.MaxPool2d(kernel_size=2, stride=2) self.relu = nn.ReLU() # Fully connected layer at the end of network self.fc = nn.Linear(in_features=..., out_features=10) def forward(self, x): x = self.pool(self.relu(self.conv1(x))) ... return output ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值