吴忠躺衫网络科技有限公司

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>PyTorch教程8.4之多分支網絡(GoogLeNet)

PyTorch教程8.4之多分支網絡(GoogLeNet)

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

資料介紹

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

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

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 塊的結構。

如圖8.4.1所示,初始塊由四個并行分支組成。前三個分支使用窗口大小為1×1,3×3, 和 5×5從不同的空間大小中提取信息中間兩個分支還加了一個1×1輸入的卷積減少了通道的數量,降低了模型的復雜度。第四個分支使用3×3最大池化層,然后是1×1卷積層改變通道數。四個分支都使用適當的填充使輸入和輸出具有相同的高度和寬度。最后,每個分支的輸出沿著通道維度連接起來,并構成塊的輸出。Inception 塊的常用超參數是每層的輸出通道數,即如何在不同大小的卷積之間分配容量。

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. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
百家乐三跳| 百家乐游戏客户端| 六合彩下注| 游戏机百家乐庄闲| 百家乐官网打劫法| 博坊娱乐| 百家乐平注常赢玩法技巧| 百家乐官网园蒙| 静乐县| 大发888游戏下载官方下载| 百家乐娱乐城反水| 线上百家乐官网平台| 优博娱乐场| 2402 房号 风水| 百家乐官网书| 米林县| 博彩评级网| 金都百家乐的玩法技巧和规则| 必博百家乐游戏| 百家乐官网博娱乐网赌百家乐官网| 百家乐官网投注法减注| 大发888虎牌官方下载| 博狗百家乐的玩法技巧和规则 | 百家乐官网娱乐城地址| 赌球论坛| 伟德百家乐官网下载| 新世纪娱乐城官方网站| 真钱的棋牌游戏| 太阳城管理| 百家乐牌壳| 好望角百家乐的玩法技巧和规则| 百家乐怎么稳赚| 新锦江百家乐官网的玩法技巧和规则 | 百家乐太阳城| 百家乐多少点数算赢| 太阳城百家乐软件| 克拉克百家乐试玩| 百家乐现金网平台排行榜| 百家乐官网光纤洗牌机如何做弊| 百家乐官网赌牌技巧| 百家乐官网智能分析软|