自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

快速學(xué)會一個算法,卷積神經(jīng)網(wǎng)絡(luò)

人工智能
卷積核是一個小的矩陣(如 或 ),它在輸入數(shù)據(jù)上滑動,通過矩陣乘法得到局部區(qū)域的特征。卷積核的參數(shù)是可學(xué)習(xí)的,每個卷積核的參數(shù)在滑動過程中共享,避免了處理全局連接的高計算成本。

大家好,我是小寒

今天給大家介紹一個強大的算法模型,卷積神經(jīng)網(wǎng)絡(luò)

卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種專門用于處理圖像、視頻等具有網(wǎng)格結(jié)構(gòu)數(shù)據(jù)的深度學(xué)習(xí)模型。

CNN 通過局部連接和參數(shù)共享的方式,大幅減少了模型的計算量,能有效提取數(shù)據(jù)的局部和全局特征,被廣泛應(yīng)用于計算機視覺領(lǐng)域,如圖像分類、物體檢測、圖像分割等。

圖片圖片

卷積神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)

卷積神經(jīng)網(wǎng)絡(luò)的主要包括卷積層、池化層和全連接層。每一層在 CNN 中承擔(dān)不同的功能,共同作用以提取和處理數(shù)據(jù)特征。

卷積層

卷積層是 CNN 的核心層,它通過卷積操作提取輸入數(shù)據(jù)的局部特征。

卷積操作使用卷積核(或濾波器),逐步在輸入圖像的局部區(qū)域上滑動,通過計算內(nèi)積生成特征圖。

圖片圖片

  • 卷積核
    卷積核是一個小的矩陣(如 ),它在輸入數(shù)據(jù)上滑動,通過矩陣乘法得到局部區(qū)域的特征。
    卷積核的參數(shù)是可學(xué)習(xí)的,每個卷積核的參數(shù)在滑動過程中共享,避免了處理全局連接的高計算成本。
  • 步幅(Stride)
    步幅決定卷積核在輸入上滑動的步長,步幅越大,輸出尺寸越小。

圖片圖片

  • 填充(Padding)
    填充是指在輸入的邊緣填充零值(或其他值),防止卷積核在邊緣區(qū)域丟失信息。
    常見填充方式包括“valid”(不填充)和“same”(填充使輸出與輸入尺寸相同)。

圖片圖片

卷積層的作用

  • 保留局部空間關(guān)系,提取特征,如邊緣、紋理等。
  • 降低計算復(fù)雜度,通過共享權(quán)重減少參數(shù)數(shù)量。

激活函數(shù)

每個卷積層后的輸出會通過激活函數(shù)進行非線性變換,使網(wǎng)絡(luò)能夠?qū)W習(xí)復(fù)雜的非線性映射。

CNN 中常用的激活函數(shù)包括 ReLU、Leaky ReLU 和 Tanh 等。

ReLU 是卷積神經(jīng)網(wǎng)絡(luò)中最常用的激活函數(shù),對正數(shù)直接輸出,對負數(shù)輸出零,有效緩解了梯度消失問題。

圖片圖片

池化層

池化層用于對卷積層的輸出進行下采樣,以減少特征圖的尺寸,控制模型復(fù)雜度,避免過擬合。

池化層通常應(yīng)用在卷積層之后,常見的池化操作包括最大池化和平均池化。

圖片圖片

  • 最大池化(Max Pooling)
    取池化窗口中的最大值,常用于提取顯著特征。
  • 平均池化(Average Pooling)
    取池化窗口中的平均值,多用于平滑特征。

全連接層

全連接層通常位于 CNN 的最后幾層,所有的神經(jīng)元都與上一層的所有輸出相連,用于將提取的特征轉(zhuǎn)換為最終的輸出。

圖片圖片

卷積神經(jīng)網(wǎng)絡(luò)的工作流程

CNN 的輸入通常是圖像等二維或三維數(shù)據(jù),它通過卷積層逐層提取特征,池化層下采樣,最終全連接層輸出分類或回歸結(jié)果。

以下是一個典型的 CNN 工作流程

  1. 輸入層,輸入圖像,例如尺寸為 32*32*3(高、寬、通道數(shù))。
  2. 卷積層,使用多個卷積核提取特征,得到特征圖。
  3. 激活函數(shù),通過 ReLU 等激活函數(shù)引入非線性。
  4. 池化層,對特征圖進行下采樣,減少數(shù)據(jù)尺寸。
  5. 多層卷積和池化,通過疊加多個卷積層和池化層逐步提取更深層的特征。
  6. 全連接層,將提取的高層特征映射為輸出,例如多類別的概率分布。

