如何解决从`torch`或`numpy`向量创建pytorch张量
我正在尝试通过组装通过基本数学函数计算出的矢量的尺寸来创建一些测试torch
张量。作为先驱:从原始python arrays
组装Tensor可以正常工作:
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,[ 4,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])
In [51]: x
Out[51]: tensor([0.,1.,2.,3.,4.,5.,6.])
In [52]: X
Out[52]: tensor([0.,6.])
解决方法
torch.arange
返回一个割炬。张量如下所示-
X = torch.arange(0,6.28)
x
>> tensor([0.,1.,2.,3.,4.,5.,6.])
类似地,torch.cos(x)
和torch.tan(x)
返回torch.Tensor的实例
在火炬中连接张量序列的理想方法是使用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]])
如果您希望沿axis = 0进行串联,请改用torch.cat([torch.cos(x),torch.tan(x)])
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。