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 做线性插值, 将结果返回到输出张量。
image.png

1.2.2 torch.mean() 均值

torch.mean(input, dim, out=None) → Tensor
返回输入张量给定维度dim上每行的均值。

  1. >>> a = torch.randn(4, 4)
  2. >>> a
  3. -1.2738 -0.3058 0.1230 -1.9615
  4. 0.8771 -0.5430 -0.9233 0.9879
  5. 1.4107 0.0317 -0.6823 0.2255
  6. -1.3854 0.4953 -0.2160 0.2435
  7. [torch.FloatTensor of size 4x4]
  8. >>> torch.mean(a, 1)
  9. -0.8545
  10. 0.0997
  11. 0.2464
  12. -0.2157
  13. [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,则默认为输入的最后一维。

  1. >>> x = torch.randn(3, 4)
  2. >>> sorted, indices = torch.sort(x)
  3. >>> sorted
  4. -1.6747 0.0610 0.1190 1.4137
  5. -1.4782 0.7159 1.0341 1.3678
  6. -0.3324 -0.0782 0.3518 0.4763
  7. [torch.FloatTensor of size 3x4]
  8. >>> indices
  9. 0 1 3 2
  10. 2 1 0 3
  11. 3 1 0 2
  12. [torch.LongTensor of size 3x4]
  13. >>> sorted, indices = torch.sort(x, 0)
  14. >>> sorted
  15. -1.6747 -0.0782 -1.4782 -0.3324
  16. 0.3518 0.0610 0.4763 0.1190
  17. 1.0341 0.7159 1.4137 1.3678
  18. [torch.FloatTensor of size 3x4]
  19. >>> indices
  20. 0 2 1 2
  21. 2 0 2 0
  22. 1 1 0 1
  23. [torch.LongTensor of size 3x4]

4. torch.nn

4.1 torch.nn.Module

nn.module 是所有网络的基类,自定义的模型也应该继承这个类

  1. import torch.nn as nn
  2. import torch.nn.functional as F
  3. class Model(nn.Module):
  4. def __init__(self):
  5. super(Model, self).__init__()
  6. self.conv1 = nn.Conv2d(1, 20, 5)# submodule: Conv2d
  7. self.conv2 = nn.Conv2d(20, 20, 5)
  8. def forward(self, x):
  9. x = F.relu(self.conv1(x))
  10. return F.relu(self.conv2(x))

nn.add_module()

  1. import torch.nn as nn
  2. class Model(nn.Module):
  3. def __init__(self):
  4. super(Model, self).__init__()
  5. self.add_module("conv", nn.Conv2d(10, 20, 4))
  6. # self.conv = nn.Conv2d(10, 20, 4) 和上面这个增加module的方式等价
  7. model = Model()
  8. print(model.conv)