修改模型
This commit is contained in:
parent
6d4e86714e
commit
2909902595
1 changed files with 4 additions and 132 deletions
136
model.py
136
model.py
|
|
@ -1,7 +1,7 @@
|
|||
"""
|
||||
这个文件是模型的定义文件,请不要擅自修改,如有疑问微信群里反馈
|
||||
单独运行本文件将会输出模型结构
|
||||
目前的话是一个36层的模型,模型总量应该是在10M左右 如果到时候还是欠拟合的话再考虑去做更深的结构
|
||||
目前的话是一个36层的模型,模型总量应该是在80M左右 如果到时候还是欠拟合的话再考虑去做更深的结构
|
||||
author : yukun-hh
|
||||
date : 2026-4-10
|
||||
|
||||
|
|
@ -10,7 +10,7 @@ date : 2026-4-10
|
|||
import torch
|
||||
from torch import nn
|
||||
from torch.nn import functional as F
|
||||
|
||||
from torchsummary import summary
|
||||
#残差块
|
||||
class Resblock(nn.Module):
|
||||
def __init__(self, input_channels,output_channels,use_1x1conv=False,strides=1):
|
||||
|
|
@ -83,140 +83,12 @@ class Net():
|
|||
def get_network(self):
|
||||
return self.net
|
||||
|
||||
"""
|
||||
Sequential(
|
||||
(0): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3))
|
||||
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(2): ReLU()
|
||||
(3): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)
|
||||
)
|
||||
Sequential output shape: torch.Size([1, 64, 64, 64])
|
||||
Sequential(
|
||||
(0): Resblock(
|
||||
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(1): Resblock(
|
||||
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(2): Resblock(
|
||||
(conv1): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
)
|
||||
Sequential output shape: torch.Size([1, 64, 64, 64])
|
||||
Sequential(
|
||||
(0): Resblock(
|
||||
(conv1): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
|
||||
(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv3): Conv2d(64, 128, kernel_size=(1, 1), stride=(2, 2))
|
||||
(bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(1): Resblock(
|
||||
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(2): Resblock(
|
||||
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(3): Resblock(
|
||||
(conv1): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
)
|
||||
Sequential output shape: torch.Size([1, 128, 32, 32])
|
||||
Sequential(
|
||||
(0): Resblock(
|
||||
(conv1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
|
||||
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv3): Conv2d(128, 256, kernel_size=(1, 1), stride=(2, 2))
|
||||
(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(1): Resblock(
|
||||
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(2): Resblock(
|
||||
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(3): Resblock(
|
||||
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(4): Resblock(
|
||||
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(5): Resblock(
|
||||
(conv1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
)
|
||||
Sequential output shape: torch.Size([1, 256, 16, 16])
|
||||
Sequential(
|
||||
(0): Resblock(
|
||||
(conv1): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1))
|
||||
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv3): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2))
|
||||
(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(1): Resblock(
|
||||
(conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
(2): Resblock(
|
||||
(conv1): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
|
||||
(bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
(bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
|
||||
)
|
||||
)
|
||||
Sequential output shape: torch.Size([1, 512, 8, 8])
|
||||
AdaptiveAvgPool2d(output_size=(1, 1))
|
||||
AdaptiveAvgPool2d output shape: torch.Size([1, 512, 1, 1])
|
||||
Flatten(start_dim=1, end_dim=-1)
|
||||
Flatten output shape: torch.Size([1, 512])
|
||||
Linear(in_features=512, out_features=4, bias=True)
|
||||
Linear output shape: torch.Size([1, 4])
|
||||
"""
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
Net_new = Net()
|
||||
X = torch.rand(size=(1, 3, 256, 256))
|
||||
for layer in Net_new.get_network():
|
||||
print(layer)
|
||||
X = layer(X)
|
||||
print(layer.__class__.__name__, 'output shape:\t', X.shape)
|
||||
summary(Net_new.get_network(), input_size=(3, 256, 256))
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue