国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - pytorch構建多模型實例

pytorch構建多模型實例

2020-04-22 09:52樸素.無恙 Python

今天小編就為大家分享一篇pytorch構建多模型實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

pytorch構建雙模型

第一部分:構建"se_resnet152","DPN92()"雙模型

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
import numpy as np
from functools import partial
import torch
from torch import nn
import torch.nn.functional as F
from torch.optim import SGD,Adam
from torch.autograd import Variable
from torch.utils.data import Dataset, DataLoader
 
from torch.optim.optimizer import Optimizer
 
import torchvision
from torchvision import models
import pretrainedmodels
from pretrainedmodels.models import *
from torch import nn
from torchvision import transforms as T
import random
 
 
 
random.seed(2050)
np.random.seed(2050)
torch.manual_seed(2050)
torch.cuda.manual_seed_all(2050)
 
class FCViewer(nn.Module):
  def forward(self, x):
    return x.view(x.size(0), -1)
 
  
'''Dual Path Networks in PyTorch.'''
class Bottleneck(nn.Module):
  def __init__(self, last_planes, in_planes, out_planes, dense_depth, stride, first_layer):
    super(Bottleneck, self).__init__()
    self.out_planes = out_planes
    self.dense_depth = dense_depth
 
    self.conv1 = nn.Conv2d(last_planes, in_planes, kernel_size=1, bias=False)
    self.bn1 = nn.BatchNorm2d(in_planes)
    self.conv2 = nn.Conv2d(in_planes, in_planes, kernel_size=3, stride=stride, padding=1, groups=32, bias=False)
    self.bn2 = nn.BatchNorm2d(in_planes)
    self.conv3 = nn.Conv2d(in_planes, out_planes+dense_depth, kernel_size=1, bias=False)
    self.bn3 = nn.BatchNorm2d(out_planes+dense_depth)
 
    self.shortcut = nn.Sequential()
    if first_layer:
      self.shortcut = nn.Sequential(
        nn.Conv2d(last_planes, out_planes+dense_depth, kernel_size=1, stride=stride, bias=False),
        nn.BatchNorm2d(out_planes+dense_depth)
      )
 
  def forward(self, x):
    out = F.relu(self.bn1(self.conv1(x)))
    out = F.relu(self.bn2(self.conv2(out)))
    out = self.bn3(self.conv3(out))
    x = self.shortcut(x)
    d = self.out_planes
    out = torch.cat([x[:,:d,:,:]+out[:,:d,:,:], x[:,d:,:,:], out[:,d:,:,:]], 1)
    out = F.relu(out)
    return out
 
 
class DPN(nn.Module):
  def __init__(self, cfg):
    super(DPN, self).__init__()
    in_planes, out_planes = cfg['in_planes'], cfg['out_planes']
    num_blocks, dense_depth = cfg['num_blocks'], cfg['dense_depth']
 
    self.conv1 = nn.Conv2d(7, 64, kernel_size=3, stride=1, padding=1, bias=False)
    self.bn1 = nn.BatchNorm2d(64)
    self.last_planes = 64
    self.layer1 = self._make_layer(in_planes[0], out_planes[0], num_blocks[0], dense_depth[0], stride=1)
    self.layer2 = self._make_layer(in_planes[1], out_planes[1], num_blocks[1], dense_depth[1], stride=2)
    self.layer3 = self._make_layer(in_planes[2], out_planes[2], num_blocks[2], dense_depth[2], stride=2)
    self.layer4 = self._make_layer(in_planes[3], out_planes[3], num_blocks[3], dense_depth[3], stride=2)
    self.linear = nn.Linear(out_planes[3]+(num_blocks[3]+1)*dense_depth[3], 64)
    self.bn2 = nn.BatchNorm1d(64)
  def _make_layer(self, in_planes, out_planes, num_blocks, dense_depth, stride):
    strides = [stride] + [1]*(num_blocks-1)
    layers = []
    for i,stride in enumerate(strides):
      layers.append(Bottleneck(self.last_planes, in_planes, out_planes, dense_depth, stride, i==0))
      self.last_planes = out_planes + (i+2) * dense_depth
    return nn.Sequential(*layers)
 
  def forward(self, x):
    out = F.relu(self.bn1(self.conv1(x)))
    out = self.layer1(out)
    out = self.layer2(out)
    out = self.layer3(out)
    out = self.layer4(out)
    out = F.avg_pool2d(out, 4)
    out = out.view(out.size(0), -1)
    out = self.linear(out)
    out= F.relu(self.bn2(out))
    return out
 
 
 
