深度學習-卷積神經網絡-NIN

網絡結構是卷積神經網絡(CNN)發展的關鍵。其中,網絡結構的改進至關重要。本文將介紹一種具有創新意義的卷積神經網絡——NIN(Network in Network)。

LeNet、AlexNet和VGG都有一個共同的設計模式:通過一系列的卷積層與匯聚層來提取空間結構特征;然后通過全連接層對特征的表征進行處理。

AlexNet和VGG對LeNet的改進主要在于如何擴大和加深這兩個模塊。 或者,可以想象在這個過程的早期使用全連接層。然而,如果使用了全連接層,可能會完全放棄表征的空間結構。

網絡中的網絡NiN 提供了一個非常簡單的解決方案:在每個像素的通道上分別使用多層感知機

1. 網絡結構組成

NiN塊 使用了1×1的卷積層代表全連接層。

NIN的核心創新在于引入了“微網絡”(Network in Network)的概念。具體來說,每個卷積層后面都跟隨著一個1×1卷積核的微型網絡,用于對特征圖進行逐像素的特征變換,增加了網絡的非線性表達能力。這種設計使得模型能夠更深入地挖掘和利用特征信息。

與傳統的卷積神經網絡相比,NIN的結構設計更加緊湊,能夠以較少的參數實現更好的性能。其主要特點如下:

  1. 1×1卷積層的應用:通過1×1卷積核對特征圖進行逐像素的特征變換,增加模型的非線性表達能力。

  2. 全局平均池化層:在最后一層使用全局平均池化層代替全連接層,降低參數數量,減少過擬合風險,提高模型的泛化能力。

  3. 網絡深度的優化:NIN通過增加網絡的深度來提高模型的特征提取能力,同時保持了模型的簡潔性。

對比 VGG 和 NIN 以及他們的架構的不同

2. 代碼實現

代碼改編自《動手學深度學習》

import torch
from torch import nn
from d2l import torch as d2ldef nin_block(in_channels, out_channels, kernel_size, strides, padding):return nn.Sequential(nn.Conv2d(in_channels, out_channels, kernel_size, strides, padding),nn.ReLU(),nn.Conv2d(out_channels, out_channels, kernel_size=1), nn.ReLU(),nn.Conv2d(out_channels, out_channels, kernel_size=1), nn.ReLU())
net = nn.Sequential(nin_block(1, 96, kernel_size=11, strides=4, padding=0),nn.MaxPool2d(3, stride=2),nin_block(96, 256, kernel_size=5, strides=1, padding=2),nn.MaxPool2d(3, stride=2),nin_block(256, 384, kernel_size=3, strides=1, padding=1),nn.MaxPool2d(3, stride=2),nn.Dropout(0.5),# 標簽類別數是10nin_block(384, 10, kernel_size=3, strides=1, padding=1),nn.AdaptiveAvgPool2d((1, 1)),# 將四維的輸出轉成二維的輸出,其形狀為(批量大小,10)nn.Flatten())
X = torch.rand(size=(1, 1, 224, 224))
for layer in net:X = layer(X)print(layer.__class__.__name__,'output shape:\t', X.shape)輸出:
Sequential output shape:     torch.Size([1, 96, 54, 54])
MaxPool2d output shape:      torch.Size([1, 96, 26, 26])
Sequential output shape:     torch.Size([1, 256, 26, 26])
MaxPool2d output shape:      torch.Size([1, 256, 12, 12])
Sequential output shape:     torch.Size([1, 384, 12, 12])
MaxPool2d output shape:      torch.Size([1, 384, 5, 5])
Dropout output shape:        torch.Size([1, 384, 5, 5])
Sequential output shape:     torch.Size([1, 10, 5, 5])
AdaptiveAvgPool2d output shape:      torch.Size([1, 10, 1, 1])
Flatten output shape:        torch.Size([1, 10])
lr, num_epochs, batch_size = 0.1, 10, 128
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size, resize=224)
d2l.train_ch6(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())輸出:
loss 0.563, train acc 0.786, test acc 0.790
3087.6 examples/sec on cuda:0

3. NIN的影響

