当前位置:网站首页>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
```
边栏推荐
- pytorch 卷积操作
- Summary of testing experience - Testing Theory
- How do I sort a list of strings in dart- How can I sort a list of strings in Dart?
- [ue4] event distribution mechanism of reflective event distributor and active call event mechanism
- Pytorch convolution operation
- Solve the problem that the external chain file of Qiankun sub application cannot be obtained
- VR线上展览所具备应用及特色
- 技术分享| 融合调度中的广播功能设计
- 2022-02-15 (399. Division evaluation)
- pytorch中常用数据集的使用方法
猜你喜欢

Maixll dock quick start

Common methods in transforms

LM small programmable controller software (based on CoDeSys) note 19: errors do not match the profile of the target

Registration for R2 mobile pressure vessel filling test in 2022 and R2 mobile pressure vessel filling free test questions

2022 gas examination question bank and online simulation examination

2022 t elevator repair new version test questions and t elevator repair simulation test question bank

Basic usage, principle and details of session

STM32 光敏电阻传感器&两路AD采集

2022 hoisting machinery command registration examination and hoisting machinery command examination registration

Dataloader的使用
随机推荐
常用的Transforms中的方法
Cmake selecting compilers and setting compiler options
C -- array
分布式架构系统拆分原则、需求、微服务拆分步骤
STM32 extended key scan
Maixll dock quick start
Difference between cookie and session
技术分享| 融合调度中的广播功能设计
Introduction to JVM stack and heap
Use of dataloader
【硬十宝典目录】——转载自“硬件十万个为什么”(持续更新中~~)
[difficult] sqlserver2008r2, can you recover only some files when recovering the database?
RuntimeError: “max_pool2d“ not implemented for ‘Long‘
Seven crimes of counting software R & D Efficiency
细数软件研发效能的七宗罪
无器械健身
2022 question bank and answers for safety production management personnel of hazardous chemical production units
LeetCode_ 53 (maximum subarray and)
How to do the performance pressure test of "Health Code"
[pat (basic level) practice] - [simple simulation] 1064 friends