def DPN26():
  cfg = {
    'in_planes': (96,192,384,768),
    'out_planes': (256,512,1024,2048),
    'num_blocks': (2,2,2,2),
    'dense_depth': (16,32,24,128)
  }
  return DPN(cfg)
 
def DPN92():
  cfg = {
    'in_planes': (96,192,384,768),
    'out_planes': (256,512,1024,2048),
    'num_blocks': (3,4,20,3),
    'dense_depth': (16,32,24,128)
  }
  return DPN(cfg)
class MultiModalNet(nn.Module):
  def __init__(self, backbone1, backbone2, drop, pretrained=True):
    super().__init__()
    if pretrained:
      img_model = pretrainedmodels.__dict__[backbone1](num_classes=1000, pretrained='imagenet') #seresnext101
    else:
      img_model = pretrainedmodels.__dict__[backbone1](num_classes=1000, pretrained=None)
    
    self.visit_model=DPN26()
    
    self.img_encoder = list(img_model.children())[:-2]
    self.img_encoder.append(nn.AdaptiveAvgPool2d(1))
    
    self.img_encoder = nn.Sequential(*self.img_encoder)
    if drop > 0:
      self.img_fc = nn.Sequential(FCViewer(),
                  nn.Dropout(drop),
                  nn.Linear(img_model.last_linear.in_features, 512),
                  nn.BatchNorm1d(512))
                  
    else:
      self.img_fc = nn.Sequential(
        FCViewer(),
        nn.BatchNorm1d(img_model.last_linear.in_features),
        nn.Linear(img_model.last_linear.in_features, 512))
    self.bn=nn.BatchNorm1d(576)
    self.cls = nn.Linear(576,9)
 
  def forward(self, x_img,x_vis):
    x_img = self.img_encoder(x_img)
    x_img = self.img_fc(x_img)
    x_vis=self.visit_model(x_vis)
    x_cat = torch.cat((x_img,x_vis),1)
    x_cat = F.relu(self.bn(x_cat))
    x_cat = self.cls(x_cat)
    return x_cat
 
test_x = Variable(torch.zeros(64, 7,26,24))
test_x1 = Variable(torch.zeros(64, 3,224,224))
model=MultiModalNet("se_resnet152","DPN92()",0.1)
out=model(test_x1,test_x)
print(model._modules.keys())
print(model)
 
print(out.shape)