NIN在多個圖像分類任務中表現出了顯著的性能提升。通過在ImageNet數據集上的實驗驗證,NIN在Top-5錯誤率上達到了較低的水平,證明了其在圖像分類任務中的有效性。此外,NIN的結構設計使其適用于各種計算機視覺任務,包括目標檢測和圖像分割等。

與其他卷積神經網絡架構相比,NIN在網絡結構和性能上具有以下優勢:

  1. 更少的參數:NIN通過減少全連接層的數量,顯著降低了模型的參數數量。

  2. 更高的效率:由于參數數量的減少,NIN在訓練和推理過程中更加高效。

  3. 更好的泛化能力:全局平均池化層的使用提高了模型對新數據的適應能力。

  1. NiN 使用由一個卷積層和多個1×1卷積層組成的塊。

  2. NiN塊 可以在卷積神經網絡中使用,以允許更多的每像素非線性。

  3. NiN去除了容易造成過擬合的全連接層,將它們替換為全局平均匯聚層(即在所有位置上進行求和)。該匯聚層通道數量為所需的輸出數量(例如,Fashion-MNIST的輸出為10)。

  4. 移除全連接層可減少過擬合,同時顯著減少NiN的參數。

  5. NiN的設計影響了許多后續卷積神經網絡的設計。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/918581.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/918581.shtml
英文地址,請注明出處:http://en.pswp.cn/news/918581.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java-96 深入淺出 MySQL 索引與排序機制詳解與優化實踐 Filesort

點一下關注吧!!!非常感謝!!持續更新!!! 🚀 AI篇持續更新中!(長期更新) AI煉丹日志-31- 千呼萬喚始出來 GPT-5 發布!“快的…

MLAG雙活網絡妙招:BGP + 靜態VRRP實現智能負載均衡

引言 在現代數據中心和企業網絡架構中,高可用性和負載均衡是核心需求。MLAG(Multi-Chassis Link Aggregation)技術結合BGP和靜態VRRP的解決方案,為網絡工程師提供了一種高效實現雙活網絡負載均衡的妙招。本文將深入探討這一技術組…

如何構建PHP表單頁面及驗證相關原理(PHP基礎)

文章目錄PHP表單 - 必需字段PHP - 必需字段PHP - 顯示錯誤信息總結PHP表單 - 驗證郵件和URLPHP - 驗證名稱PHP - 驗證郵件驗證URLPHP 完整表單實例 PHP表單 - 必需字段 該章內容將介紹如何設置表單必需字段及錯誤信息 PHP - 必需字段 我們首先給出一個表的驗證規則,…

API如何集成Web搜索功能:原理、實踐與最佳選型

API如何集成Web搜索功能:原理、實踐與最佳選型 在現代智能應用開發中,模型生成結果往往需要融合最新的互聯網信息。通過集成Web搜索工具,模型可以在生成響應前主動檢索網絡,獲取實時數據。這一能力極大提升了智能系統的準確性和時…

Spring Boot項目中調用第三方接口

目錄 步驟1: 添加依賴 步驟2: 配置HTTP客戶端 配置RestTemplate 配置WebClient 步驟3: 在Service層調用接口 使用RestTemplate示例 使用WebClient示例 步驟4: 在Controller層調用Service 注意事項 總結 Spring Boot項目中調用第三方接口 在Spring Boot項目中調用第三…

關系型數據庫:原理、演進與生態全景——從理論基石到云原生的深度巡禮

目錄 一、引言:當“表”成為世界的通用語言 二、理論基石:關系模型與 ACID 三、引擎架構:一條 SQL 的奇幻漂流 四、存儲機制:頁、緩沖池與 WAL 五、并發控制:鎖、MVCC 與隔離級別 六、SQL:聲明式語言…

【軟考架構】計算機網絡中的IP地址表示和子網劃分

在計算機網絡中,IP地址用于唯一標識網絡中的設備。IP地址的表示方式有兩種:IPv4和IPv6。IPv4是當前使用最廣泛的地址格式,而IPv6是為了解決IPv4地址耗盡問題而設計的。 1. IPv4地址 IPv4地址是一個32位的數字,通常用四個十進制數表…

【后端】Spring @Resource和@Autowired的用法和區別

以下是關于 Resource 和 Autowired 兩個依賴注入注解的詳細對比說明,重點關注它們的區別和使用場景:📌 核心區別總結特性Autowired (Spring)Resource (JSR-250 標準)來源Spring 框架原生注解Java 標準 (javax.annotation)默認注入方式按類型 …

