- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用 PyTorch 卷积做两件事,这在 documentation 中没有提到。或代码:
我想创建一个具有固定内核的卷积,如下所示:
000010000
000010000
100010001
000010000
000010000
我猜水平方面就像膨胀,但垂直部分不同。我看到膨胀可以作为代码中的参数使用,但它必须是标量或单元素元组(不是每个维度一个元素),所以我认为它不能完成我想要的操作。
我希望我的卷积像环形线圈一样“环绕”,而不是使用填充。
编辑添加:我看到有一个 open issue为此,它还提供了次优的 workaround 。所以,我想目前还没有“正确”的方法来做到这一点。
最佳答案
与 torch.nn.conv2d()
不同(实例化自己的可训练内核),torch.nn.functional.conv2d()
将矩阵和内核作为参数,因此您可以将任何您想要的自定义内核传递给它。
根据 @zou3519 的建议在 Github issue (链接到您自己提到的 issue),您可以通过“在 nxn 网格中重复张量,然后裁剪出您需要的部分”来实现 2D 圆形填充。”:
def circular_pad_2d(x, pad=(1, 1)):
# Snipped by @zou3519 (https://github.com/zou3519)
return x.repeat(*x_shape[:2])[
(x.shape[0]-pad[0]):(2*x.shape[0]+pad[0]),
(x.shape[1]-pad[1]):(2*x.shape[1]+pad[1])
]
# Example:
x = torch.tensor([[1,2,3],[4,5,6]])
y = circular_pad_2d(x, pad=(2, 3))
print(y)
# 1 2 3 1 2 3 1 2 3
# 4 5 6 4 5 6 4 5 6
# 1 2 3 1 2 3 1 2 3
# 4 5 6 4 5 6 4 5 6
<小时/>
torch.nn.function
模块中,torch.nn.functional.pad()
可以作为参数mode=reflect
,我相信这就是你想要的(?)。您可以在执行卷积之前使用此方法手动填充输入矩阵。 (注意:您还拥有专为通过反射进行固定 2D 填充而定制的 torch.nn.ReflectionPad2d
层)关于padding - PyTorch 中的自定义卷积核和环形卷积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50635736/
我正在尝试从网站(名称)“抓取”一些数据。我知道如何获得列表中的第一个名字——但我需要以同样的方式保存几千个名字。 这是我的代码: library(rvest) library(tidyverse)
我正在尝试制作一个环形 UIBezierPath 用作 CAShapeLayer 的 path 以下产生一个循环路径: let radius = 100.0 let circularPath = UI
如何在 1 分钟后停止 setTimeout。由于循环,它继续运行。TIA var image1 = new Image() image1.src = "images/slide1.jpg"
我现在这个问题发布了更多次,但我还没有解决我的问题。在我的例子中,foregroundColor 不工作。即使 foregroundColor 没有选择任何颜色,环也不会出现 darkGray 颜色。
public class Tester { // instance variables - replace the example below with your own Scanne
来自澳大利亚的投票问题: 一个机器人会不断地输入信息,它可以达到 1000 行。他将输入的内容示例: "1 2 3 2 1 3 2 3 1 1 2 3 3 1 2 " 我怎么知道他什么时候输入完信息?
有人可以启发如何进行这项工作吗?所以现在我有一个 do/while 循环,里面有一个开关。开关由一个 int 选择处理,scanf 是“%d”。但是,如果我写一个不同于数字的字符符号,如 a、b、c.
我是一名优秀的程序员,十分优秀!