当前位置:网站首页>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
```
边栏推荐
- AssertionError assert I.ndim == 4 and I.shape[1] == 3
- Pytorch(四) —— 可视化工具 Visdom
- 技术分享| 融合调度中的广播功能设计
- 测量三相永磁同步电机的交轴直轴电感
- 2022 G2 power station boiler stoker examination question bank and G2 power station boiler stoker simulation examination question bank
- OdeInt与GPU
- LeetCode_ 53 (maximum subarray and)
- Odeint and GPU
- Maixll dock quick start
- The index is invalid
猜你喜欢

Pytorch convolution operation

神经网络-使用Sequential搭建神经网络

神经网络的基本骨架-nn.Moudle的使用

2022 G2 power station boiler stoker examination question bank and G2 power station boiler stoker simulation examination question bank

Software testing needs more and more talents. Why do you still not want to take this path?

Difficulties in the development of knowledge map & the importance of building industry knowledge map

Section 27 remote access virtual private network workflow and experimental demonstration

Measurement of quadrature axis and direct axis inductance of three-phase permanent magnet synchronous motor

pytorch 卷积操作

LM小型可编程控制器软件(基于CoDeSys)笔记二十:plc通过驱动器控制步进电机
随机推荐
科研狗可能需要的一些工具
LeetCode_35(搜索插入位置)
The longest increasing subsequence and its optimal solution, total animal weight problem
Day 52 - tree problem
The index is invalid
Ten wastes of software research and development: the other side of research and development efficiency
2022 hoisting machinery command registration examination and hoisting machinery command examination registration
Summary of acl2021 information extraction related papers
JVM栈和堆简介
Talk about testdeploy
How do I sort a list of strings in dart- How can I sort a list of strings in Dart?
2022危险化学品生产单位安全生产管理人员题库及答案
神经网络-非线性激活
Leecode records the number of good segmentation of 1525 strings
The design points of voice dialogue system and the importance of multi round dialogue
数据加载及预处理
2022-02-15 (399. Division evaluation)
LeetCode_28(实现 strStr())
Codeforces Round #771 (Div. 2) ABCD|E
pytorch中常用数据集的使用方法