首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在火炬中,模块= nn.Padding(dim,pad,nInputDim,value,index),nInputDim做什么?

在火炬中,模块= nn.Padding(dim,pad,nInputDim,value,index),nInputDim做什么?
EN

Stack Overflow用户
提问于 2017-11-22 07:08:15
回答 1查看 362关注 0票数 0

就像文档所说的“当提供nInputDim时,大于该值的输入将被视为批量,其中实际要填充的dim将是尺寸dim +1。”我的理解是输入的维度比提供的nInputDim大,维度dim会变成dim + 1,但为什么呢?

EN

回答 1

Stack Overflow用户

发布于 2017-11-26 17:09:36

顺便说一下,我认为你提到的文档应该是this link

假设您想在1(第一个) dim的末尾设置3个默认的零填充,因此您将创建一个填充模块,如下所示:

代码语言:javascript
运行
复制
require 'nn';
dim = 1
pad = 3
module = nn.Padding(dim, pad)
given_tensor = torch.ones(4, 2)
print(given_tensor)
res_tensor = module:forward(given_tensor)
print(res_tensor)

如果你在torch解释器中运行这些行,你会得到如下结果,当你将4x2张量转换为7x2张量时,你成功地在1(第一个)维度添加了3个填充。

代码语言:javascript
运行
复制
 1  1
 1  1
 1  1
 1  1
[torch.DoubleTensor of size 4x2]

 1  1
 1  1
 1  1
 1  1
 0  0
 0  0
 0  0
[torch.DoubleTensor of size 7x2]

如果将 nInputDim 指定为1会发生什么情况,如下所示?

代码语言:javascript
运行
复制
require 'nn';
dim = 1
pad = 3
nInputDim = 1
module = nn.Padding(dim, pad, nInputDim)
given_tensor = torch.ones(4, 2)
print(given_tensor)
res_tensor = module:forward(given_tensor)
print(res_tensor)

如果你运行它们,你会得到如下结果

代码语言:javascript
运行
复制
 1  1
 1  1
 1  1
 1  1
[torch.DoubleTensor of size 4x2]


 1  1  0  0  0
 1  1  0  0  0
 1  1  0  0  0
 1  1  0  0  0
[torch.DoubleTensor of size 4x5]

你希望nInputDim是1,但你的输入Dim是2,它将第一个维度4作为批量大小,并对批量中的每个项目进行3个填充,它使4个大小的2个张量变成4个大小的5个张量。它的工作原理就像你对张量4x2的2(dim = dim + 1,second)进行3填充,这将输出相同的结果4x5。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47424230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档