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数据类型
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的类型转换类型。
- type(dtype=None, non_blocking=False, **kwargs):指定类型改变。例如