校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 淺談Pytorch 定義的網絡結構層能否重復使用

淺談Pytorch 定義的網絡結構層能否重復使用

熱門標簽:所得系統電梯怎樣主板設置外呼 地圖標注面積 小蘇云呼電話機器人 北京電銷外呼系統加盟 市場上的電銷機器人 儋州電話機器人 北瀚ai電銷機器人官網手機版 佛山400電話辦理 朝陽手機外呼系統

前言:最近在構建網絡的時候,有一些層參數一樣,于是就沒有定義新的層,直接重復使用了原來已經有的層,發現效果和模型大小都沒有什么變化,心中產生了疑問:定義的網絡結構層能否重復使用?因此接下來利用了一個小模型網絡實驗了一下。

一、網絡結構一:(連續使用相同的層)

1、網絡結構如下所示:

class Cnn(nn.Module):
    def __init__(self):
        super(Cnn, self).__init__()
        self.conv1 = nn.Sequential(
          nn.Conv2d(
            in_channels = 3,  #(, 64, 64, 3)
            out_channels = 16,
            kernel_size = 3,
            stride = 1,
            padding = 1
          ),   ##( , 64, 64, 16)
          nn.ReLU(),
          nn.MaxPool2d(kernel_size = 2)
        )  ##( , 32, 32, 16)
        self.conv2 = nn.Sequential(
          nn.Conv2d(16,32,3,1,1),
          nn.ReLU(),
          nn.MaxPool2d(2)
        )
        self.conv3 = nn.Sequential(
          nn.Conv2d(32,64,3,1,1),
          nn.ReLU(),
          nn.MaxPool2d(2)
        )
        self.conv4 = nn.Sequential(
          nn.Conv2d(64,64,3,1,1),
          nn.BatchNorm2d(64),
          nn.ReLU(),
        )
        self.out = nn.Linear(64*8*8, 6)
    def forward(self, x):
        x = self.conv1(x)
        x = self.conv2(x)
        x = self.conv3(x)
        x = self.conv4(x)
        x = x.view(x.size(0),-1)
        out = self.out(x)
        return out

定義了一個卷積層conv4,接下來圍繞著這個conv4做一些變化。打印一下網絡結構:

和想象中的一樣,其中

nn.BatchNorm2d # 對應上面的 module.conv4.1.*

激活層沒有參數所以直接跳過

2、改變一下forward():

連續使用兩個conv4層:

def forward(self, x):
        x = self.conv1(x)
        x = self.conv2(x)
        x = self.conv3(x)
        x = self.conv4(x)
        x = self.conv4(x)
        x = x.view(x.size(0),-1)
        out = self.out(x)
        return out

打印網絡結構:

和1.1中的結構一樣,conv4沒有生效。

二、網絡結構二:(間斷使用相同的層)

網絡結構多定義一個和conv4一樣的層conv5,同時間斷使用conv4:

    self.conv4 = nn.Sequential(
      nn.Conv2d(64,64,3,1,1),
      nn.BatchNorm2d(64),
      nn.ReLU(),
    )
    self.conv5 = nn.Sequential(
      nn.Conv2d(64,64,3,1,1),
      nn.BatchNorm2d(64),
      nn.ReLU(),
    )
    self.out = nn.Linear(64*8*8, 6)
def forward(self, x):
    x = self.conv1(x)
    x = self.conv2(x)
    x = self.conv3(x)
    x = self.conv4(x)
    x = self.conv5(x)
    x = self.conv4(x)
    x = x.view(x.size(0),-1)
    out = self.out(x)
    return out

打印網絡結構:

果不其然,新定義的conv5有效,conv4還是沒有生效。

本來以為,使用重復定義的層會像conv4.0,conv4.1,…這樣下去,看樣子是不能重復使用定義的層。

Pytorch_5.7 使用重復元素的網絡--VGG

5.7.1 VGG塊

VGG引入了Block的概念 作為模型的基礎模塊

import time
import torch
from torch import nn, optim
import pytorch_deep as pyd
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
def vgg_block(num_convs, in_channels, out_channels):
    blk = []
    for i in range(num_convs):
        if i == 0:
            blk.append(nn.Conv2d(in_channels, out_channels,kernel_size=3, padding=1))
        else:
            blk.append(nn.Conv2d(out_channels, out_channels,kernel_size=3, padding=1))
        blk.append(nn.ReLU())
    blk.append(nn.MaxPool2d(kernel_size=2, stride=2)) # 這⾥會使寬⾼減半
    return nn.Sequential(*blk)

實現VGG_11網絡

8個卷積層和3個全連接

def vgg_11(conv_arch, fc_features, fc_hidden_units=4096):
    net = nn.Sequential()
    # 卷積層部分
    for i, (num_convs, in_channels, out_channels) in enumerate(conv_arch):
        # 每經過⼀個vgg_block都會使寬⾼減半
        net.add_module("vgg_block_" + str(i+1),vgg_block(num_convs, in_channels, out_channels))
    # 全連接層部分
    net.add_module("fc", nn.Sequential(
                    pyd.FlattenLayer(),
                    nn.Linear(fc_features,fc_hidden_units),
                    nn.ReLU(),
                    nn.Dropout(0.5),
                    nn.Linear(fc_hidden_units,fc_hidden_units),
                    nn.ReLU(),
                    nn.Dropout(0.5),
                    nn.Linear(fc_hidden_units, 10)
                    ))
    return net