卷積神經(jīng)網(wǎng)絡(luò)的優(yōu)勢

  • 參數(shù)共享
    卷積核參數(shù)共享,使得網(wǎng)絡(luò)在不同位置提取相似特征,大大減少參數(shù)數(shù)量,降低計算成本。
  • 特征層次化
    通過多層卷積,逐步構(gòu)建特征層次,從簡單的邊緣到復(fù)雜的形狀,再到高層語義,CNN 能夠?qū)W習(xí)到不同層次的特征。
  • 平移不變性
    卷積和池化操作使得 CNN 對物體在圖像中位置的輕微變化具有一定的魯棒性。

案例分享

下面是一個使用卷積神經(jīng)網(wǎng)絡(luò)對經(jīng)典的 MNIST 數(shù)據(jù)集進行手寫數(shù)字識別的示例代碼。

import tensorflow as tf
from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from tensorflow.keras.utils import to_categorical
import numpy as np
import matplotlib.pyplot as plt

# 加載 MNIST 數(shù)據(jù)集
(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = x_train.reshape(-1, 28, 28, 1).astype('float32') / 255.0
x_test = x_test.reshape(-1, 28, 28, 1).astype('float32') / 255.0

y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# 構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)模型
model = Sequential()

# 第一層卷積層 + 激活層 + 池化層
model.add(Conv2D(32, kernel_size=(3, 3), activatinotallow='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))

# 第二層卷積層 + 激活層 + 池化層
model.add(Conv2D(64, kernel_size=(3, 3), activatinotallow='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

# 將卷積層的輸出展平
model.add(Flatten())

# 全連接層 + 激活層
model.add(Dense(128, activatinotallow='relu'))

# 輸出層(Softmax 生成 10 個類別的概率)
model.add(Dense(10, activatinotallow='softmax'))

# 編譯模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

# 訓(xùn)練模型
model.fit(x_train, y_train, batch_size=128, epochs=10, validation_split=0.2)

# 評估模型
test_loss, test_accuracy = model.evaluate(x_test, y_test)
print(f"Test Accuracy: {test_accuracy * 100:.2f}%")



# 隨機選擇一些測試圖像的索引
num_images = 10
random_indices = np.random.choice(x_test.shape[0], num_images, replace=False)

# 獲取這些圖像和模型的預(yù)測結(jié)果
test_images = x_test[random_indices]
true_labels = np.argmax(y_test[random_indices], axis=1)
predicted_labels = np.argmax(model.predict(test_images), axis=1)

# 繪制圖像及其預(yù)測結(jié)果
plt.figure(figsize=(12, 4))
for i in range(num_images):
    plt.subplot(2, 5, i + 1)
    plt.imshow(test_images[i].reshape(28, 28), cmap='gray')
    plt.title(f"True: {true_labels[i]}\nPred: {predicted_labels[i]}")
    plt.axis('off')
plt.show()

圖片圖片


責(zé)任編輯:武曉燕 來源: 程序員學(xué)長
相關(guān)推薦

2024-12-04 10:33:17

2024-09-24 07:28:10

2024-08-22 08:21:10

算法神經(jīng)網(wǎng)絡(luò)參數(shù)

2018-08-27 17:05:48

tensorflow神經(jīng)網(wǎng)絡(luò)圖像處理

2018-04-08 11:20:43

深度學(xué)習(xí)

2024-07-19 08:21:24

2024-06-03 08:09:39

2024-06-06 09:44:33

2024-12-19 00:16:43

2024-08-02 10:28:13

算法NLP模型

2024-08-21 08:21:45

CNN算法神經(jīng)網(wǎng)絡(luò)

2024-09-09 23:04:04

2024-09-20 07:36:12

2024-10-28 00:38:10

2024-11-15 13:20:02

2025-02-21 08:29:07

2022-06-16 10:29:33

神經(jīng)網(wǎng)絡(luò)圖像分類算法

2024-10-05 23:00:35

2018-09-17 15:12:25

人工智能神經(jīng)網(wǎng)絡(luò)編程語言

2025-02-25 14:13:31

點贊
收藏

51CTO技術(shù)棧公眾號