当前位置:网站首页>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
```
边栏推荐
- 软件研发的十大浪费:研发效能的另一面
- How to do the performance pressure test of "Health Code"
- OdeInt與GPU
- The junior college students were angry for 32 days, four rounds of interviews, five hours of soul torture, and won Ali's offer with tears
- C - detailed explanation of operators and summary of use cases
- Matters behind the construction of paint testing laboratory
- C -- array
- Kodori tree board
- 2022 G2 power station boiler stoker examination question bank and G2 power station boiler stoker simulation examination question bank
- Leecode question brushing record 1310 subarray XOR query
猜你喜欢

VR线上展览所具备应用及特色

C -- array

CF1638E. Colorful operations Kodori tree + differential tree array

Section 27 remote access virtual private network workflow and experimental demonstration

Use of dataloader

2022 a special equipment related management (elevator) simulation test and a special equipment related management (elevator) certificate examination

2022危险化学品生产单位安全生产管理人员题库及答案

STM32 extended key scan

RuntimeError: “max_pool2d“ not implemented for ‘Long‘

PR 2021 quick start tutorial, learn about the and functions of the timeline panel
随机推荐
Registration for R2 mobile pressure vessel filling test in 2022 and R2 mobile pressure vessel filling free test questions
C - detailed explanation of operators and summary of use cases
RuntimeError: mean(): input dtype should be either floating point or complex dtypes.Got Long instead
Research on medical knowledge atlas question answering system (I)
Ten wastes of software research and development: the other side of research and development efficiency
分布式锁的实现
Day 52 - tree problem
Shell之分析服务器日志命令集锦
LeetCode_58(最后一个单词的长度)
js解决浮点数相乘精度丢失问题
神经网络-使用Sequential搭建神经网络
VR线上展览所具备应用及特色
2022 t elevator repair question bank and simulation test
I also gave you the MySQL interview questions of Boda factory. If you need to come in and take your own
Simple implementation of slf4j
Collect the annual summary of laws, regulations, policies and plans related to trusted computing of large market points (national, ministerial, provincial and municipal)
C -- array
RuntimeError: “max_pool2d“ not implemented for ‘Long‘
【硬十宝典目录】——转载自“硬件十万个为什么”(持续更新中~~)
Introduction to JVM stack and heap