ratio = 8
small_conv_arch = [(1, 1, 64//ratio), (1, 64//ratio, 128//ratio),(2, 128//ratio, 256//ratio),(2, 256//ratio, 512//ratio), (2, 512//ratio,512//ratio)]
fc_features = 512 * 7 * 7 # c *
fc_hidden_units = 4096 # 任意
net = vgg_11(small_conv_arch, fc_features // ratio, fc_hidden_units //ratio)
print(net)
Sequential(
  (vgg_block_1): Sequential(
    (0): Conv2d(1, 8, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU()
    (2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  )
  (vgg_block_2): Sequential(
    (0): Conv2d(8, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU()
    (2): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  )
  (vgg_block_3): Sequential(
    (0): Conv2d(16, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU()
    (2): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (3): ReLU()
    (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  )
  (vgg_block_4): Sequential(
    (0): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU()
    (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (3): ReLU()
    (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  )
  (vgg_block_5): Sequential(
    (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU()
    (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (3): ReLU()
    (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  )
  (fc): Sequential(
    (0): FlattenLayer()
    (1): Linear(in_features=3136, out_features=512, bias=True)
    (2): ReLU()
    (3): Dropout(p=0.5)
    (4): Linear(in_features=512, out_features=512, bias=True)
    (5): ReLU()
    (6): Dropout(p=0.5)
    (7): Linear(in_features=512, out_features=10, bias=True)
  )
)

訓練數據

batch_size = 32
# 如出現“out of memory”的報錯信息,可減⼩batch_size或resize
train_iter, test_iter = pyd.load_data_fashion_mnist(batch_size,resize=224)
lr, num_epochs = 0.001, 5
optimizer = torch.optim.Adam(net.parameters(), lr=lr)
pyd.train_ch5(net, train_iter, test_iter, batch_size, optimizer,device, num_epochs)
training on  cuda
epoch 1, loss 0.5166, train acc 0.810, test acc 0.872,time 57.6 sec
epoch 2, loss 0.1557, train acc 0.887, test acc 0.902,time 57.9 sec
epoch 3, loss 0.0916, train acc 0.900, test acc 0.907,time 57.7 sec
epoch 4, loss 0.0609, train acc 0.912, test acc 0.915,time 57.6 sec
epoch 5, loss 0.0449, train acc 0.919, test acc 0.914,time 57.4 sec

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 淺談PyTorch的可重復性問題(如何使實驗結果可復現)
  • 對pytorch網絡層結構的數組化詳解
  • pytorch構建網絡模型的4種方法
  • pytorch 更改預訓練模型網絡結構的方法

標簽:酒泉 定西 金融催收 云南 寧夏 龍巖 商丘 江蘇

巨人網絡通訊聲明:本文標題《淺談Pytorch 定義的網絡結構層能否重復使用》,本文關鍵詞  淺談,Pytorch,定義,的,網絡,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺談Pytorch 定義的網絡結構層能否重復使用》相關的同類信息!
  • 本頁收集關于淺談Pytorch 定義的網絡結構層能否重復使用的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    中文欧美字幕免费| 欧美高清一级片在线观看| 亚洲在线成人精品| 欧美这里有精品| 午夜一区二区三区视频| 在线成人高清不卡| 精品一区二区三区欧美| 国产亚洲欧美在线| 在线免费一区三区| 男女男精品视频网| 亚洲欧美一区二区三区国产精品| 不卡在线观看av| 久久精品噜噜噜成人av农村| 国产清纯白嫩初高生在线观看91| av不卡一区二区三区| 亚洲成人免费在线| 久久精品亚洲乱码伦伦中文| 欧美日韩国产综合久久| 国产一区二区福利| 日本不卡不码高清免费观看| 亚洲欧美日韩在线| 亚洲国产精品ⅴa在线观看| 91国产丝袜在线播放| 久草热8精品视频在线观看| 亚洲制服丝袜av| 国产精品久久久久久久裸模| 精品久久久久久无| 欧美第一区第二区| 精品久久久久久久人人人人传媒| 欧美日韩在线免费视频| 97久久人人超碰| 欧美中文字幕亚洲一区二区va在线| 99久久er热在这里只有精品15 | 国产农村妇女毛片精品久久麻豆 | 欧美大片在线观看一区二区| 在线影视一区二区三区| 欧洲av一区二区嗯嗯嗯啊| 91美女片黄在线| 日本精品视频一区二区| 91极品视觉盛宴| 日韩欧美一级二级三级| 精品捆绑美女sm三区| 欧美精彩视频一区二区三区| 欧美激情一区三区| 亚洲香蕉伊在人在线观| 日日夜夜一区二区| 国产成人亚洲综合a∨婷婷图片| 国产精品99精品久久免费| 成人午夜在线免费| 欧美日韩国产综合一区二区| 日韩精品专区在线影院重磅| 亚洲国产精品t66y| 婷婷激情综合网| 成人激情黄色小说| 欧美电影一区二区| 国产精品黄色在线观看| 午夜影视日本亚洲欧洲精品| 国产成人免费视频网站高清观看视频| eeuss鲁片一区二区三区| 3atv一区二区三区| 亚洲精品成a人| 高清视频一区二区| 日韩三级视频在线看| 亚洲国产成人porn| 99在线精品视频| 国产精品午夜在线| 国产精品夜夜爽| 欧美一级精品在线| 亚洲18色成人| 欧美影院一区二区| 亚洲国产欧美另类丝袜| 久久综合九色综合97婷婷女人| 亚洲色图视频网站| aa级大片欧美| 一区二区三区电影在线播| 91毛片在线观看| 一区二区三区四区视频精品免费 | 国产在线精品免费| 日韩精品一区二区三区老鸭窝 | 无吗不卡中文字幕| 欧美亚日韩国产aⅴ精品中极品| 亚洲精品视频在线观看免费 | 99久久er热在这里只有精品15| 久久婷婷国产综合精品青草| 国产大片一区二区| 亚洲欧洲性图库| 欧美一区二区人人喊爽| 久久国产三级精品| 国产精品国产三级国产aⅴ入口| 成人av免费网站| 青青草原综合久久大伊人精品| 欧美一三区三区四区免费在线看| 久久激情五月激情| 欧美国产禁国产网站cc| 欧美色老头old∨ideo| 国内成人精品2018免费看| 日韩毛片视频在线看| 91精品蜜臀在线一区尤物| 国产精品 欧美精品| 亚洲图片激情小说| 久久久亚洲精华液精华液精华液| 91免费在线视频观看| 国产成人精品一区二区三区网站观看 | 国产色产综合产在线视频| 在线观看免费一区| www.爱久久.com| 国产一区二区精品久久| 亚洲一区日韩精品中文字幕| 欧美韩国日本综合| 精品福利一二区| 日韩免费视频一区| 欧美日韩成人在线| 日本韩国欧美一区| 日本精品一区二区三区高清| 床上的激情91.| 国产成a人亚洲| 大桥未久av一区二区三区中文| 国产在线一区二区| 国产一区二区三区在线观看免费 | 欧美日韩国产另类不卡| 日本精品一级二级| 欧美精品国产精品| 日韩欧美国产综合| 久久综合成人精品亚洲另类欧美 | 久久一夜天堂av一区二区三区 | 国产精品乱码人人做人人爱 | 亚洲va国产va欧美va观看| 丝袜美腿一区二区三区| 国精品**一区二区三区在线蜜桃| 图片区小说区国产精品视频| 麻豆精品在线播放| 成人午夜碰碰视频| 91精品国产综合久久精品图片 | 日韩视频不卡中文| 中文在线资源观看网站视频免费不卡| 国产精品久久福利| 男男视频亚洲欧美| 99国产精品99久久久久久| 欧美亚洲综合一区| 国产精品嫩草久久久久| 人禽交欧美网站| 99re在线视频这里只有精品| 日韩欧美www| 五月婷婷另类国产| 99国产精品久久久久久久久久 | 欧美三级电影一区| 国产精品免费视频观看| 极品少妇xxxx精品少妇偷拍| 欧美性猛交xxxxxx富婆| 日韩一区在线免费观看| 国产成人亚洲精品青草天美| 日韩一区二区三区四区五区六区 | 亚洲丝袜另类动漫二区| 丁香六月综合激情| 国产欧美综合在线| 国产老肥熟一区二区三区| 欧美xxxx老人做受| 免费看欧美女人艹b| 日韩一区二区在线免费观看| 天天做天天摸天天爽国产一区| 欧美视频在线一区| 日韩电影在线观看电影| 日韩女优av电影| 韩国成人在线视频| 国产欧美日韩综合| 成人免费看视频| 一区二区三区在线视频观看| 欧美色综合天天久久综合精品| 亚洲国产成人porn| 精品处破学生在线二十三| 国产成人啪午夜精品网站男同| 最新高清无码专区| 欧美人xxxx| 成人一区二区视频| 亚洲香肠在线观看| 久久综合色播五月| 色屁屁一区二区| 国产麻豆视频一区二区| 一区在线观看免费| 精品国产青草久久久久福利| 成人手机电影网| 蜜桃传媒麻豆第一区在线观看| 中文欧美字幕免费| 91麻豆精品国产91久久久久| jiyouzz国产精品久久| 久久精品久久99精品久久| 亚洲女人****多毛耸耸8| 日韩一区二区免费在线观看| 91九色02白丝porn| 国产黄人亚洲片| 国产一区二区三区四区五区入口| 伊人一区二区三区| 亚洲欧美在线aaa| 国产精品久久久久久久久久久免费看 | 色婷婷一区二区| 色综合久久久久| 在线观看亚洲精品视频| av在线不卡电影| 9人人澡人人爽人人精品| 成人精品视频一区|