pytorch-day07(nn.Module)

 1. embed current layers(能调用一些已经写好的函数)

      

 2. Container(会从上到下执行一个forward操作)

      

 3. parameters

       

 4. modules

       

      

 5. to(device)

       

6. save and load

       

 7. train/test

      

8. implement own layer

      

8. own linear layer

       

 1 import  torch
 2 from    torch import nn
 3 from    torch import optim
 4 
 5 
 6 
 7 class MyLinear(nn.Module):
 8 
 9     def __init__(self, inp, outp):
10         super(MyLinear, self).__init__()
11 
12         # requires_grad = True
13         self.w = nn.Parameter(torch.randn(outp, inp))
14         self.b = nn.Parameter(torch.randn(outp))
15 
16     def forward(self, x):
17         x = x @ self.w.t() + self.b
18         return x
19 
20 
21 class Flatten(nn.Module):
22 
23     def __init__(self):
24         super(Flatten, self).__init__()
25 
26     def forward(self, input):
27         return input.view(input.size(0), -1)
28 
29 
30 
31 class TestNet(nn.Module):
32 
33     def __init__(self):
34         super(TestNet, self).__init__()
35 
36         self.net = nn.Sequential(nn.Conv2d(1, 16, stride=1, padding=1),
37                                  nn.MaxPool2d(2, 2),
38                                  Flatten(),
39                                  nn.Linear(1*14*14, 10))
40 
41     def forward(self, x):
42         return self.net(x)
43 
44 
45 class BasicNet(nn.Module):
46 
47     def __init__(self):
48         super(BasicNet, self).__init__()
49 
50         self.net = nn.Linear(4, 3)
51 
52     def forward(self, x):
53         return self.net(x)
54 
55 
56 
57 class Net(nn.Module):
58 
59     def __init__(self):
60         super(Net, self).__init__()
61 
62         self.net = nn.Sequential(BasicNet(),
63                                  nn.ReLU(),
64                                  nn.Linear(3, 2))
65 
66     def forward(self, x):
67         return self.net(x)
68 
69 
70 
71 
72 
73 def main():
74     device = torch.device('cuda')
75     net = Net()
76     net.to(device)
77 
78     net.train()
79 
80     net.eval()
81 
82     # net.load_state_dict(torch.load('ckpt.mdl'))
83     # torch.save(net.state_dict(), 'ckpt.mdl')
84 
85     for name, t in net.named_parameters():
86         print('parameters:', name, t.shape)
87 
88     for name, m in net.named_children():
89         print('children:', name, m)
90 
91 
92     for name, m in net.named_modules():
93         print('modules:', name, m)
94 
95 
96 
97 if __name__ == '__main__':
98     main()
代码汇总

 9、数据增强(Data argumentation)

   Flip:翻转

  Rotate:旋转

  Scale:缩放

  Crop Part:裁剪部分

  Noise:

  GAN:

  数据增强虽有用,但是不能弄无穷多张照片。并不是数据增强产生的数据越多贡献就会越大


 

posted @ 2020-07-29 20:03  小吴的日常  阅读(128)  评论(0)    收藏  举报