一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>PyTorch教程8.4之多分支網(wǎng)絡(luò)(GoogLeNet)

PyTorch教程8.4之多分支網(wǎng)絡(luò)(GoogLeNet)

2023-06-05 | pdf | 0.32 MB | 次下載 | 免費

資料介紹

2014 年,GoogLeNet贏得了 ImageNet 挑戰(zhàn)賽 Szegedy等人,2015 年) ,它使用的結(jié)構(gòu)結(jié)合了 NiN Lin等人,2013 年、重復塊 Simonyan 和 Zisserman,2014 年和卷積混合的優(yōu)點內(nèi)核。它也可以說是第一個在 CNN 中明確區(qū)分主干(數(shù)據(jù)攝?。?、主體(數(shù)據(jù)處理)和頭部(預測)的網(wǎng)絡(luò)。這種設(shè)計模式在深度網(wǎng)絡(luò)的設(shè)計中一直存在:由對圖像進行操作的前 2-3 個卷積給出。他們從底層圖像中提取低級特征。接下來是一卷積塊。最后,頭部將目前獲得的特征映射到手頭所需的分類、分割、檢測或跟蹤問題。

GoogLeNet 的關(guān)鍵貢獻是網(wǎng)絡(luò)主體的設(shè)計。它巧妙地解決了卷積核的選擇問題。而其他作品試圖確定哪個卷積,范圍從 1×111×11最好,它只是 連接多分支卷積。接下來我們介紹一個略微簡化的 GoogLeNet 版本:最初的設(shè)計包括許多通過中間損失函數(shù)穩(wěn)定訓練的技巧,應(yīng)用于網(wǎng)絡(luò)的多個層。由于改進的訓練算法的可用性,它們不再是必需的。

import torch
from torch import nn
from torch.nn import functional as F
from d2l import torch as d2l
from mxnet import init, np, npx
from mxnet.gluon import nn
from d2l import mxnet as d2l

npx.set_np()
import jax
from flax import linen as nn
from jax import numpy as jnp
from d2l import jax as d2l
import tensorflow as tf
from d2l import tensorflow as d2l

8.4.1. 起始塊

GoogLeNet 中的基本卷積塊稱為Inception 塊,源于電影 Inception的模因“我們需要更深入” 。

https://file.elecfans.com/web2/M00/AA/42/pYYBAGR9NamAWgv_AAGuXi_IIk8156.svg

圖 8.4.1 Inception 塊的結(jié)構(gòu)。

如圖8.4.1所示,初始塊由四個并行分支組成。前三個分支使用窗口大小為1×1,3×3, 和 5×5從不同的空間大小中提取信息。中間兩個分支還加了一個1×1輸入的卷積減少了通道的數(shù)量,降低了模型的復雜度。第四個分支使用3×3最大池化層,然后是1×1卷積層改變通道數(shù)。四個分支都使用適當?shù)奶畛涫馆斎牒洼敵鼍哂邢嗤母叨群蛯挾取?/font>最后,每個分支的輸出沿著通道維度連接起來,并構(gòu)成塊的輸出。Inception 塊的常用超參數(shù)是每層的輸出通道數(shù),即如何在不同大小的卷積之間分配容量。

class Inception(nn.Module):
  # c1--c4 are the number of output channels for each branch
  def __init__(self, c1, c2, c3, c4, **kwargs):
    super(Inception, self).__init__(**kwargs)
    # Branch 1
    self.b1_1 = nn.LazyConv2d(c1, kernel_size=1)
    # Branch 2
    self.b2_1 = nn.LazyConv2d(c2[0], kernel_size=1)
    self.b2_2 = nn.LazyConv2d(c2[1], kernel_size=3, padding=1)
    # Branch 3
    self.b3_1 = nn.LazyConv2d(c3[0], kernel_size=1)
    self.b3_2 = nn.LazyConv2d(c3[1], kernel_size=5, padding=2)
    # Branch 4
    self.b4_1 = nn.MaxPool2d(kernel_size=3, stride=1, padding=1)
    self.b4_2 = nn.LazyConv2d(c4, kernel_size=1)

  def forward(self, x):
    b1 = F.relu(self.b1_1(x))
    b2 = F.relu(self.b2_2(F.relu(self.b2_1(x))))
    b3 = F.relu(self.b3_2(F.relu(self.b3_1(x))))
    b4 = F.relu(self.b4_2(self.b4_1(x)))
    return torch.cat((b1, b2, b3, b4), dim=1)
