文章四《深度學習核心概念與框架入門》

文章4:深度學習核心概念與框架入門——從大腦神經元到手寫數字識別的奇幻之旅


引言:給大腦裝個"GPU加速器"?

想象一下,你的大腦如果能像智能手機的GPU一樣快速處理信息會怎樣?這正是深度學習的終極目標!今天,我們將從零開始搭建一個能"看懂"手寫數字的小型AI大腦。準備好你的Python和顯卡(別擔心,筆記本CPU也能跑通代碼!),讓我們開始這場神經網絡冒險吧!


一、深度學習與神經網絡基礎:大腦的"數字克隆"

1.1 神經元的數字化重生

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳
(想象這是一張神經元結構圖,每個突觸對應權重,樹突接收輸入,軸突輸出信號)

數學表達式:
y = σ ( w 1 x 1 + w 2 x 2 + . . . + b ) y = \sigma(w_1x_1 + w_2x_2 + ... + b) y=σ(w1?x1?+w2?x2?+...+b)

  • x i x_i xi?:輸入信號(比如像素值)
  • w i w_i wi?:突觸權重(需要學習的參數)
  • b b b:偏置項(打破對稱性的關鍵)
  • σ \sigma σ:激活函數(決定神經元"興奮程度")

1.2 前向傳播:快遞員的送貨路線

把輸入數據想象成包裹,前向傳播就是從倉庫到客戶的完整送貨路徑:

def forward(input_data):layer1 = activation(weights1 @ input_data + bias1)output = activation(weights2 @ layer1 + bias2)return output

1.3 反向傳播:快遞員的反向尋路

當包裹地址錯誤時(模型預測錯誤),我們需要通過"誤差"追蹤路線問題:

# 簡化版反向傳播偽代碼
loss = calculate_error(predicted, actual)
loss.backward()  # 自動計算所有路徑的誤差貢獻度
optimizer.step()  # 根據誤差調整所有權重

1.4 損失函數:快遞公司的KPI

  • 均方誤差(MSE):適合回歸任務,像計算快遞距離誤差
  • 交叉熵損失(Cross Entropy):分類任務的黃金標準,懲罰"過于自信的錯誤"

二、全連接網絡實戰:TensorFlow vs PyTorch

2.1 教練與球員的比喻

  • TensorFlow(Keras):像組織嚴密的足球俱樂部
  • PyTorch:更像靈活的街頭足球團隊

2.2 代碼對決:搭建相同神經網絡

TensorFlow 2.x 版本(靜態圖思維)
from tensorflow.keras import layers, modelsmodel = models.Sequential([layers.Dense(128, activation='relu', input_shape=(784,)),layers.Dense(10, activation='softmax')
])model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
PyTorch 版本(動態圖思維)
import torch.nn as nnclass Net(nn.Module):def __init__(self):super().__init__()self.fc = nn.Sequential(nn.Linear(784, 128),nn.ReLU(),nn.Linear(128, 10),nn.Softmax(dim=1))def forward(self, x):return self.fc(x.view(-1, 784))

關鍵差異對比表

特性TensorFlow(Keras)PyTorch
運行模式默認靜態圖(編譯后再運行)動態計算圖(即時執行)
數據流控制高階API抽象手動控制張量流動
GPU加速自動檢測可用設備需顯式調用.cuda()
調試友好性圖結構復雜,斷點調試困難支持逐層調試

三、激活函數與優化器:神經網絡的"興奮劑"和"教練"

3.1 激活函數的選擇藝術

import matplotlib.pyplot as plt
import numpy as npx = np.linspace(-5,5,100)
plt.figure(figsize=(12,4))# ReLU激活函數
plt.subplot(131)
plt.plot(x, np.where(x>0, x, 0))
plt.title("ReLU: 0或線性輸出")# Sigmoid激活函數
plt.subplot(132)
plt.plot(x, 1/(1+np.exp(-x)))
plt.title("Sigmoid: 擠進0-1區間")# Tanh激活函數
plt.subplot(133)
plt.plot(x, np.tanh(x))
plt.title("Tanh: 在-1到1間搖擺")
plt.show()

3.2 優化器的進化史

# 不同優化器的"訓練哲學"
optimizers = {'SGD': torch.optim.SGD(model.parameters(), lr=0.1),'Adam': torch.optim.Adam(model.parameters(), lr=0.001),'RMSprop': torch.optim.RMSprop(model.parameters(), lr=0.01)
}# 實驗建議:嘗試更換優化器,觀察訓練曲線

四、實戰案例:讓AI認數字(MNIST手寫識別)

4.1 數據集可視化:看看這些"抽象畫"

import torchvision
from matplotlib import pyplot as plt# 加載訓練數據
transform = torchvision.transforms.ToTensor()
trainset = torchvision.datasets.MNIST(root='./data', train=True, download=True, transform=transform)
images = trainset.data[:10].numpy()plt.figure(figsize=(10,2))
for i in range(10):plt.subplot(1,10,i+1)plt.imshow(images[i], cmap='gray')plt.axis('off')
plt.show()

