婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 淺談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 定義的網絡結構層能否重復使用的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美日韩国产另类一区| 国产高清精品在线| 精品国精品国产| 久久99久久久欧美国产| 国产精品麻豆99久久久久久| 欧美日韩国产首页| 国产传媒日韩欧美成人| 日韩精品欧美精品| 亚洲一级二级三级| 亚洲欧美另类久久久精品2019| 日韩欧美一级精品久久| 欧美日韩国产精选| 欧美视频中文字幕| 欧洲激情一区二区| 欧美精品乱码久久久久久| 在线免费观看一区| 欧美日韩免费在线视频| 在线观看欧美精品| 欧美色图天堂网| 欧美男男青年gay1069videost | 88在线观看91蜜桃国自产| 欧美体内she精高潮| 欧美日韩亚洲另类| 亚洲精品一区二区三区福利| 久久色在线观看| 国产日韩视频一区二区三区| 久久久久久久久99精品| 中文字幕第一区二区| 国产精品久久久久久久久免费丝袜| 亚洲四区在线观看| 亚洲男人都懂的| 六月丁香婷婷久久| 成人蜜臀av电影| 欧美一区午夜视频在线观看| 久久久久久日产精品| 亚洲国产精品视频| 懂色av一区二区三区免费观看 | 国产精品久久久久久福利一牛影视| 91麻豆123| 精品女同一区二区| 夜夜嗨av一区二区三区网页| 久久国产精品99久久久久久老狼| 成人永久aaa| 日韩免费一区二区三区在线播放| 中文字幕乱码日本亚洲一区二区| 亚洲一级二级在线| 99精品视频在线播放观看| 精品成人一区二区三区| 亚洲欧美日韩国产成人精品影院 | 95精品视频在线| 精品国精品国产尤物美女| 亚洲高清在线精品| 成人app在线观看| 久久午夜电影网| 久久国产人妖系列| 欧美电影免费观看完整版| 午夜精品久久久久久久| 91福利视频在线| 亚洲一二三四在线观看| 91蝌蚪porny九色| 最新热久久免费视频| 97精品久久久久中文字幕| 国产午夜亚洲精品午夜鲁丝片| 久久99久久精品| 精品国产成人系列| 成人免费高清在线观看| 国产精品国产三级国产aⅴ原创 | 精品国产一区二区三区久久影院| 亚洲国产精品嫩草影院| 欧美精品一二三区| 国产麻豆日韩欧美久久| 国产精品久久久久久久久快鸭| 91亚洲精品久久久蜜桃| 亚洲第一久久影院| 精品少妇一区二区三区日产乱码| 国产成人亚洲精品青草天美 | 91福利在线免费观看| 亚洲午夜电影在线| 精品久久久久av影院 | 亚洲免费av网站| 91麻豆精品国产91久久久久久久久| 秋霞午夜av一区二区三区| 欧美国产激情二区三区| 欧美电影在线免费观看| 风间由美一区二区av101| 夜夜嗨av一区二区三区中文字幕| 日韩欧美国产电影| 欧美中文字幕不卡| av影院午夜一区| 国内不卡的二区三区中文字幕 | 亚洲视频 欧洲视频| 欧美一区日本一区韩国一区| 99精品欧美一区二区三区综合在线| 秋霞午夜av一区二区三区| 亚洲日本乱码在线观看| 国产欧美一区二区三区沐欲| 91精品国产一区二区| 色爱区综合激月婷婷| caoporn国产一区二区| 久久精品国产精品青草| 美女视频黄a大片欧美| 日本不卡高清视频| 天天影视色香欲综合网老头| 亚洲第一av色| 欧美一区二区三区人| 精品视频在线看| 91福利视频网站| 欧美色视频一区| 欧美午夜精品电影| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产精品一级在线| 高清在线观看日韩| 在线一区二区视频| 91精品国产欧美日韩| www久久久久| 1区2区3区国产精品| 亚洲中国最大av网站| 三级成人在线视频| 国产精品白丝jk白祙喷水网站| 懂色av一区二区三区蜜臀 | 亚洲精品免费在线播放| 一区二区三区成人| 日韩不卡在线观看日韩不卡视频| 免费成人在线播放| 91一区二区在线| 日韩欧美一区二区视频| 中文av一区二区| 日韩国产欧美在线观看| 丰满白嫩尤物一区二区| 欧美性受xxxx| 国产精品婷婷午夜在线观看| 亚洲国产精品久久久久婷婷884| 日韩福利电影在线观看| 99热99精品| 国产清纯美女被跳蛋高潮一区二区久久w | 午夜精品久久一牛影视| 国产精品77777竹菊影视小说| 日本道色综合久久| 国产精品午夜在线观看| 久久激情五月婷婷| 3atv一区二区三区| 亚洲欧美色一区| av网站一区二区三区| 久久久亚洲精品一区二区三区 | 欧美日韩高清影院| 一区二区三区日本| 99re免费视频精品全部| 国产日韩欧美激情| 另类中文字幕网| 欧美片在线播放| 亚洲一级二级三级| 欧美日韩在线观看一区二区 | 99riav一区二区三区| 国产精品污www在线观看| 蜜桃视频在线观看一区| 欧美疯狂性受xxxxx喷水图片| 亚洲亚洲人成综合网络| 91 com成人网| 国内不卡的二区三区中文字幕| 精品三级在线观看| 成人av中文字幕| 亚洲精品乱码久久久久| 欧美日韩黄色影视| 青青青伊人色综合久久| 久久婷婷久久一区二区三区| 成人av资源下载| 日韩vs国产vs欧美| 免费高清在线一区| 97久久超碰国产精品电影| 亚洲成va人在线观看| 欧美v亚洲v综合ⅴ国产v| 国内偷窥港台综合视频在线播放| 国产亚洲一区二区三区在线观看 | 久久久久国产免费免费 | 在线成人av网站| www.欧美日韩国产在线| 蜜桃精品视频在线观看| 国产精品高清亚洲| 91精品福利在线一区二区三区 | 老色鬼精品视频在线观看播放| 国产色一区二区| 波多野结衣的一区二区三区| 欧美另类videos死尸| 丁香婷婷综合色啪| 日韩激情av在线| 亚洲欧洲三级电影| 国产欧美中文在线| 精品久久久久久久久久久久包黑料| 色av一区二区| heyzo一本久久综合| 成人丝袜高跟foot| 国产成人综合亚洲网站| 国内成+人亚洲+欧美+综合在线| 日韩av电影一区| 日韩高清一级片| 久久爱www久久做| 日韩电影在线一区二区三区| 亚洲小说欧美激情另类| 偷拍亚洲欧洲综合| 奇米777欧美一区二区|