如何解决一维PyTorch圆形填充
对于卷积,我想在一个维度上应用圆形填充,在所有其他维度上应用零填充。我该怎么办?
对于卷积,有28个通道,因此,数据以球形箱形式描述。半径时间有20个容器,极性时间有20个容器,倾斜度有20个容器。 圆形填充仅适用于倾斜度。
小例子
fetch("https://www.goodreads.com/quotes")
response.css('div .quoteText::text').extract_first()
我试图申请
# Example:
x = torch.tensor([[1,2,3],[4,5,6],[7,8,9]])
y = sphere_pad(x,pad=(0,1))
# y is now tensor([[3,1,3,1],# [6,4,6,4],# [9,7,9,7]])
,然后应用具有正常零填充(在最后一维中没有填充)的卷积。 这仅适用于一个小示例,但此方法超出了实际问题大小的GPU内存。 还有其他方法吗?
解决方法
使用numpy,您可以进行wrap
填充,以使数组沿第二个轴包裹:
np.pad(x,((0,0),(1,1)),mode='wrap')
array([[3,1,2,3,1],[6,4,5,6,4],[9,7,8,9,7]])
,
此功能由 #17240 添加。但是,由于某些(奇怪的)原因,圆形填充仅由 3D、4D 和 5D 张量支持。如果你已经有了一个2D的张量,那么直接在pytorch中做之前,你需要将它转换成3D:
>>> a = torch.randint(0,3))
>>> a
tensor([[[4,5],[2,8],[3,8]]])
>>> F.pad(a,1),mode='circular')
tensor([[[5,[8,2],3]]])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。