Torch包学习

1. 创建

  • torch.from_numpy(ndarray) → Tensor:将numpy.ndarray 转换为pytorch的 Tensor。两者共享内存。返回的张量不能改变大小。
  • torch.linspace(start, end, steps=100, out=None) → Tensor:生成一个 从start 到 end 的tensor。tensor的长度为steps。包括start和end。
  • torch.arange(start, end, step=1, out=None) → Tensor:不包含end
  • torch.ones(*sizes, out=None) → Tensor
  • torch.zeros(*sizes, out=None) → Tensor
  • torch.rand(*sizes, out=None) → Tensor:[0,1)的均匀分布的一组随机数
  • torch.randn(*sizes, out=None) → Tensor:标准正泰分布(均值为0,方差为 1)的一组随机数。
  • torch.randperm(n, out=None) → LongTensor:从0 到n -1 的随机整数排列。
  • torch.normal(means, std, out=None):均值means是一个张量,包含每个输出元素相关的正态分布的均值。std是一个张量,包含每个输出元素相关的正态分布的标准差。均值和标准差的形状不须匹配,但每个张量的元素个数须相同。
  • torch.normal(mean=0.0, std, out=None):与上面函数类似,所有抽取的样本共享均值。
  • torch.normal(means, std=1.0, out=None):与上面函数类似,所有抽取的样本共享标准差。

2. 连接、切割、去\加1维度、堆叠、转置

  • torch.cat(inputs, dimension=0) → Tensor:在给定维度上对输入的张量序列seq 进行连接操作。
  • torch.stack(sequence, dim=0):增加新的维度进行堆叠。 dim (int) – 插入的维度。
  • torch.split(tensor, split_size, dim=0):按指定维度将输入张量进行分割。split_size (int) – 单个分块的形状大小,最后一个块可能小于前面的块。
  • torch.squeeze(input, dim=None, out=None):将输入张量形状中的1 去除并返回。返回张量与输入张量共享内存
  • torch.unsqueeze(input, dim, out=None):对输入的指定位置插入维度 1
  • torch.transpose(input, dim0, dim1, out=None) → Tensor:交换维度dim0和dim1。只能交换两个维度。
  • permute(input, dims) → Tensor:dims可以是tuple,可以交换多个维度。

3. 随机数种子

  • torch.manual_seed(seed):设定生成随机数的种子。保证每次随机初始化时都一样。
  • torch.cuda.manual_seed(int.seed):为当前GPU设置随机种子
  • torch.cuda.manual_seed_all(int.seed):为所有的GPU设置种子

4. 保存和加载

  • torch.save(obj, f, pickle_module, pickle_protocol):只需关注前两个参数。将obj保存到f路径。
  • torch.load(f, map_location=None, pickle_module):加载torch.save()保存的对象。例如map_location=torch.device('gpu')

5. 数学操作

5.1 逐像素操作

  • torch.abs(input, out=None) → Tensor
  • torch.atan(input, out=None) → Tensor:输出反正切,范围为 [ − π / 2 , π / 2 ] [-\pi/2, \pi/2] [π/2,π/2]
  • torch.atan2(input1, input2, out=None) → Tensor:输出给定的 input1 及 input2 坐标值的反正切值,范围为 [ − π , π ] [-\pi, \pi] [π,π]
  • torch.ceil(input, out=None) → Tensor:对输入张量向上取整
  • torch.floor(input, out=None) → Tensor:返回张量每个元素的floor
  • torch.round(input, out=None) → Tensor:返回一个新张量,将输入input张量每个元素舍入到最近的整数。
  • torch.clamp(input, min, max, out=None) → Tensor:将张量元素夹紧到区间[min,max]
  • torch.exp(tensor, out=None) → Tensor
  • torch.log(input, out=None) → Tensor:计算自然对数
  • torch.pow(input, exponent, out=None):
  • torch.sigmoid(input, out=None) → Tensor
  • torch.sign(input, out=None) → Tensor:符号函数,返回+1和-1
  • torch.sqrt(input, out=None) → Tensor
  • torch.trunc(input, out=None) → Tensor:小数部分被舍弃

5.2 归并操作

  • torch.numel(input)->int:返回张量的元素个数。
  • torch.sum(input, dim, out=None) → Tensor:返回输入张量给定维度上每行的和。 输出形状与输入相同,除了给定维度上为1.
  • torch.mean(input, dim, out=None) → Tensor:返回输入张量给定维度dim上每行的均值。输出形状与输入相同,除了给定维度上为1。
  • torch.norm(input, p, dim, out=None) → Tensor:返回输入张量给定维dim 上每行的p 范数。 输出形状与输入相同,除了给定维度上为1.
  • torch.std(input, dim, out=None) → Tensor:返回输入张量给定维度上每行的标准差。 输出形状与输入相同,除了给定维度上为1.
  • torch.var(input, dim, out=None) → Tensor:返回输入张量给定维度上每行的方差。 输出形状与输入相同,除了给定维度上为1.

5.3 比较操作和排序

  • torch.max(input) → float:返回输入张量所有元素的最大值。
  • torch.max(input, dim, max=None, max_indices=None) -> (Tensor, LongTensor):返回输入张量给定维度上每行的最大值,并同时返回每个最大值的位置索引。
  • torch.min(input) → float:返回输入张量所有元素的最小值。
  • torch.min(input, dim, min=None, min_indices=None) -> (Tensor, LongTensor)
  • torch.sort(input, dim=None, descending=False, out=None) -> (Tensor, LongTensor):对输入张量input沿着指定维按升序排序。如果不给定dim,则默认为输入的最后一维。如果指定参数descending为True,则按降序排序。返回元组 (sorted_tensor, sorted_indices) , sorted_indices 为原始输入中的下标。

5.4 矩阵分析

  • torch.eig(a, eigenvectors=False, out=None) -> (Tensor, Tensor):计算实方阵a 的特征值和特征向量
  • torch.svd(input, some=True, out=None) -> (Tensor, Tensor, Tensor):U,S,V=torch.svd(A),奇异值分解。
  • torch.inverse(input, out=None) → Tensor:对方阵输入input 取逆。
  • torch.mm(mat1, mat2, out=None) → Tensor:对矩阵mat1和mat2进行相乘。
  • torch.mv(mat, vec, out=None) → Tensor:对矩阵mat和向量vec进行相乘。

6. Tensor数据类型

Torch包学习_第1张图片

6.1 类型转换

  • CPU和GPU的Tensor之间转换
    • data.cuda():cpu –> gpu
    • data.cpu():gpu –> cpu
  • Tensor与Numpy Array之间的转换
    • data.numpy():Tensor –> Numpy.ndarray
    • torch.from_numpy(data):Numpy.ndarray –> Tensor
  • Tensor的基本类型转换
    • tensor.long():
    • tensor.half():将tensor投射为半精度浮点(16位浮点)类型
    • tensor.int():
    • tensor.double():
    • tensor.float():
    • tensor.char():
    • tensor.byte():
    • tensor.short():
  • Tensor的基本数据类型转换
    • type(dtype=None, non_blocking=False, **kwargs):指定类型改变。例如data = data.type(torch.float32)
    • type_as(tensor):按照给定的tensor的类型转换类型。

你可能感兴趣的:(#,Pytorch常用库,torch)