在PyTorch中如何实现Conv2d的算法

Shodan

我正在研究pytorch onnx模型的推理模型,这就是为什么要问这个问题的原因。

假设我有一个尺寸32 x 32 x 3标注的图像(CIFAR-10数据集)。我通过尺寸为:的Conv2d 3 x 192 x 5 x 5我使用的命令是:Conv2d(3, 192, kernel_size=5, stride=1, padding=2)

使用公式(此处表示为参考pg12 https://arxiv.org/pdf/1603.07285.pdf),我应该得到带有尺寸28 x 28 x 192input - kernel + 1 = 32 - 5 + 1的输出图像

问题是PyTorch如何实现此4d张量3 x 192 x 5 x 5以获取的输出28 x 28 x 192该层是4d张量,输入图像是2d张量。

核(5x5如何在图像矩阵中扩散32 x 32 x 3内核与first->3 x 192或or卷积什么32 x 32

注意:我已经了解了事物的二维方面。我在3个或更多的地方问以上问题。

安德烈亚斯·K。

Conv2d的输入为shape的张量,(N, C_in, H_in, W_in)输出为shape (N, C_out, H_out, W_out),其中N批处理大小(图像数),C通道数,H高度和W宽度是。输出的高度和宽度H_outW_out计算如下(忽略扩张):

H_out = (H_in + 2*padding[0] - kernel_size[0]) / stride[0] + 1
W_out = (W_in + 2*padding[1] - kernel_size[1]) / stride[1] + 1

有关如何获得此公式的说明,请参见cs231n

在你的例子中N=1, H_in = 32, W_in = 32, C_in = 3, kernel_size = (5, 5), strides = (1, 1), padding = (0, 0),给予H_out = 28, W_out = 28

C_out=192手段,有192个不同的滤波器,每个形状的(C_in, kernel_size[0], kernel_size[1]) = (3, 5, 5)每个滤波器独立地与输入图像进行卷积,从而得到2D形状的张量(H_out, W_out) = (28, 28),并且由于存在C_out = 192滤波器和N = 1图像,因此最终输出为shape (N, C_out, H_out, W_out) = (1, 192, 28, 28)

要了解如何精确执行卷积,请参阅卷积演示

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在pytorch中实现Conv2d的棋盘大步?

来自分类Dev

pytorch conv2d配重

来自分类Dev

自定义conv2d操作Pytorch

来自分类Dev

pytorch conv2d的源代码在哪里?

来自分类Dev

我们如何在PyTorch中将线性层的输出提供给Conv2D?

来自分类Dev

如何在Tensor Flow 2.0中的Conv2D图层中指定输入形状

来自分类Dev

Conv2D keras中的稳压器

来自分类Dev

在TensorFlow中编写类似Conv2D的操作

来自分类Dev

tensorflow中conv2d的顺序输出是什么?

来自分类Dev

在 Tensorflow 中查找 conv2d 层的权重

来自分类Dev

何时在Conv2d()中使用填充以及何时进行ReflectionPad2d()Pytorch

来自分类Dev

如何在keras中将Conv1D的输出与Conv2D的输出合并

来自分类Dev

PyTorch Conv2D返回零输入张量的非零输出?

来自分类Dev

PyTorch conv2d不传播torch.channels_last内存格式

来自分类Dev

Keras:过度拟合的Conv2D

来自分类Dev

针对列表运行conv2d

来自分类Dev

如何使用张量流/ keras中的预定内核列表初始化Conv2D层?

来自分类Dev

角膜或张量流中的Conv2D层之后的ConvLSTM2D

来自分类Dev

Keras:转置Conv2D层的内核以在另一个Conv2D层中重用

来自分类Dev

如何理解Keras Conv2D层的第一个论点?

来自分类Dev

如何在多个图像输入中使用Conv2D?

来自分类Dev

如何在特定大小的conv2d层中使用Padding

来自分类Dev

了解Keras Conv2D层中的参数数量

来自分类Dev

在Keras中是否可以看到Conv2D层之后的输出

来自分类Dev

在 Keras 的序列模型中添加 Conv2D 时出现属性错误

来自分类Dev

在Pytorch中实现SeparableConv2D

来自分类Dev

输入形状为 [?,1,1,5], [1,6,5,5] 的 'conv1d_2/convolution/Conv2D'(操作:'Conv2D')从 1 中减去 6 导致的负尺寸大小

来自分类Dev

为什么theano conv2d添加空尺寸?

来自分类Dev

硬Conv2D解码器

Related 相关文章

  1. 1

    如何在pytorch中实现Conv2d的棋盘大步?

  2. 2

    pytorch conv2d配重

  3. 3

    自定义conv2d操作Pytorch

  4. 4

    pytorch conv2d的源代码在哪里?

  5. 5

    我们如何在PyTorch中将线性层的输出提供给Conv2D?

  6. 6

    如何在Tensor Flow 2.0中的Conv2D图层中指定输入形状

  7. 7

    Conv2D keras中的稳压器

  8. 8

    在TensorFlow中编写类似Conv2D的操作

  9. 9

    tensorflow中conv2d的顺序输出是什么?

  10. 10

    在 Tensorflow 中查找 conv2d 层的权重

  11. 11

    何时在Conv2d()中使用填充以及何时进行ReflectionPad2d()Pytorch

  12. 12

    如何在keras中将Conv1D的输出与Conv2D的输出合并

  13. 13

    PyTorch Conv2D返回零输入张量的非零输出?

  14. 14

    PyTorch conv2d不传播torch.channels_last内存格式

  15. 15

    Keras:过度拟合的Conv2D

  16. 16

    针对列表运行conv2d

  17. 17

    如何使用张量流/ keras中的预定内核列表初始化Conv2D层?

  18. 18

    角膜或张量流中的Conv2D层之后的ConvLSTM2D

  19. 19

    Keras:转置Conv2D层的内核以在另一个Conv2D层中重用

  20. 20

    如何理解Keras Conv2D层的第一个论点?

  21. 21

    如何在多个图像输入中使用Conv2D?

  22. 22

    如何在特定大小的conv2d层中使用Padding

  23. 23

    了解Keras Conv2D层中的参数数量

  24. 24

    在Keras中是否可以看到Conv2D层之后的输出

  25. 25

    在 Keras 的序列模型中添加 Conv2D 时出现属性错误

  26. 26

    在Pytorch中实现SeparableConv2D

  27. 27

    输入形状为 [?,1,1,5], [1,6,5,5] 的 'conv1d_2/convolution/Conv2D'(操作:'Conv2D')从 1 中减去 6 导致的负尺寸大小

  28. 28

    为什么theano conv2d添加空尺寸?

  29. 29

    硬Conv2D解码器

热门标签

归档