【问题标题】:Creating pytorch Tensors from `torch` or `numpy` vectors从 `torch` 或 `numpy` 向量创建 pytorch 张量
【发布时间】:2020-09-19 02:30:39
【问题描述】:

我正在尝试通过组装通过基本数学函数计算的向量的维度来创建一些测试torch 张量。作为先驱:从原始 python arrays 组装张量确实有效:

import torch
import numpy as np
torch.Tensor([[1.0, 0.8, 0.6],[0.0, 0.5, 0.75]])
>> tensor([[1.0000, 0.8000, 0.6000],
            [0.0000, 0.5000, 0.7500]])

此外,我们可以从 numpy 数组中组装张量 https://pytorch.org/docs/stable/tensors.html:

torch.tensor(np.array([[1, 2, 3], [4, 5, 6]]))
tensor([[ 1,  2,  3],
        [ 4,  5,  6]])

但是,我无法从计算的向量中进行组装。以下是一些尝试:

X  = torch.arange(0,6.28)
x = X

torch.Tensor([[torch.cos(X),torch.tan(x)]])

torch.Tensor([torch.cos(X),torch.tan(x)])

torch.Tensor([np.cos(X),np.tan(x)])

torch.Tensor([[np.cos(X),np.tan(x)]])

torch.Tensor(np.array([np.cos(X),np.tan(x)]))

以上都有以下错误:

ValueError: 只有一个元素张量可以转换为 Python 标量

正确的语法是什么?

更新请求显示x / X 的评论。它们实际上设置为相同(我在中途改变了主意)

In [56]: x == X                                                                                                                          
Out[56]: tensor([True, True, True, True, True, True, True])

In [51]:  x                                                                                                                              
Out[51]: tensor([0., 1., 2., 3., 4., 5., 6.])

In [52]: X                                                                                                                               
Out[52]: tensor([0., 1., 2., 3., 4., 5., 6.])

【问题讨论】:

  • 请告诉我们您在从计算向量组装时使用的xX 的值。您可能在某个地方有错字。
  • @SVPraveen 为问题添加了x/X

标签: python pytorch tensor


【解决方案1】:

torch.arange 返回一个 torch.Tensor,如下所示 -

X  = torch.arange(0,6.28)
x
>> tensor([0., 1., 2., 3., 4., 5., 6.])

同样,torch.cos(x)torch.tan(x) 返回 torch.Tensor 的实例

在torch中连接张量序列的理想方法是使用torch.stack

torch.stack([torch.cos(x), torch.tan(x)])

输出

>> tensor([[ 1.0000,  0.5403, -0.4161, -0.9900, -0.6536,  0.2837,  0.9602],
        [ 0.0000,  1.5574, -2.1850, -0.1425,  1.1578, -3.3805, -0.2910]])

如果您希望沿轴 = 0 连接,请改用 torch.cat([torch.cos(x), torch.tan(x)])

【讨论】:

    猜你喜欢
    • 2021-07-31
    • 2019-12-28
    • 2020-07-15
    • 2020-03-16
    • 2018-09-20
    • 2021-09-11
    • 2016-05-15
    • 2018-01-15
    • 2021-08-15
    相关资源
    最近更新 更多