1.torch
1.1 张量tensors
1.1.1 torch.ones()
torch.ones(sizes, out=None) → Tensor
返回一个全为1 的张量,形状由可变参数sizes定义。
torch.zeros(sizes, out=None) → Tensor
返回一个全为0的张量,形状由可变参数sizes定义。
1.1.2 torch.rand()
torch.rand(sizes, out=*None) → Tensor
返回一个张量,包含了从区间[0,1)的均匀分布中抽取的一组随机数
1.2 数学操作
1.2.1 torch.lerp() 线性插值
torch.lerp(start, end, weight, out=None)
对两个张量以 start,end 做线性插值, 将结果返回到输出张量。
1.2.2 torch.mean() 均值
torch.mean(input, dim, out=None) → Tensor
返回输入张量给定维度dim上每行的均值。
>>> a = torch.randn(4, 4)>>> a-1.2738 -0.3058 0.1230 -1.96150.8771 -0.5430 -0.9233 0.98791.4107 0.0317 -0.6823 0.2255-1.3854 0.4953 -0.2160 0.2435[torch.FloatTensor of size 4x4]>>> torch.mean(a, 1)-0.85450.09970.2464-0.2157[torch.FloatTensor of size 4x1]
1.2.3 torch.sort() 没看懂
torch.sort(input, dim=None, descending=False, out=None) -> (Tensor, LongTensor)
对输入张量 input 沿着指定维按升序排序。如果指定参数 descending为 True,则按降序排序
如果不给定dim,则默认为输入的最后一维。
>>> x = torch.randn(3, 4)>>> sorted, indices = torch.sort(x)>>> sorted-1.6747 0.0610 0.1190 1.4137-1.4782 0.7159 1.0341 1.3678-0.3324 -0.0782 0.3518 0.4763[torch.FloatTensor of size 3x4]>>> indices0 1 3 22 1 0 33 1 0 2[torch.LongTensor of size 3x4]>>> sorted, indices = torch.sort(x, 0)>>> sorted-1.6747 -0.0782 -1.4782 -0.33240.3518 0.0610 0.4763 0.11901.0341 0.7159 1.4137 1.3678[torch.FloatTensor of size 3x4]>>> indices0 2 1 22 0 2 01 1 0 1[torch.LongTensor of size 3x4]
4. torch.nn
4.1 torch.nn.Module
nn.module 是所有网络的基类,自定义的模型也应该继承这个类
import torch.nn as nnimport torch.nn.functional as Fclass Model(nn.Module):def __init__(self):super(Model, self).__init__()self.conv1 = nn.Conv2d(1, 20, 5)# submodule: Conv2dself.conv2 = nn.Conv2d(20, 20, 5)def forward(self, x):x = F.relu(self.conv1(x))return F.relu(self.conv2(x))
nn.add_module()
import torch.nn as nnclass Model(nn.Module):def __init__(self):super(Model, self).__init__()self.add_module("conv", nn.Conv2d(10, 20, 4))# self.conv = nn.Conv2d(10, 20, 4) 和上面这个增加module的方式等价model = Model()print(model.conv)
