当前位置:网站首页>Neural networks - use sequential to build neural networks
Neural networks - use sequential to build neural networks
2022-07-01 04:46:00 【booze-J】
article
Let's take this neural network diagram as an example , To build a comparison to see the normal situation of building a neural network and using Sequential The difference between building Neural Networks , And some points needing attention in building neural network .
Under normal circumstances, build a neural network
Build neural network code :
import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential
class Booze(nn.Module):
def __init__(self):
super(Booze, self).__init__()
# 1. When building a network according to the network diagram , Some parameters are not given in the network diagram , It needs to be calculated by yourself , Like padding,stride wait
self.conv1 = Conv2d(3,32,5,padding=2)
self.maxpool1 = MaxPool2d(2)
self.conv2 = Conv2d(32,32,5,padding=2)
self.maxpool2 = MaxPool2d(2)
self.conv3 = Conv2d(32,64,5,padding=2)
self.maxpool3 = MaxPool2d(2)
self.flatten = Flatten()
# 2. When setting this linear layer in_feature and out_feature You may also need to do it yourself , This in_feature You can also print flatten Check it out.
self.linear1 = Linear(1024,64)
self.linear2 = Linear(64,10)
def forward(self,x):
x = self.conv1(x)
x = self.maxpool1(x)
x = self.conv2(x)
x = self.maxpool2(x)
x = self.conv3(x)
x = self.maxpool3(x)
x = self.flatten(x)
x = self.linear1(x)
x = self.linear2(x)
return x
obj = Booze()
print(obj)
'''3. A simple test of the network structure '''
input = torch.ones((64,3,32,32))
output = obj(input)
print(output.shape)
There are some points to note in the above code , It needs to be presented separately .
1. When building a network according to the network diagram , Some parameters are not given in the network diagram , It needs to be calculated by yourself , Like padding,stride wait
It's like building the first convolution layer , You need to calculate by yourself padding and stride. So how to calculate ? We need to use Official documents The calculation formula provided .
2. When building this linear layer in_feature You may also need to do it yourself , This in_feature You can also print flatten Check it out.
torch.nn.Linear(in_features, out_features, bias=True, device=None, dtype=None)
Flatten Can pass Official documents To use the .
# (batch_size,channels,H,W)=(32, 1, 5, 5)
input = torch.randn(32, 1, 5, 5)
# With default parameters
m = nn.Flatten()
output = m(input)
output.size()
# torch.Size([32, 25]) batch_size=32
# With non-default parameters
m = nn.Flatten(0, 2)
output = m(input)
output.size()
# torch.Size([160, 5]) batch_size=160
Use Sequential Building neural networks
Build neural network code :
import torch
from torch import nn
from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential
from torch.utils.tensorboard import SummaryWriter
class Booze(nn.Module):
def __init__(self):
super(Booze, self).__init__()
self.model1 = Sequential(
Conv2d(3, 32, 5, padding=2),
MaxPool2d(2),
Conv2d(32, 32, 5, padding=2),
MaxPool2d(2),
Conv2d(32, 64, 5, padding=2),
MaxPool2d(2),
Flatten(),
Linear(1024, 64),
Linear(64, 10)
)
def forward(self,x):
x = self.model1(x)
return x
obj = Booze()
print(obj)
''' A simple test of the network structure '''
input = torch.ones((64,3,32,32))
output = obj(input)
print(output.shape)
''' Visualize the network model '''
writer = SummaryWriter("logs")
writer.add_graph(obj,input)
writer.close()
There are also some points to note in the above code , It needs to be presented separately .
3. After setting up the network , A simple test of the network structure is needed
obj = Booze()
print(obj)
''' A simple test of the network structure '''
input = torch.ones((64,3,32,32))
output = obj(input)
print(output.shape)
Just like the code above , After the operation, no error will be reported .
4. After the network is set up , Yes, you can use tensorboard To visualize the network model
''' Visualize the network model '''
writer = SummaryWriter("logs")
writer.add_graph(obj,input)
writer.close()
It's used here add_graph This method , Please refer to Official documents , How to use it and add_images and add_scalar almost .
The results are as follows :
Specific differences
In fact, it is easy to see from the code .
Normal condition :
def __init__(self):
super(Booze, self).__init__()
self.conv1 = Conv2d(3,32,5,padding=2)
self.maxpool1 = MaxPool2d(2)
self.conv2 = Conv2d(32,32,5,padding=2)
self.maxpool2 = MaxPool2d(2)
self.conv3 = Conv2d(32,64,5,padding=2)
self.maxpool3 = MaxPool2d(2)
self.flatten = Flatten()
self.linear1 = Linear(1024,64)
self.linear2 = Linear(64,10)
def forward(self,x):
x = self.conv1(x)
x = self.maxpool1(x)
x = self.conv2(x)
x = self.maxpool2(x)
x = self.conv3(x)
x = self.maxpool3(x)
x = self.flatten(x)
x = self.linear1(x)
x = self.linear2(x)
return x
Sequential build :
class Booze(nn.Module):
def __init__(self):
super(Booze, self).__init__()
self.model1 = Sequential(
Conv2d(3, 32, 5, padding=2),
MaxPool2d(2),
Conv2d(32, 32, 5, padding=2),
MaxPool2d(2),
Conv2d(32, 64, 5, padding=2),
MaxPool2d(2),
Flatten(),
Linear(1024, 64),
Linear(64, 10)
)
def forward(self,x):
x = self.model1(x)
return x
```
边栏推荐
- Dual contractual learning: text classification via label aware data augmentation reading notes
- Difficulties in the development of knowledge map & the importance of building industry knowledge map
- LM小型可编程控制器软件(基于CoDeSys)笔记二十:plc通过驱动器控制步进电机
- How to do the performance pressure test of "Health Code"
- 2022年T电梯修理题库及模拟考试
- Grey correlation cases and codes
- How to use common datasets in pytorch
- 无器械健身
- Basic skeleton of neural network nn Use of moudle
- Common UNIX Operation and maintenance commands of shell
猜你喜欢
2022 Shanghai safety officer C certificate examination question simulation examination question bank and answers
2022 t elevator repair question bank and simulation test
神经网络-最大池化的使用
Difficulties in the development of knowledge map & the importance of building industry knowledge map
扩展-Fragment
Section 27 remote access virtual private network workflow and experimental demonstration
STM32扩展板 数码管显示
2022 hoisting machinery command registration examination and hoisting machinery command examination registration
Why is Internet thinking not suitable for AI products?
神经网络-卷积层
随机推荐
【硬十宝典目录】——转载自“硬件十万个为什么”(持续更新中~~)
VIM简易使用教程
Shell analysis server log command collection
Pytorch(四) —— 可视化工具 Visdom
Some tools that research dogs may need
Execution failed for task ‘:app:processDebugResources‘. > A failure occurred while executing com. and
Use of dataloader
Quelques outils dont les chiens scientifiques pourraient avoir besoin
2022年T电梯修理题库及模拟考试
JS rotation chart
pytorch神经网络搭建 模板
PR 2021 quick start tutorial, learn about the and functions of the timeline panel
解决qiankun中子应用外链文件无法获取
LeetCode_ 66 (plus one)
Technology sharing | broadcast function design in integrated dispatching
Software testing needs more and more talents. Why do you still not want to take this path?
Seven crimes of counting software R & D Efficiency
Basic exercise of test questions hexadecimal to decimal
C#读写应用程序配置文件App.exe.config,并在界面上显示
RuntimeError: “max_pool2d“ not implemented for ‘Long‘