首页 > 编程知识 正文

pytorch使用,nvl2函数用法

时间:2023-05-06 01:04:56 阅读:24437 作者:1032

本文是一个深度学习框架pytorch的API : torch.nn.Conv2d ()函数的用法。 本博客介绍了torch.nn.Conv2d ()中每个参数的含义和用法,并学会了使用pytorch创建卷积神经网络。

参考:官方文档和其他博客

一、用法conv2d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1, bias padding _ mode=‘zeros’(2、参数in_channels :输入通道数【必需】out_channels :输出通道数【必需】kernel_size :叠加默认值为1。 【选项】填充:将所有边界的增量设置为0时的边距大小。 例如,padding=1时,如果原始大小为3 3,则之后的大小为5 5。 也就是说,在外周增加了一圈0。 【选项】dilation (控制卷积内核之间的间隔)? 请参阅示例】如果设置【选项】dilation=0,效果如图所示。 (输入蓝色、输出绿色、卷积核为3 3 ) ) ) ) ) )。

如果设置dilation=1,则效果如图所示。 (蓝色输入,绿色输出,卷积核保持3 3。 )

但是,在这里,将卷积核点和输入之间的距离乘以1的值来得到输出。

groups :控制输入和输出之间的连接。 (不常用)【选择项】为例:

例如,如果groups为1,则所有输入都连接到所有输出

groups为2时,意味着将输入分成两组,两层并排放置,每层可以看到一半的输入通道,生成一半的输出通道,两者串联连接。 这也是参数字面的意思。 是“小组”的意思。

必须注意的是,in_channels和out_channels都必须被整除为groups。 否则会报告错误。 (因为必须分成这么多小组。 让别人编程怎么办? )

bias :是否将学习到的bias添加到输出中,默认值为True。 【选项】padding_mode :字符串类型。 收到的字符串只有“zeros”和“circular”。 【选项】注意:参数kernel_size、stride、padding和dilation可以是整数或元组。 一个值表示同时作用于http://www.Sina.com/2两个维,两个值元组分别作用于3358wwww

三.相关形状假设输入形状如下。

(n,C in,h,w ) ) n,C_{text{in}},h,w ) )。

输出形状如下所示。

(n,C out,H out,W out ) ) n,C_{text{out}},H_{text{out}},W_{text{out}} ),n,C out,out

其中H o

u t H_{out} Hout​ 为:
H o u t = ⌊ H i n + 2 × padding [ 0 ] − dilation [ 0 ] × ( kernel_size [ 0 ] − 1 ) − 1 stride [ 0 ] + 1 ⌋ H_{out} = leftlfloorfrac{H_{in} + 2 times text{padding}[0] - text{dilation}[0] times (text{kernel_size}[0] - 1) - 1}{text{stride}[0]} + 1rightrfloor Hout​=⌊stride[0]Hin​+2×padding[0]−dilation[0]×(kernel_size[0]−1)−1​+1⌋
W o u t W_{out} Wout​ 为:
W o u t = ⌊ W i n + 2 × padding [ 1 ] − dilation [ 1 ] × ( kernel_size [ 1 ] − 1 ) − 1 stride [ 1 ] + 1 ⌋ W_{out} = leftlfloorfrac{W_{in} + 2 times text{padding}[1] - text{dilation}[1] times (text{kernel_size}[1] - 1) - 1}{text{stride}[1]} + 1rightrfloor Wout​=⌊stride[1]Win​+2×padding[1]−dilation[1]×(kernel_size[1]−1)−1​+1⌋

四、示例

入门学习者请不要过度关注某一些细节,建立一个简单的卷积层使用这个 API 其实很简单,大部分参数保持默认值就好,下面是简单的一个示例,创建一个简单的卷积神经网络:

class CNN(nn.Module): def __init__(self,in_channels:int,out_channels:int): """ 创建一个卷积神经网络 网络只有两层 :param in_channels: 输入通道数量 :param out_channels: 输出通道数量 """ super(CNN).__init__() self.conv1=nn.Conv2d(in_channels,10,3,stride=1,padding=1) self.pool1=nn.MaxPool2d(kernel_size=2,stride=1) self.conv2=nn.Conv2d(10,out_channels,3,stride=1,padding=1) self.pool2=nn.MaxPool2d(kernel_size=2,stride=1) def forward(self,x): """ 前向传播函数 :param x: 输入,tensor 类型 :return: 返回结果 """ out=self.conv1(x) out=self.pool1(out) out=self.conv2(out) out=self.pool2(out) return out

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。