【问题标题】:pytorch conv2d with weights带有权重的pytorch conv2d
【发布时间】:2021-01-08 14:52:50
【问题描述】:

我有这两个变量:

result- tensor 1 X 251 X 20
kernel - tensor 1 X 10 X 10

当我运行命令时:

from torch.nn import functional as F
result = F.conv2d(result, kernel)

我得到错误:

RuntimeError: expected stride to be a single integer value or a list of 1 values to match the convolution dimensions, but got stride=[1, 1]

我没有大步向前,我做错了什么?

【问题讨论】:

  • Conv2d 表示 4D 数据 (B*C*H*W) 和 4D 内核权重。你的好像错了。
  • 我将数据大小固定为 1 X 1 X 251 X 20,但仍然出现步幅错误。看起来它与权重有关,而不是数据
  • 数据和权重都需要有4个维度。对于权重,它类似于(输入通道,输出通道,h,w)

标签: pytorch conv-neural-network convolution


【解决方案1】:
import torch
import torch.nn.functional as F
image = torch.rand(16, 3, 32, 32)
filter = torch.rand(1, 3, 5, 5)
out_feat_F = F.conv2d(image, filter,stride=1, padding=0)
print(out_feat_F.shape)

输出:

torch.Size([16, 1, 28, 28])

相当于:

import torch
import torch.nn
image = torch.rand(16, 3, 32, 32)
conv_filter = torch.nn.Conv2d(in_channels=3, out_channels=1, kernel_size=5, stride=1, padding=0)
output_feature = conv_filter(image)
print(output_feature.shape)

输出:

torch.Size([16, 1, 28, 28])

Padding 默认为 0,stride 默认为 1。 第一个示例中的过滤器最后两个维度对应于 第二个例子中的内核大小。

kernel_size=5 与kernel_size=(5,5) 相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 2021-05-05
    • 2020-03-26
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    相关资源
    最近更新 更多