torch.nn.Conv2d的详细用法
时间: 2023-08-13 14:27:16 浏览: 84
pytorch1.0中torch.nn.Conv2d用法详解
5星 · 资源好评率100%
`torch.nn.Conv2d`的详细用法如下:
```python
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')
```
其中各参数的含义如下:
- `in_channels`:输入通道数,即输入张量的深度。
- `out_channels`:输出通道数,即输出张量的深度,也就是卷积核的数量。
- `kernel_size`:卷积核大小,可以是一个整数,表示正方形卷积核的边长,也可以是一个元组,表示非正方形卷积核的宽和高。
- `stride`:卷积核的步长,默认为1。
- `padding`:输入张量四周的填充数,可以是一个整数,表示四周都填充相同的数量,也可以是一个元组,表示每个方向填充不同的数量。
- `dilation`:卷积核内部的扩张率,默认为1。
- `groups`:输入和输出通道之间的分组数,默认为1。
- `bias`:是否使用偏置项,默认为True。
- `padding_mode`:填充模式,默认为'zeros',表示用0进行填充,还可以使用'circular'表示用循环填充。
`torch.nn.Conv2d`的输入张量形状为`(batch_size, in_channels, height, width)`,输出张量形状为`(batch_size, out_channels, height_out, width_out)`,其中`height_out`和`width_out`分别是输出张量的高度和宽度,可以根据输入张量、卷积核大小、步长、填充等参数计算得到。
下面是一个示例:
```python
import torch
# 定义输入张量
x = torch.randn(1, 3, 32, 32)
# 定义卷积层
conv = torch.nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1)
# 进行卷积操作
out = conv(x)
# 输出张量形状
print(out.shape) # torch.Size([1, 16, 32, 32])
```
这个示例中,输入张量的形状为`(1, 3, 32, 32)`,表示批大小为1,通道数为3,高度和宽度均为32的输入张量。卷积核大小为3,分别在高度和宽度上进行1个像素的填充,步长为1,输出通道数为16,因此输出张量的形状为`(1, 16, 32, 32)`。
阅读全文