6月13日day52打卡

神經網絡調參指南

知識點回顧:

  1. 隨機種子
  2. 內參的初始化
  3. 神經網絡調參指南
    1. 參數的分類
    2. 調參的順序
    3. 各部分參數的調整心得

作業:對于day'41的簡單cnn,看看是否可以借助調參指南進一步提高精度。

用“燒水調溫”的日常場景來打比方:

每個神經元就像一個“燒水的爐子”,你的目標是把水燒到合適的溫度(比如80℃)。

  • 輸入數據是“初始水溫”(比如水管里流進來的水是20℃);
  • 權重(w)是“爐子的初始火力”(比如你第一次開爐子時調的火力大小);
  • 激活函數(比如sigmoid)是“水溫上升的規律”——它規定了“火力大小”和“最終水溫”的關系。

為什么初始火力不能開太大?(對應sigmoid的飽和區)

sigmoid這個“水溫規律”有個特點:

  • 當“實際加熱量”(x = w·初始水溫 + 基礎加熱)比較小時(比如在20-80℃之間),水溫對火力變化非常敏感——你稍微調大一點火力,水溫就明顯上升(對應導數大,梯度大)。這時候你能快速調整火力,讓水溫接近目標(權重容易更新)。
  • 但如果初始火力(w)開得太大,第一次加熱時“實際加熱量”就會猛增(比如直接燒到95℃),這時候水溫進入“飽和區”——不管你怎么調火力(調大或調小),水溫上升的速度都幾乎不變(對應導數接近0,梯度消失)。就像水已經快燒開了,你再加大火力,水也不會更快變熱,這時候你根本沒法通過調火力來精準控制水溫(權重無法更新)。

深層網絡的“串聯燒水”問題

深層網絡就像多個爐子排著隊燒水:第一個爐子燒完的水傳給第二個,第二個傳給第三個……如果第一個爐子的火力開太大,水燒到95℃后傳給第二個爐子,第二個爐子即使調火力,水最多只能燒到98℃(變化很小);傳到第三個爐子時,水溫幾乎不再變化……最終,第一個爐子的火力(底層參數)根本沒法調整——因為后面的爐子根本“感受不到”它的變化(梯度消失)。

總結

初始火力調小(比如在“小火”檔位),就像讓水一開始在“敏感升溫區”(20-80℃)。這時候你調火力(更新權重)能明顯改變水溫(梯度大),所有串聯的爐子(深層網絡)都能有效傳遞溫度變化,最終讓整排爐子的水溫(模型輸出)精準達到目標(模型收斂)。

?

?

?簡單cnn 借助調參指南進一步提高精度

基礎CNN模型代碼

import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.utils import to_categorical# 加載數據
(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()# 數據預處理
train_images = train_images.astype('float32') / 255
test_images = test_images.astype('float32') / 255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)# 基礎CNN模型
model = models.Sequential([layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),layers.MaxPooling2D((2, 2)),layers.Conv2D(64, (3, 3), activation='relu'),layers.MaxPooling2D((2, 2)),layers.Conv2D(64, (3, 3), activation='relu'),layers.Flatten(),layers.Dense(64, activation='relu'),layers.Dense(10, activation='softmax')
])model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])history = model.fit(train_images, train_labels, epochs=10, batch_size=64,validation_data=(test_images, test_labels))

改進方法