第二部分構建densenet201單模型

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#encoding:utf-8
import torchvision.models as models
import torch
import pretrainedmodels
from torch import nn
from torch.autograd import Variable
#model = models.resnet18(pretrained=True)
#print(model)
#print(model._modules.keys())
#feature = torch.nn.Sequential(*list(model.children())[:-2])#模型的結構
#print(feature)
'''
class FCViewer(nn.Module):
  def forward(self, x):
    return x.view(x.size(0), -1)
class M(nn.Module):
  def __init__(self, backbone1, drop, pretrained=True):
    super(M,self).__init__()
    if pretrained:
      img_model = pretrainedmodels.__dict__[backbone1](num_classes=1000, pretrained='imagenet')
    else:
      img_model = pretrainedmodels.__dict__[backbone1](num_classes=1000, pretrained=None)
    
    self.img_encoder = list(img_model.children())[:-1]
    self.img_encoder.append(nn.AdaptiveAvgPool2d(1))
    self.img_encoder = nn.Sequential(*self.img_encoder)
 
    if drop > 0:
      self.img_fc = nn.Sequential(FCViewer(),
                  nn.Dropout(drop),
                  nn.Linear(img_model.last_linear.in_features, 236))
                  
    else:
      self.img_fc = nn.Sequential(
        FCViewer(),
        nn.Linear(img_model.last_linear.in_features, 236)
      )
 
    self.cls = nn.Linear(236,9)
 
  def forward(self, x_img):
    x_img = self.img_encoder(x_img)
    x_img = self.img_fc(x_img)
    return x_img
 
model1=M('densenet201',0,pretrained=True)
print(model1)
print(model1._modules.keys())
feature = torch.nn.Sequential(*list(model1.children())[:-2])#模型的結構
feature1 = torch.nn.Sequential(*list(model1.children())[:])
#print(feature)
#print(feature1)
test_x = Variable(torch.zeros(1, 3, 100, 100))
out=feature(test_x)
print(out.shape)
'''
'''
import torch.nn.functional as F
class LenetNet(nn.Module):
  def __init__(self):
    super(LenetNet, self).__init__()
    self.conv1 = nn.Conv2d(7, 6, 5)
    self.conv2 = nn.Conv2d(6, 16, 5)
    self.fc1  = nn.Linear(144, 120)
    self.fc2  = nn.Linear(120, 84)
    self.fc3  = nn.Linear(84, 10)
  def forward(self, x):
    x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))
    x = F.max_pool2d(F.relu(self.conv2(x)), 2)
    x = x.view(x.size()[0], -1)
    x = F.relu(self.fc1(x))
    x = F.relu(self.fc2(x))
    x = self.fc3(x)   
    return x
 
model1=LenetNet()
#print(model1)
#print(model1._modules.keys())
feature = torch.nn.Sequential(*list(model1.children())[:-3])#模型的結構
#feature1 = torch.nn.Sequential(*list(model1.children())[:])
print(feature)
#print(feature1)
test_x = Variable(torch.zeros(1, 7, 27, 24))
out=model1(test_x)
print(out.shape)
 
class FCViewer(nn.Module):
  def forward(self, x):
    return x.view(x.size(0), -1)
class M(nn.Module):
  def __init__(self):
    super(M,self).__init__()
    img_model =model1
    self.img_encoder = list(img_model.children())[:-3]
    self.img_encoder.append(nn.AdaptiveAvgPool2d(1))
    self.img_encoder = nn.Sequential(*self.img_encoder)
    self.img_fc = nn.Sequential(FCViewer(),
              nn.Linear(16, 236))
    self.cls = nn.Linear(236,9)
 
  def forward(self, x_img):
    x_img = self.img_encoder(x_img)
    x_img = self.img_fc(x_img)
    return x_img
 
model2=M()
 
test_x = Variable(torch.zeros(1, 7, 27, 24))
out=model2(test_x)
print(out.shape)
 
'''

以上這篇pytorch構建多模型實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/weixin_40123108/article/details/90670584

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲激情视频 | 国产三级 | 一本大道专区 | 婷婷精品久久久久久久久久不卡 | 日韩精品三区 | 国产精品99久久免费观看 | 黄色免费毛片 | 精品久久中文 | 99精品欧美一区二区三区综合在线 | 超碰一区二区三区 | 亚洲福利电影网 | 日韩精品中文字幕在线观看 | 黄色三级网站在线观看 | a免费视频| 日韩精品免费在线观看 | 精品久草| 日本视频一区二区 | 久久丁香 | 亚洲精品欧美精品 | 中文字幕1区2区3区 日韩免费高清视频 | 国产精品69久久久久水密桃 | 福利网在线 | 国产一区二区精品丝袜 | 国产精品久久久久久久久久久久久 | 岛国免费 | 日韩毛片| 久久精品青青大伊人av | 国产精品亚洲视频 | 午夜精品久久久久久久 | 国产一区二区三区在线免费观看 | 亚洲毛片在线 | 免费成人av网站 | 免费观看国产视频在线 | 精品视频久久久久 | 国产视频第一页 | 亚洲一区视频 | 亚洲aⅴ天堂av在线电影软件 | 国产成人精品一区二区三区福利 | a国产精品 | 国产精品久久久久久久久久ktv | 久久精品一区二区三区四区 |