python - 在两个维度上将零填充到张量

标签 python pytorch tensor zero-padding

我有一个张量 t

1 2
3 4
5 6
7 8

我也想成功

0 0 0 0
0 1 2 0
0 3 4 0
0 5 6 0
0 7 8 0
0 0 0 0 

我尝试使用 new=torch.tensor([0.0.0.0.]) 张量堆叠四次,但这不起作用。

t = torch.arange(8).reshape(1,4,2).float()
print(t)
new=torch.tensor([[0., 0., 0.,0.]])
print(new)
r = torch.stack([t,new])  # invalid argument 0: Tensors must have same number of dimensions: got 4 and 3
new=torch.tensor([[[0., 0., 0.,0.]]])
print(new)
r = torch.stack([t,new])  # invalid argument 0: Sizes of tensors must match except in dimension 0.

我也尝试过cat,但也不起作用。

最佳答案

最好先初始化所需形状的数组,然后在适当的索引处添加数据。

import torch

t = torch.arange(8).reshape(1,4,2).float()
x = torch.zeros((1, t.shape[1]+2, t.shape[2]+2))
x[:, 1:-1, 1:-1] = t

print(x)

另一方面,如果您只想用零填充张量(而不仅仅是在某处添加额外的零),您可以使用torch.nn.function.pad:

import torch

t = torch.arange(8).reshape(1, 4, 2).float()
x = torch.nn.functional.pad(t, (1, 1, 1, 1))

print(x)

关于python - 在两个维度上将零填充到张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58007525/

相关文章:

neural-network - 在 PyTorch 中计算每个 epoch 的准确率

pytorch - 如何在 pytorch 中选择某个维度上的单个索引?

python - 更改 np 数组不会自动更改 Torch 张量?

python - 遇到 Unresolved 自定义操作 : TensorListFromTensor. 节点号 4 (TensorListFromTensor) 准备失败

python - python模块中全局参数的约定

python - Pandas 使用日期减去一些天数来连接历史数据

machine-learning - 语言翻译的序列到序列学习,未见过的单词呢

tensorflow 扩展 : Is it possible to use pytorch training loop in Tensorflow extended flow

Python epsilon 不是最小的数

python - 为给定的单词集创建 id 的简单 [pythonic] 方法