php+apache+nginx 更換域名

phpapachenginx 更換域名? 第 1 步:確認到底是誰在監聽 80/443? 第 2 步:按監聽者修改配置🔹 場景 A:Apache 直接監聽 80/443🔹 場景 B:Nginx 監聽 80/443,反向代理到 Apache? 第 3 步&#…

AI 視頻衛士:AI 無人機巡檢,適配多元河道場景的治理利器

河道治理,場景各異,難題不同。城市內河的生活垃圾、景區河道的景觀破壞、工業園區河道的工業廢料,每一種場景都對巡檢工作有著獨特的要求。AI 視頻衛士,憑借強大的 AI 技術,針對不同河道應用場景,打造專屬巡…

累加和校驗原理與FPGA實現

累加和校驗原理與FPGA實現寫在前面一、基礎原理二、舉個例子2.1 進位累加2.2 回卷累加三、FPGA實現3.1 發送端(產生校驗和)3.2 接收端(累加和校驗)3.3 仿真結果寫在后面寫在前面 在上文《奇偶校驗原理與FPGA實現》中,講…

深入解析Go設計模式:命令模式實戰

什么是命令模式? 命令模式(Command Pattern)是一種行為型設計模式,它將請求封裝為獨立對象,從而允許客戶端通過不同的請求對象進行參數化配置。該模式支持請求的排隊執行、操作記錄以及撤銷等功能。 命令模式UML類圖如下所示: 命令模式包含五個核心角色,具體說明如下: …

Pytest項目_day11(fixture、conftest)

Fixture fixture是一種類似于setup、teardown,用于測試前后進行預備、清理工作的代碼處理機制 相比于setup、teardown來說,fixture命名更靈活,局限性更少使用conftest.py配置里面可以實現數據共享,不需要import就能自動找到一些配…

DAY 43 復習日

作業: kaggle找到一個圖像數據集,用cnn網絡進行訓練并且用grad-cam做可視化 劃分數據集 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader impo…

Flink運行時的實現細節

一、Flink集群中各角色運行架構先說Flink集群中的角色吧,有三個分別是客戶端(Client)、JobManager、TaskManager。客戶端負責接收作業任務并進行解析,將解析后的二進制數據發送給JobManager;JobManager是作業調度中心,負責對所有作…

思科、華為、華三如何切換三層端口?

三層交換機融合了二層交換技術與三層轉發技術,具備強大的網絡功能。主流廠商(思科、H3C、華為)的三層交換機均支持二層端口與三層端口的相互切換,但具體命令存在差異。本文將詳細介紹三大廠商設備的端口切換方法及相關知識。一、各…

springboot的基礎要點

Spring Boot 的核心設計理念是 ??"約定優于配置"??(Convention Over Configuration),旨在簡化 Spring 應用的初始搭建和開發過程。以下是需要掌握的核心基礎要點:?一、核心機制??自動配置 (Auto-Configuration)?…

lesson36:MySQL從入門到精通:全面掌握數據庫操作與核心原理

目錄 一、引言:為什么選擇MySQL? 二、MySQL安裝與登錄配置 2.1 環境準備 2.2 登錄指令詳解 三、數據庫核心操作 3.1 數據庫生命周期管理 3.2 數據庫存儲引擎選擇 四、數據表設計與操作 4.1 表結構創建(含數據類型詳解) …

Spring源碼解析 - SpringApplication run流程-prepareContext源碼分析

prepareContext源碼分析 private void prepareContext(DefaultBootstrapContext bootstrapContext, ConfigurableApplicationContext context,ConfigurableEnvironment environment, SpringApplicationRunListeners listeners,ApplicationArguments applicationArguments, Bann…

HIS系統:醫院信息化建設的核心,采用Angular+Java技術棧,集成MySQL、Redis等技術,實現醫院全業務流程管理。

HIS系統在醫院信息化建設中扮演著核心的角色。它是一個綜合性的信息系統,旨在管理和運營醫院的各種業務,包括門診、住院、財務、物資、科研等。技術細節:前端:AngularNginx后臺:JavaSpring,SpringBoot&…