增加模型復雜度
model = models.Sequential([layers.Conv2D(64, (3, 3), activation='relu', input_shape=(32, 32, 3), padding='same'),layers.BatchNormalization(),layers.Conv2D(64, (3, 3), activation='relu', padding='same'),layers.BatchNormalization(),layers.MaxPooling2D((2, 2)),layers.Dropout(0.25),layers.Conv2D(128, (3, 3), activation='relu', padding='same'),layers.BatchNormalization(),layers.Conv2D(128, (3, 3), activation='relu', padding='same'),layers.BatchNormalization(),layers.MaxPooling2D((2, 2)),layers.Dropout(0.25),layers.Conv2D(256, (3, 3), activation='relu', padding='same'),layers.BatchNormalization(),layers.Conv2D(256, (3, 3), activation='relu', padding='same'),layers.BatchNormalization(),layers.MaxPooling2D((2, 2)),layers.Dropout(0.25),layers.Flatten(),layers.Dense(512, activation='relu'),layers.BatchNormalization(),layers.Dropout(0.5),layers.Dense(10, activation='softmax')
])
優化器調參
from tensorflow.keras.optimizers import Adamoptimizer = Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-07)
model.compile(optimizer=optimizer,loss='categorical_crossentropy',metrics=['accuracy'])
數據增強
from tensorflow.keras.preprocessing.image import ImageDataGeneratordatagen = ImageDataGenerator(rotation_range=15,width_shift_range=0.1,height_shift_range=0.1,horizontal_flip=True,zoom_range=0.1
)
datagen.fit(train_images)history = model.fit(datagen.flow(train_images, train_labels, batch_size=64),epochs=50,validation_data=(test_images, test_labels))
早停和模型檢查點
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpointcallbacks = [EarlyStopping(monitor='val_loss', patience=10, restore_best_weights=True),ModelCheckpoint('best_model.h5', monitor='val_accuracy', save_best_only=True)
]history = model.fit(..., callbacks=callbacks, epochs=100)

?@浙大疏錦行

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

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

相關文章

穿越時空的刀劍之旅:走進VR刀劍博物館?

VR 刀劍博物館不僅僅是一個展示刀劍的場所,更是文化傳承與教育的重要基地,在弘揚刀劍文化、增強民族文化認同感以及開展教育活動等方面發揮著不可替代的重要作用。? 從文化傳承的角度來看,刀劍文化源遠流長,它承載著不同國家、不…

基于GA遺傳優化的PID控制器最優控制參數整定matlab仿真

PID(比例-積分-微分)控制器是工業控制領域中最常用的控制器之一。通過調節PID控制器的三個參數:比例(Kp)、積分(Ki)和微分(Kd),可以實現系統的穩定控制。然而…

華為OD最新機試真題-上班之路-OD統一考試(B卷)

題目描述 Jungle 生活在美麗的藍鯨城,大馬路都是方方正正,但是每天馬路的封閉情況都不一樣。地圖由以下元素組成: .—空地,可以達到 *—路障,不可達到; S—Jungle的家。 T—公司;

大模型驅動數據分析革新:美林數據智能問數解決方案破局傳統 BI 痛點

在數字化向智能化躍遷的時代浪潮中,大模型技術正驅動企業數據分析模式迎來顛覆性變革。傳統自助式BI工具主導的數據分析模式,雖在降低分析門檻、提升報表開發效率層面發揮了一定作用,但隨著數據應用場景的深化,其指標固化、響應滯…

(Note)基于Pytorch手搓RNN參考

Coding a Recurrent Neural Network (RNN) from scratch using PytorchPyTorch RNN from Scratch - Jake Taelearning pytorch 3: coding an RNN, GRU, LSTM | Kaggle

《網絡安全與防護》知識點復習

? 一、網絡安全基礎(CIA / AAA / 安全服務) 概念快速記憶CIA 三元組機密性(Confidentiality)、完整性(Integrity)、可用性(Availability)安全服務(OSI)鑒別…

編譯,多面體庫

1) barvinok是一個用于計算整數點數的庫 在參數和非參數多面體以及投影中 這樣的集合。 對于參數多面體,計數由以下任一表示 顯式函數或生成函數。 第一種是分段階躍多項式的形式。 這是Ehrhart擬多項式的推廣 以及向量分割函數。 第二個是Ehrhart級數的…

Kotlin基礎語法一

語言聲明變量與內置數據類型 var:數據可變 val: 數據不可變 內置數據類型 String 字符串 Char 單字符 Boolean true/false Int 整形 Double 小數 List 集合 Set 無重復的元素集合 Map 鍵值對的集合 Kotlin語言的類型推斷 val info : String "Hello KT&quo…

無人機避障——感知篇(在Ubuntu20.04的Orin nx上基于ZED2實現Vins Fusion)

設備:Jetson Orin nx 系統:Ubuntu 20.04 雙目視覺:zed 2 結果展示: 官網中的rosdep install --from-paths src --ignore-src -r -y如果連不上,可以用小魚rosdepc進行替換: 安裝標定工具: 1、…

