Pytorch-Tensor(张量)

Tensor的基本数值类型

Pytorch-Tensor(张量)_第1张图片

 

Tensor(张量)的创建

1. 直接创建

torch.ones(int[, int[, int[, ...]]]) -> 创建一个1填充的矩阵

torch.zeros(int[, int[, int[, ...]]], dtype=type) -> 创建一个0填充的矩阵,并指定数据类型

torch.empty(int[, int[, int[, ...]]]) -> 创建一个矩阵(未初始化的)

torch.full((tuple)(int[, int[, int[, ...]]]), value) -> 创建一个以 value 填充的矩阵

torch.eye(int[, int]) -> 创建一个单位矩阵(二维的)

torch.rand(int[, int[, int[, ...]]]) -> 创建一个随机初始化的矩阵

torch.randn(int[, int[, int[, ...]]]) -> 创建一个从标准正态分布中抽取的随机初始化矩阵

torch.randint([low=0], high, (tuple)(int[, int[, int[, ...]]]) -> 创建一个规定范围(low  -  high)内的整数矩阵

torch.tensor((list)[[...], [...], [...], ...] / int) -> 创建矩阵并使用现有数据(list 或 单个值)初始化

2. 使用实例对象 new_*() 创建

obj.new([size], [dtype=]) -> 创建一个默认为空或指定 Size的矩阵

obj.new_ones(size, [dtype=]) -> 创建一个格式为 Size 的 1 矩阵

obj.new_zeros(size, [dtype=]) -> 创建一个格式为 Size 的 0 矩阵

obj.new_empty(size, [dtype=]) -> 创建一个格式为 Size 的未初始化矩阵

obj.new_full((tuple)size, value, [dtype=]) -> 创建一个格式为 Size 的值为 value 的矩阵

obj.new_tensor(data, [dtype=]) -> 创建矩阵并使用现有数据 data (list 或 单个值)初始化

3. 使用 *_like(obj) 创建 Size 相同的矩阵

torch.ones_like(obj, [dtype=]) -> 创建一个和 obj 的 Size 相同的 1 矩阵

torch.zeros_like(obj, [dtype=]) -> 创建一个和 obj 的 Size 相同的 0 矩阵

torch.empty_like(obj, [dtype=]) -> 创建一个和 obj 的 Size 相同的未初始化矩阵

torch.full_like(obj, value, type=]) -> 创建一个和 obj 的 Size 相同的 value 填充的矩阵

torch.rand_like(obj, [dtype=]) -> 创建一个和 obj 的 Size 相同的随机矩阵(若 obj.dtype 不是浮点型的要改 dtype)

torch.randn_like(obj, [dtype=]) -> 创建一个和 obj 的 Size 相同的,值从标准正态分布中抽取的随机初始化矩阵

torch.randint_like(obj, [low=0], high, [dtype=]) -> 创建一个和 obj 的 Size 相同的规定范围(low  -  high)内的整数矩阵

 

Tensor的其他操作

1.属性操作

obj.size() -> 返回 Tensor 的 Size,返回类型为 tuple

obj.requires_grad_(True / False) -> 设置 Tensor 的 requires_grad 属性

obj.'dtype'() -> 数据类型转换,其中 dtype 为 float,long 等 Tensor 类型

2.计算操作

sum_obj = obj1 + obj2 -> Tensor 直接相加,obj1 与 obj2 的 Size 要一致

torch.add(obj1, obj2, [out=obj3]) -> obj3 = obj1 + obj2,其中 obj3 仅为一个变量,无需为 Tensor 类型

obj1.add_(obj2) -> obj1 = obj1 + obj2,  任何 以``_`` 结尾的操作都会用结果替换原变量

obj.mean() -> 获取 Tensor 对象中值的平均数,返回值为 Tensor 对象

obj ** (int) -> 矩阵的阶乘

torch.max(obj) -> 计算 Tensor 中值的最大值,返回一个标量

torch.min(obj) -> 计算 Tensor 中值的最小值,返回一个标量

torch.max(obj, dim) 同 obj.max(dim) -> 计算最大值, dim = 0/1 计算 列/行 的最大值及其索引

torch.min(obj, dim) 同 obj.min(dim) -> 计算最小值, dim = 0/1 计算 列/行 的最大值及其索引

3.取值操作

obj.item() -> 当 Tensor 中只有一个值或 obj 为标量时可以使用

obj[(int 或 :),  (int 或 :)] -> Tensor 索引(中括号),返回某行或列,单个值或整个矩阵

4.转换操作

torch.view(int[, int]) -> 重新排列 Size, 若只有一个参数,则只能为 Tensor 内数目,若其中一个为 -1,则为从另一个推定

numpy_obj = tensor_obj.numpy() -> 将一个 Torch Tensor 转换为 NumPy 数组

tensor_obj = torch.from_numpy(numpy_obj) -> 将一个 NumPy 数组转换为 Torch Tensor

注:NumPy 对象与 Tensor 对象共享内存

5.移动操作

torch.cuda.is_available() -> 判断是否有 CUDA 可以使用

obj.to(device, [dtype]) -> 将 Tensor 移动到任何设备中,可以更改类型

 

 

 

 

参考链接:https://github.com/zergtant/pytorch-handbook

                  https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch/#creation-ops

 

 

 

 

 

 

 


 

 

你可能感兴趣的:(Pytorch,Pytorch)