官方文档介绍
https://pytorch.org/docs/master/nn.html#convolution-layers
pytorch 中文文档:
https://pytorch-cn.readthedocs.io/zh/latest/
当然,在pycharm中查找某个函数的具体结构时也可以ctrl+click
CONV1D
https://pytorch.org/docs/master/generated/torch.nn.Conv1d.html#torch.nn.Conv1d
在由多个输入平面组成的输入信号上应用一维卷积。
torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros')
在最简单的情况下,具有输入大小的图层的输出值
和输出
可以精确地描述为:
- 在⋆ 是有效的互相关运算符, N是一个批处理大小,C表示多个通道, L 是信号序列的长度。该模块支持TensorFloat32。
stride
控制互相关的步幅,单个数字或一个元素的元组。padding
控制padding
点数两侧的隐式填充量。dilation
控制内核点之间的间距;也称为àtrous算法。很难描述,但是此链接 对操作做了很好的可视化dilation
。groups
控制输入和输出之间的连接。in_channels
并且out_channels
必须都可以被整除groups
。例如,- 在groups= 1时,所有输入都卷积为所有输出。
- 在groups = 2时,该操作等效于并排设置两个conv层,每个conv层看到一半的输入通道并产生一半的输出通道,并且随后都将它们级联。
- 在groups =
in_channels
,每个输入通道都与自己的一组过滤器(- ).
当groups = in_channels和out_channels == K * in_channels时,其中K为正整数,此操作也称为“深度卷积”。
换句话说,对于大小的输入
,可以使用参数执行 深度乘数K的深度卷积
在某些情况下,当在CUDA设备上使用张量时,此运算符可能会选择不确定的算法来提高性能。如果不希望这样做,可以尝试通过设置确定操作(可能以性能为代价)。torch.backends.cudnn.deterministic = True
https://pytorch.org/docs/master/notes/randomness.html
重现性
在PyTorch发行版,单独的提交或不同的平台上,不能保证完全可重复的结果。此外,即使使用相同的种子,结果在CPU和GPU执行之间也可能无法重现。
但是,您可以采取一些步骤来限制特定平台,设备和PyTorch版本的不确定行为的来源。首先,您可以控制可能导致应用程序的多个执行行为不同的随机性源。其次,您可以配置PyTorch以避免对某些操作使用不确定的算法,这样,在给定相同输入的情况下,对这些操作的多次调用将产生相同的结果。
警告
确定性操作通常比非确定性操作慢,因此对于您的模型,单次运行性能可能会降低。但是,确定性可以通过促进实验,调试和回归测试来节省开发时间。
参数
- in_channels(int)–输入图像中的通道数
- out_channels(int)–卷积产生的通道数
- kernel_size(int或tuple)–卷积内核的大小
- 步幅(int或tuple,可选)–卷积的步幅。默认值:1
- padding(int或tuple,可选)–将零填充添加到输入的两侧。默认值:0
- padding_mode(字符串,可选) 默认:
'zeros'
'reflect'
'replicate'
'circular'
'zeros'
- 膨胀(int或tuple,可选)–内核元素之间的间距。默认值:1
- 组(int,可选)–从输入通道到输出通道的阻塞连接数。默认值:1
- 偏差(bool,可选)–如果为
True
,则向输出添加可学习的偏差。默认:True
N是一个批处理大小,C表示多个通道, L 是信号序列的长度