4.2 訓練過程可視化:看模型如何"開竅"

# 訓練時實時繪制曲線
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('runs/mnist_experiment')for epoch in range(epochs):# ...訓練代碼...writer.add_scalar('Training Loss', loss.item(), epoch)writer.add_scalar('Accuracy', accuracy, epoch)# 運行 tensorboard --logdir=runs 查看實時可視化

4.3 訓練成果:模型預測表演秀

test_image = testset.data[0].unsqueeze(0).float()/255.0
prediction = model(test_image).argmax().item()plt.imshow(test_image[0][0], cmap='gray')
plt.title(f"I think this is a {prediction}!")
plt.show()

五、進階彩蛋:神經網絡的"黑箱"揭秘

5.1 權重可視化:看看神經元都學了什么

# 查看第一層卷積核(假設用了卷積層)
filters = model.conv1.weight.detach().numpy()
fig = plt.figure(figsize=(8,8))
for i in range(16):ax = fig.add_subplot(4,4,i+1)ax.imshow(filters[i][0], cmap='viridis')ax.axis('off')
plt.suptitle("第一層神經元的'視覺'偏好")

5.2 消失/爆炸梯度的偵探游戲

# 檢查梯度分布
for name, param in model.named_parameters():if param.grad is not None:print(f"Layer {name}: grad mean={param.grad.mean():.4f}, std={param.grad.std():.4f}")

結語:你已擁有改變世界的基礎能力!

現在,你不僅會用Python搭建神經網絡,還能像科學家一樣理解其運作原理。記住:

  • TensorFlow適合企業級部署PyTorch適合科研探索
  • ReLU是隱層的標配激活函數
  • Adam優化器是懶人的最佳選擇

下次當你看到數字時,不妨想一想——你的AI"學生"現在已經開始用它自己的方式理解這個世界了!

課后挑戰:嘗試修改網絡結構(添加Dropout層、調整學習率),看看模型表現如何變化?把你的"最佳實踐"發到GitHub,讓全世界的AI新手都能學習你的經驗!

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

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

相關文章

關于CSDN創作的常用模板內容

🤟致敬讀者 🟩感謝閱讀🟦笑口常開🟪生日快樂?早點睡覺 📘博主相關 🟧博主信息🟨博客首頁🟫專欄推薦🟥活動信息 文章目錄 好文評論新文推送 📃文章前言 &…

linux的信號量初識

Linux下的信號量(Semaphore)深度解析 在多線程或多進程并發編程的領域中,確保對共享資源的安全訪問和協調不同執行單元的同步至關重要。信號量(Semaphore)作為經典的同步原語之一,在 Linux 系統中扮演著核心角色。本文將深入探討…

《Android 應用開發基礎教程》——第十一章:Android 中的圖片加載與緩存(Glide 使用詳解)

目錄 第十一章:Android 中的圖片加載與緩存(Glide 使用詳解) 🔹 11.1 Glide 簡介 🔸 11.2 添加 Glide 依賴 🔸 11.3 基本用法 ? 加載網絡圖片到 ImageView: ? 加載本地資源 / 文件 / UR…

AE模板 300個故障干擾損壞字幕條標題動畫視頻轉場預設

這個AE模板提供了300個故障干擾損壞字幕條標題動畫視頻轉場預設,讓您的視頻具有炫酷的故障效果。無論是預告片、宣傳片還是其他類型的視頻,這個模板都能帶給您令人驚嘆的故障運動標題效果。該模板無需任何外置插件或腳本,只需一鍵點擊即可應用…

在 Python 中,以雙下劃線開頭和結尾的函數(如 `__str__`、`__sub__` 等)

在 Python 中,以雙下劃線開頭和結尾的函數(如 __str__、__sub__ 等)被稱為特殊方法(Special Methods)或魔術方法(Magic Methods)。它們確實是 Python 內置的,用于定義類的行為&#…

git問題記錄-如何切換歷史提交分支,且保留本地修改

問題記錄 我在本地編寫了代碼&#xff0c;突然想查看之前提交的代碼&#xff0c;并且想保留當前所在分支所做的修改 通過git stash對本地的代碼進行暫存 使用git checkout <commit-hash>切換到之前的提交記錄。 查看完之后我想切換回來&#xff0c;恢復暫存的本地代碼…

Github開通第三方平臺OAuth登錄及Java對接步驟

調研起因&#xff1a; 準備搞AI Agent海外項目&#xff0c;有相當一部分用戶群體是程序員&#xff0c;所以當然要接入Github這個全球最大的同性交友網站了&#xff0c;讓用戶使用Github賬號一鍵完成注冊或登錄。 本教程基于Web H5界面進行對接&#xff0c;同時也提供了spring-…

期刊、出版社、索引數據庫

image 1、研究人員向期刊或者會議投稿&#xff0c;交注冊費和相應的審稿費等相關費用[1]&#xff1b; 2、會議組織者和期刊聯系出版社&#xff0c;交出版費用&#xff1b; 3、出版社將論文更新到自己的數據庫中&#xff0c;然后將數據庫賣給全世界各大高校或企業&#xff1b; 4…