class Inception(nn.Block):
  # c1--c4 are the number of output channels for each branch
  def __init__(self, c1, c2, c3, c4, **kwargs):
    super(Inception, self).__init__(**kwargs)
    # Branch 1
    self.b1_1 = nn.Conv2D(c1, kernel_size=1, activation='relu')
    # Branch 2
    self.b2_1 = nn.Conv2D(c2[0], kernel_size=1, activation='relu')
    self.b2_2 = nn.Conv2D(c2[1], kernel_size=3, padding=1,
               activation='relu')
    # Branch 3
    self.b3_1 = nn.Conv2D(c3[0], kernel_size=1, activation='relu')
    self.b3_2 = nn.Conv2D(c3[1], kernel_size=5, padding=2,
               activation='relu')
    # Branch 4
    self.b4_1 = nn.MaxPool2D(pool_size=3, strides=1, padding=1)
    self.b4_2 = nn.Conv2D(c4, kernel_size=1, activation='relu')

  def forward(self, x):
    b1 = self.b1_1(x)
    b2 = self.b2_2(self.b2_1(x))
    b3 = self.b3_2(self.b3_1(x))
    b4 = self.b4_2(self.b4_1(x))
    return np.concatenate((b1, b2, b3, b4), axis=1)
class Inception(nn.Module):
  # `c1`--`c4` are the number of output channels for each branch
  c1: int
  c2: tuple
  c3: tuple
  c4: int

  def setup(self):
    # Branch 1
    self.b1_1 = nn.Conv(self.c1, kernel_size=(1, 1))
    # Branch 2
    self.b2_1 = nn.Conv(self.c2[0], kernel_size=(1, 1))
    self.b2_2 = nn.Conv(self.c2[1], kernel_size=(3, 3), padding='same')
    # Branch 3
    self.b3_1 = nn.Conv(self.c3[0], kernel_size=(1, 1))
    self.b3_2 = nn.Conv(self.c3[1], kernel_size=(5, 5), padding='same')
    # Branch 4
    self.b4_1 = lambda x: nn.max_pool(x, window_shape=(3, 3),
                     strides=(1, 1), padding='same')
    self.b4_2 = nn.Conv(self.c4, kernel_size=(1, 1))

  def __call__(self, x):
    b1 = nn.relu(self.b1_1(x))
    b2 = nn.relu(self.b2_2(nn.relu(self.b2_1(x))))
    b3 = nn.relu(self.b3_2(nn.relu(self.b3_1(x))))
    b4 = nn.relu(self.b4_2(self.b4_1(x)))
    return jnp.concatenate((b1, b2, b3, b4), axis=-1)
?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1DD3118電路圖紙資料
  2. 0.08 MB   |  1次下載  |  免費
  3. 2AD庫封裝庫安裝教程
  4. 0.49 MB   |  1次下載  |  免費
  5. 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
  6. 1.12 MB   |  1次下載  |  免費
  7. 4網(wǎng)絡(luò)安全從業(yè)者入門指南
  8. 2.91 MB   |  1次下載  |  免費
  9. 5DS-CS3A P00-CN-V3
  10. 618.05 KB  |  1次下載  |  免費
  11. 6海川SM5701規(guī)格書
  12. 1.48 MB  |  次下載  |  免費
  13. 7H20PR5電磁爐IGBT功率管規(guī)格書
  14. 1.68 MB   |  次下載  |  1 積分
  15. 8IP防護等級說明
  16. 0.08 MB   |  次下載  |  免費

本月

  1. 1貼片三極管上的印字與真實名稱的對照表詳細說明
  2. 0.50 MB   |  103次下載  |  1 積分
  3. 2涂鴉各WiFi模塊原理圖加PCB封裝
  4. 11.75 MB   |  89次下載  |  1 積分
  5. 3錦銳科技CA51F2 SDK開發(fā)包
  6. 24.06 MB   |  43次下載  |  1 積分
  7. 4錦銳CA51F005 SDK開發(fā)包
  8. 19.47 MB   |  19次下載  |  1 積分
  9. 5PCB的EMC設(shè)計指南
  10. 2.47 MB   |  16次下載  |  1 積分
  11. 6HC05藍牙原理圖加PCB
  12. 15.76 MB   |  13次下載  |  1 積分
  13. 7802.11_Wireless_Networks
  14. 4.17 MB   |  12次下載  |  免費
  15. 8蘋果iphone 11電路原理圖
  16. 4.98 MB   |  6次下載  |  2 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935127次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191390次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183342次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81588次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73815次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65989次下載  |  10 積分