在pytorch中使用expand_dims

在pytorch中使用expand_dims,pytorch,Pytorch,我正在尝试将长度为18 1的热向量平铺到40x40网格中 看看pytorch文档,扩展dims似乎是我需要的 但是我不能让它工作。知道我做错了什么吗 one_hot = torch.zeros(18).unsqueeze(0) one_hot[0,1] = 1.0 one_hot tensor([[0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]) one_hot.expand(-1,-1,40,40

我正在尝试将长度为18 1的热向量平铺到40x40网格中

看看pytorch文档,扩展dims似乎是我需要的

但是我不能让它工作。知道我做错了什么吗

one_hot = torch.zeros(18).unsqueeze(0)
one_hot[0,1] = 1.0
one_hot
tensor([[0., 1., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]])
one_hot.expand(-1,-1,40,40)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
RuntimeError: The expanded size of the tensor (40) must match the existing size (18) at non-singleton dimension 3
我期望形状为1,18,40,40的张量沿着输入张量的单态维度工作。在您的示例中,您试图沿其不存在的第三维和第四维展开一个1×18张量-这就是为什么会出现错误的原因。只有第一个维度是size==1的单例维度

修理

沿着输入张量的单态维度工作。在您的示例中,您试图沿其不存在的第三维和第四维展开一个1×18张量-这就是为什么会出现错误的原因。只有第一个维度是size==1的单例维度

修理


如何将18个值映射到40x40矩阵?您期望的输出值是什么?只是复制一个热的。因此,40x40矩阵中的每个单元格都填充了18维1热向量。如何将18个值映射到40x40矩阵?您期望的输出值是什么?只是复制一个热的。因此,40x40矩阵中的每个单元都填充了18维1热向量。
one_hot = torch.zeros(1,18,1,1, dtype=torch.float)  # create the tensor with all singleton dimensions in place
one_hot[0,1,0,0] = 1.
one_hot.expand(-1,-1,40,40)