Transformer 模型及深度學習技術應用

近年來&#xff0c;隨著卷積神經網絡&#xff08;CNN&#xff09;等深度學習技術的飛速發展&#xff0c;人工智能迎來了第三次發展浪潮&#xff0c;AI技術在各行各業中的應用日益廣泛。 注意力機制&#xff1a;理解其在現代深度學習中的關鍵作用&#xff1b; Transformer模型…

zynq7035的arm一秒鐘最多可以支持觸發多少次中斷

一、概述 1.關于zynq7035的ARM處理器一秒能夠支持多少次中斷觸發&#xff0c;需要綜合來考慮。需要確定ARM處理器的參數&#xff0c;目前zynq7000系列&#xff0c;使用的雙核Cortex-A9處理器。其中主頻大概在500MHZ~1GHZ左右&#xff0c;不同的用戶配置的主頻可能稍微有差別。 …

數據結構與算法:圖論——最短路徑

最短路徑 先給出一些leetcode算法題&#xff0c;以后遇見了相關題目再往上增加 最短路徑的4個常用算法是Floyd、Bellman-Ford、SPFA、Dijkstra。不同應用場景下&#xff0c;應有選擇地使用它們&#xff1a; 圖的規模小&#xff0c;用Floyd。若邊的權值有負數&#xff0c;需要…

[android]MT6835 Android 關閉selinux方法

Selinux SELinux is an optional feature of the Linux kernel that provides support to enforce access control security policies to enforce MAC. It is based on the LSM framework. Working with SELinux on Android – LineageOS Android 關閉selinux MT6835 Android…

【Linux網絡編程】http協議的狀態碼,常見請求方法以及cookie-session

本文專欄&#xff1a;Linux網絡編程 目錄 一&#xff0c;狀態碼 重定向狀態碼 1&#xff0c;永久重定向&#xff08;301 Moved Permanently&#xff09; 2&#xff0c;臨時重定向&#xff08;302 Found&#xff09; 二&#xff0c;常見請求方法 1&#xff0c;HTTP常見Hea…

當神經網絡突破摩爾定律:探索大模型時代的算力新紀元

當摩爾定律熄滅后&#xff1a;AI算力革命如何重塑技術文明的底層邏輯 一、摩爾定律的黃昏&#xff1a;物理極限與經濟理性的雙重困境 當英特爾在1965年提出摩爾定律時&#xff0c;沒有人預料到這個每18-24個月將芯片晶體管數量翻倍的預言會成為現代計算文明的基石。半個世紀以…

位運算題目:尋找重復數

文章目錄 題目標題和出處難度題目描述要求示例數據范圍進階 前言解法一思路和算法代碼復雜度分析 解法二思路和算法代碼復雜度分析 解法三思路和算法代碼復雜度分析 題目 標題和出處 標題&#xff1a;尋找重復數 出處&#xff1a;287. 尋找重復數 難度 6 級 題目描述 要…

Elasticsearch:沒有 “AG” 的 RAG?

作者&#xff1a;來自 Elastic Gustavo Llermaly 了解如何利用語義搜索和 ELSER 構建一個強大且視覺上吸引人的問答體驗&#xff0c;而無需使用 LLMs。 想要獲得 Elastic 認證&#xff1f;查看下一期 Elasticsearch Engineer 培訓的時間&#xff01; Elasticsearch 擁有眾多新…

linux下安裝ollama網不好怎么辦?

文章目錄 前言kkgithub下載腳本,而不是直接運行修改腳本修改權限還是不行?前言 今天想在linux上面更新一下ollama,于是去到官網: https://ollama.com/download/linux linux下安裝ollama還是挺簡單的: curl -fsSL https://ollama.com/install.sh | sh我也是特別嗨皮地就…

相機-IMU聯合標定:相機-IMU外參標定

文章目錄 ??簡介??標定工具kalibr??標定數據錄制??相機-IMU外參標定??簡介 在 VINS(視覺慣性導航系統) 中,相機-IMU外參標定 是確保多傳感器數據時空統一的核心環節,其作用可概括為以下關鍵點: 坐標系對齊(空間同步),外參誤差會導致視覺特征點投影與IMU預積…

基于 Java 的實現前端組裝查詢語句,后端直接執行查詢方案,涵蓋前端和后端的設計思路

1. 前端設計 前端負責根據用戶輸入或交互條件,動態生成查詢參數,并通過 HTTP 請求發送到后端。 前端邏輯: 提供用戶界面(如表單、篩選器等),讓用戶選擇查詢條件。將用戶選擇的條件組裝成 JSON 格式的查詢參數。發送 HTTP 請求(如 POST 或 GET)到后端。示例: 假設用…

[STM32] 4-2 USART與串口通信(2)

文章目錄 前言4-2 USART與串口通信(2)數據發送過程雙緩沖與連續發送數據發送過程中的問題 數據接收過程TXE標志位&#xff08;發送數據寄存器空&#xff09;TC標志位&#xff08;發送完成標志位&#xff09;單個數據的發送數據的連續發送 接收過程中遇到的問題問題描述&#xf…