【CNN】LeNet網絡架構

1.MLP

多層感知機MLP(Multilayer Perceptron),也是人工神經網絡(ANN,Artificial Neural Network),是一種全連接

多層感知機(Multilayer Perceptron, MLP)是一種前饋神經網絡,它由輸入層、若干隱藏層和輸出層組成。每一層都由多個神經元(或稱為節點)組成。

  1. 輸入層(Input Layer):輸入層接收外部輸入的數據,將其傳遞到下一層。每個輸入特征都對應一個神經元。

  2. 隱藏層(Hidden Layer):隱藏層是位于輸入層和輸出層之間的一層或多層神經元。每個隱藏層的神經元接收上一層傳來的輸入,并通過權重和激活函數進行計算,然后將結果傳遞到下一層。隱藏層的存在可以使多層感知機具備更強的非線性擬合能力。

  3. 輸出層(Output Layer):輸出層接收隱藏層的輸出,并產生最終的輸出結果。輸出層的神經元數目通常與任務的輸出類別數目一致。對于分類任務,輸出層通常使用softmax激活函數來計算每個類別的概率分布;對于回歸任務,輸出層可以使用線性激活函數。

多層感知機的各層之間是全連接的,也就是說,每個神經元都與上一層的每個神經元相連。每個連接都有一個與之相關的權重和一個偏置。

2.LeNet簡介

LeNet-5模型是由楊立昆(Yann LeCun)教授于1998年在論文Gradient-Based Learning Applied to Document Recognition中提出的,是一種用于手寫體字符識別的非常高效的卷積神經網絡,其實現過程如下圖所示。

原論文的經典的LeNet-5網絡結構如下:

各個結構作用:

卷積層:提取特征圖的特征,淺層的卷積提取的是一些紋路、輪廓等淺層的空間特征,對于深層的卷積,可以提取出深層次的空間特征。

池化層: 1、降低維度 2、最大池化或者平均池化,在本網絡結構中使用的是最大池化。

全連接層: 1、輸出結果 2、位置:一般位于CNN網絡的末端。 3、操作:需要將特征圖reshape成一維向量,再送入全連接層中進行分類或者回歸。

下來我們使用代碼詳解推理一下各卷積層參數的變化:

import torch
import torch.nn as nnx = torch.randn([1,1,32,32])conv1 = nn.Conv2d(in_channels=1,out_channels=6,kernel_size=5)
c1 = conv1(x)
print(c1.shape)pool = nn.MaxPool2d(2)s1 = pool(c1)
print(s1.shape)conv2 = nn.Conv2d(in_channels=6,out_channels=16,kernel_size=5)c2 = conv2(s1)
print(c2.shape)
s2 = pool(c2)
print(s2.shape)

pytorch實現最簡單的LeNet模型

import torch
import torch.nn as nn
import torch.nn.functional as Fclass LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__()self.conv1 = nn.Conv2d(1, 6, 5,stride=1)self.conv2 = nn.Conv2d(6, 16, 5,stride=1)self.fc1 = nn.Linear(16 * 5 * 5, 120)self.fc2 = nn.Linear(120,84)self.fc3 = nn.Linear(84,10)self.relu = nn.ReLU()def forward(self,x):x = self.relu(self.conv1(x))x = F.avg_pool2d(x,kernel_size=2,stride=2)s = self.relu(self.conv2(x))x = F.avg_pool2d(s,kernel_size=2,stride=2)x = torch.flatten(x,1)x = self.relu(self.fc1(x))x = self.relu(self.fc2(x))x = self.fc3(x)return xmodel = LeNet()print(model)

?3.Mnist數據集

3.1MNIST數據集簡介

  1. 該數據集包含60,000個用于訓練的示例和10,000個用于測試的示例。

  2. 數據集包含了0-9共10類手寫數字圖片,每張圖片都做了尺寸歸一化,都是28x28大小的灰度圖。

  3. MNIST數據集包含四個部分: 訓練集圖像:train-images-idx3-ubyte.gz(9.9MB,包含60000個樣本) 訓練集標簽:train-labels-idx1-ubyte.gz(29KB,包含60000個標簽) 測試集圖像:t10k-images-idx3-ubyte.gz(1.6MB,包含10000個樣本) 測試集標簽:t10k-labels-idx1-ubyte.gz(5KB,包含10000個標簽)

3.2 MNIST數據集的預處理