從零構建端到端AI天氣預測系統:不依賴第三方API的實踐指南

引言:自主可控的AI氣象解決方案 在當今數據隱私和系統自主性日益重要的背景下,本文將詳細介紹如何完全不依賴任何第三方API,從數據采集到模型部署,構建一個完整的本地化AI天氣預測系統。這個方案特別適合對數據主權有要求的企業或…

扣子數據庫實戰案例:搭建AI登記助手

《扣子開發AI Agent智能體應用(人工智能技術叢書)》(宋立桓,王東健,陳銘毅,程東升)【摘要 書評 試讀】- 京東圖書 在當今的數字化生活場景中,無論是拜訪公司還是進入小區,登記信息似乎已經成為…

STA(Station)模式與AP(Access Point)模式

以下是STA(Station)模式與AP(Access Point)模式的核心區別對比表,綜合各搜索結果的關鍵信息整理: 對比維度?STA模式??AP模式?角色定位?無線終端(客戶端)無線接入點&#xff08…

【prometheus+Grafana篇】基于Prometheus+Grafana實現postgreSQL數據庫的監控與可視化

💫《博主主頁》: 🔎 CSDN主頁__奈斯DB 🔎 IF Club社區主頁__奈斯、 🔥《擅長領域》:擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控;并對SQLserver、N…

什么是探索式測試,應該怎么做?

探索式測試(Exploratory Testing)是一種強調“測試設計與執行同步進行”的軟件測試方法,它將測試人員的知識、經驗、直覺與系統探索相結合,在動態執行中靈活設計用例并發現缺陷。與傳統的基于文檔的測試(如預先設計好詳…

使用 ollama 在 mac 本地部署一個 qwen3:8b 模型

前言 ollama 就是一個運行大模型的框架。要運行大模型,還需要大模型本身。 下載安裝 ollama 從 ollama 官網 下載mac 版本的 ollama。 啟動 ollama 安裝好選擇啟動即可,如果沒有選擇啟動,可以使用命令啟動。 ollama serve使用 ollama 運…

13.18 Ollama+LLaMA3企業級部署實戰:6步打造私有化大模型高效引擎

Ollama+LLaMA3企業級部署實戰:6步打造私有化大模型高效引擎 # LanguageMentor 技術方案:大模型選型與 Ollama 私有化部署 **關鍵詞**:Ollama 部署實踐, LLaMA 3 微調, 本地化模型管理, 大模型選型策略, 私有化 Agent 架構 ---## 1. 技術選型背后的深度思考 ### 1.1 為…

經濟系統的「資源死鎖」與「架構重構」:從通縮陷阱到可持續模型設計

經濟系統的「資源死鎖」與「架構重構」:從通縮陷阱到可持續模型設計 關鍵詞:貨幣泄漏 財富分配算法 預期管理 反脆弱架構 一、系統故障診斷:當經濟陷入「資源死鎖」 1.1 內存泄漏式資源浪費 低效投資冗余:重復性建設如同未釋放的內存指針,持續占用資源卻無實際產出(m…

脫離 Kubernetes,基于原生 Spring Cloud + 云 API 的輕量級自管理微服務平臺架構設計

在微服務架構日趨成熟的今天,Kubernetes(K8s)已成為事實上的容器編排標準。然而,對于中小團隊或資源受限的企業來說,K8s 的引入成本、運維復雜度與學習曲線并不總是值得。 作為替代方案,基于 Spring Cloud…

【iSAQB軟件架構】復雜系統架構描述的推薦實踐

概述 無論架構是明確形成還是隱性形成,如果沒有被記錄下來,其作用都是有限的。只有經過適當記錄的架構才能持續地被交流、討論和進一步發展。 軟件架構不僅要與其他架構師討論。軟件架構的所有方面都要向不同利益代表(利益相關者&#xff0…

python中的面向對象:繼承、封裝、多態

# 導入 ABC 是指的引入抽象父類(Abstract Base Class - 本質是抽象方法裝飾器) from abc import ABC, abstractmethodclass Food(object):# 構造方法def __init__(self, name):self.name name# Food子類 class Bone(Food):def __init__(self):super()._…