目录
将列表转换为张量
-
Python的列表或序列可以通过
torch.tensor()
函数构造张量。 -
查看维度和元素数量:
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
- 查看维度:
x.shape
或x.size()
,返回torch.Size
类型对象,可以直接解包 - 查看元素数量:
x.numel()
- 查看维度:
-
指定元素类型、分配的位置以及是否计算梯度:
x = torch.tensor([[1, 2, 3], [4, 5, 6]], dtype=torch.float, device="cuda:0", requires_grad=True)
张量和Numpy数组的相互转化
-
利用NumPy数组生成tensor
torch.from_numpy(ndarray) → Tensor
将 numpy.ndarray 转换为 pytorch 的 Tensor。返回的张量 tensor 和 numpy的 ndarray 共享同一内存空间。修改一个会导致另外一个也被修改。返回的张量不能改变大小。
-
tensor转化为numpy数组
x.numpy() → ndarray
将该 tensor 以 NumPy 的形式返回 ndarray,两者共享相同的底层内存。
随机数生成张量
-
生成随机数前,可以使用
torch.manual_seed()
函数,指定随机数种子,保证生成的随机数可以重复出现。在每次重新运行程序时,同样的随机数生成代码得到的是同样的结果。 -
torch.rand(*sizes, out=None) → Tensor
返回一个张量,包含了从区间[0,1)的均匀分布中抽取的一组随机数,形状由可变参数sizes 定义。
-
torch.randn(*sizes, out=None) → Tensor
返回一个张量,包含了从标准正态分布(均值为 0,方差为 1)中抽取一组随机数,形状由可变参数 sizes 定义。
-
torch.normal(means, std, out=None) → Tensor
返回一个张量,包含从给定参数 means,std 的离散正态分布中抽取随机数。
均值 means 是一个张量,包含每个输出元素相关的正态分布的均值。
std 是一个张量,包含每个输出元素相关的正态分布的标准差。 均值和标准差的形状不须匹配,但每个张量的元素个数须相同。
生成特定的张量
-
torch.arange(start, end, step=1, out=None) → Tensor
返回一个 1 维张量,长度为 floor((end−start)/step)。包含在半开区间 [start, end),以 step 为步长的一组序列值(默认步长为 1)。
-
torch.linspace(start, end, steps=100, out=None) → Tensor
返回一个 1 维张量,包含在区间 start 和 end 上均匀间隔的 step 个点,默认左右均为闭区间, 输出 1 维张量的长度为steps。
-
torch.zeros(*sizes, out=None) → Tensor
返回一个全为标量 0 的张量,形状由可变参数 sizes 定义。
sizes (int...) -- 整数序列,定义了输出形状
out (Tensor, optional) -- 结果张量
-
torch.ones(*sizes, out=None) → Tensor
返回一个全为 1 的张量,形状由可变参数 sizes 定义。
参数同上
-
torch.eye(n, m=None, out=None)→ Tensor
返回一个 2 维张量,对角线位置全 1,其它位置全 0
n (int) -- 行数
m (int, optional) -- 列数:如果为 None,则默认为 n
out (Tensor, optinal) - Output tensor