import torch
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
import matplotlib.pyplot as plt
import numpy as np
import structtransform = transforms.Compose([transforms.ToTensor(),transforms.Lambda(lambda x: x.view(-1,1))
])train_dataset = datasets.MNIST(root = "./dataset",train = True,transform = transform,download = True
)
test_dataset = datasets.MNIST(root = "./dataset",train = False,transform = transform,download = True
)train_loader = DataLoader(dataset = train_dataset,batch_size = 64,shuffle = True,
)
test_loader = DataLoader(dataset = test_dataset,batch_size = 64,shuffle = False,
)print(F"訓練集樣本數量:{len(train_dataset)}")
print(F"測試集樣本數量:{len(test_dataset)}")print("=" * 140)
print("圖像矩陣的十六進制表示(非0用紅色表示):")
data = train_dataset[0][0].squeeze().numpy()
rows = 28
colums = 28
counter = 0 
# for i in range(rows):
#     row = data[i * colums:(i + 1) * colums]
#     for value in row:
#         integer_part = int(value * 100)
#         integer_part = max(0,min(65535,integer_part))
#         hex_bytes = struct.pack("H", integer_part)
#         hex_string = hex_bytes.hex()
#         if hex_string == '0000':
#             print('  ', end='')
#         else:
#             print(F"\033[31m{hex_string}\033[0m", end="")
#             counter += 1
#             if counter  % 28 == 0: print()
print("=" * 140)
for images,labels in train_loader:print("Batch Image Shape:",images.shape)print("Batch Label Shape:",labels.shape)#輸出三張圖片,我想把四張圖輸出在一個圖中for i in range(4):plt.subplot(2,2,i+1)img = images[i].reshape(28,28).numpy()plt.imshow(img,cmap='gray')plt.title(F"Label:{labels[i].item()}")plt.show()print(labels[i])# img = images[0].reshape(28,28).numpy()# plt.imshow(img,cmap='gray')# plt.title(F"Label:{labels[0].item()}")# plt.axis('off')# plt.show()break

?

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

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

相關文章

VSCODE 禁用git 功能

第一步,打開設置第二步,搜 git:Enabled

Spring Boot05-熱部署

一、Spring Boot 啟動熱部署Spring Boot 啟動“熱部署(Hot Deployment)”,可以讓你在不重啟項目的情況下快速看到代碼變更的效果(特別是前后端調試階段)。1-1、什么是熱部署?熱部署是指:修改 Ja…

網站域名備案和服務器有關系嗎

域名備案的那些事兒域名備案,簡單來說,就是把你的網站信息登記到相關管理部門那里。這就好比你開個小店,得去工商局登記一下,讓人家知道你在干啥。根據我國相關規定,凡是使用大陸境內服務器提供服務的網站,…

2025華為ODB卷-推薦多樣性200分-三語言題解

?? 華為OD機試真題精選 2025B卷合集 推薦多樣性200分 問題描述 A先生正在設計一個推薦系統,需要考慮多樣性,要求從多個列表中選擇元素。系統一次性需要返回 N N N 屏數據(窗口數量),每屏展示 K K

ZeroMQ源碼深度剖析:網絡機制與性能優化實戰

目錄1 發布訂閱過濾的高效實現2 ZeroMQ的核心優勢3 常見Socket類型及應用4 異步連接實現機制5 斷線重連機制6 高水位線(HWM)深度解析7 消息丟失與錯誤處理8 消息幀(Frame)高級特性9 高效性實現原理10 無鎖消息隊列設計11 零拷貝實…

[數據庫]Neo4j圖數據庫搭建快速入門

[數據庫]圖數據庫基礎入門 概念 圖數據庫是一種使用圖結構(節點、邊和屬性)進行數據存儲和查詢的數據庫管理系統。與傳統的關系型數據庫不同,圖數據庫專注于實體之間的關系,特別適合處理高度互聯的數據。常見的圖數據庫包括&#…

本地數據庫有數據,web頁面無信息顯示,可能是pymysql的版本問題【pymysql連接本地數據庫新舊版本的區別】

pymysql連接本地數據庫新舊版本的區別新版本老版本python web下的settings文件 新版本 的pymysql 連接本地數據庫: mysql_conn pymysql.connect(hostself.conn_infos["HOST"],userself.conn_infos["USER"],passwordself.conn_infos["PAS…

【Linux-云原生-筆記】Haproxy相關

一、概念HAProxy(High Availability Proxy)是一款開源的高性能 TCP/HTTP 負載均衡器 和 反向代理 軟件,被廣泛應用于構建高可用、高并發的現代網絡架構。核心功能:負載均衡(Load Balancing)支持四層&#x…

智慧能源合同解決方案

01 能源行業合同管理核心痛點 1)長期風險沉淀與動態環境失配:合同穩定性的根本矛盾 超長周期下的風險累積:20~30年的購售電協議(PPA)、EPC合同需覆蓋技術迭代(如光伏組件衰減率)、政策轉向&am…

MeterSphere平臺,接口自動化腳本編寫常用操作

文章目錄1. 前置準備2. 項目環境設置3. 創建接口3.1 創建接口API3.2 測試接口API3.3 設置接口case4. 場景接口自動化4.1 創建自動化場景4.2 場景化操作說明4.2.1 設置腳本場景變量4.2.2 接口列表導入4.2.3 場景導入4.2.4 自定義請求4.2.5 事務控制器4.2.6 等待控制器4.2.7 循環…

C 語言介紹

C語言是由Dennis Ritchie開發的,用于創建與硬件設備(例如驅動程序,內核等)直接交互的系統應用程序。C編程被認為是其他編程語言的基礎,這就是為什么它被稱為母語。C是一種功能強大的通用編程語言。它可以用于開發操作系…

AI產品經理面試寶典第48天:產品設計與用戶體驗優化策略

1. 用戶體驗分析與產品設計邏輯 1.1 問:如何通過用戶反饋優化AI產品體驗? 答: 建立反饋閉環機制:通過應用內評分、用戶訪談、行為埋點三維度收集數據,例如某語音助手產品通過NLP分析用戶糾錯語句,發現"誤喚醒"問題占比37%; 優先級排序模型:采用Kano模型量化…

基于springboot的在線教育系統(源碼+論文)

一、開發環境 本在線教育系統主要采用以下技術棧進行開發: B/S結構:基于瀏覽器/服務器模式,便于用戶通過互聯網訪問系統,無需安裝客戶端軟件。Spring Boot框架:簡化了新Spring應用的初始搭建及開發過程,提…

Ubuntu 系統上部署禪道

在 Ubuntu 系統上部署禪道可以按照以下步驟進行,以下是基于禪道開源版的部署流程: 1. 安裝必要依賴 首先安裝禪道運行所需的環境(以 Ubuntu 20.04/22.04 為例): bash # 更新系統包 sudo apt update && sudo…

【vue-8】Vue3 Options API 生命周期函數全面解析

在 Vue.js 開發中,理解組件的生命周期是構建健壯應用程序的關鍵。雖然 Vue3 引入了 Composition API,但 Options API 仍然是許多開發者的首選,特別是對于從 Vue2 遷移的項目或更喜歡基于選項的代碼組織的團隊。本文將深入探討 Vue3 中 Option…

周志華《機器學習導論》第8章 集成學習 Ensemble Learning

目錄 8.1 個體與集成 8.2 Boosting Ada(Adaptive)Boost 8.3 Bagging 8.4 隨機森林 8.5 結合策略 8.5.1 平均法 8.5.2 投票法 8.5.3 學習法 8.6 多樣性 8.6.1 誤差-分歧分解 error-ambiguity 8.6.2 多樣性度量 8.6.3 多樣性增強 8.1 個體與集…

Embassy實戰:Rust嵌入式異步開發指南

嵌入式異步框架 Embassy 實例 以下是關于嵌入式異步框架 Embassy 的實用示例,涵蓋常見外設操作、多任務協作和硬件交互場景。示例基于STM32和Raspberry Pi Pico等平臺,使用Rust語言編寫。 GPIO 控制 use embassy_stm32::gpio::{Input, Output, Pull, Speed}; use embassy_…

ChatGPT桌面版深度解析

ChatGPT桌面版深度解析:功能、安裝與高效使用全攻略 一、核心功能全景解析 (一)全場景交互體系 全局熱鍵喚醒 支持MacOS(Option空格)與Windows(Alt空格)全局快捷鍵,實現跨應用無縫調…

RLVR的一種擴展方案--RLPR論文閱讀

論文鏈接:RLPR: EXTRAPOLATING RLVR TO GENERAL DOMAINS WITHOUT VERIFIERS 文章目錄簡介RLPRRLVR概率獎勵/Probability Reward獎勵設計標準差過濾總結簡介 可驗證獎勵的強化學習(Reinforcement Learning with Verifiable Rewards, RLVR)在提升大語言模型&#xff…

odoo歐度小程序——添加用戶

odoo歐度小程序添加登錄用戶 1. 直接在登錄用戶頁面添加用戶點擊 添加登錄用戶輸入用戶和密碼,點擊登錄驗證進入odoo頁面2. 在用戶切換頁面添加用戶點擊選擇切換用戶點擊域名彈出菜單點擊添加新用戶輸入用戶和密碼,點擊登錄驗證進入odoo頁面