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

快速學(xué)會一個算法,CNN

人工智能
顧名思義,它是我們的輸入圖像,可以是灰度或 RGB。每個圖像都由 0 到 255 范圍內(nèi)的像素組成。我們需要對它們進行規(guī)范化,即將范圍轉(zhuǎn)換為 0 到 1 之間,然后再將其傳遞給模型。

大家好,我是小寒。

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

卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)是一種專門用于處理數(shù)據(jù)具有網(wǎng)格結(jié)構(gòu)的深度學(xué)習(xí)模型,特別是在圖像和視頻識別領(lǐng)域取得了顯著成功。

CNN 通過引入卷積層、池化層等特殊層,能夠有效提取數(shù)據(jù)的局部特征,同時減少參數(shù)量,提升訓(xùn)練效率和模型的泛化能力。

圖片圖片

CNN 的基本結(jié)構(gòu)

CNN 主要由以下幾種層組成。

輸入層

顧名思義,它是我們的輸入圖像,可以是灰度或 RGB。每個圖像都由 0 到 255 范圍內(nèi)的像素組成。我們需要對它們進行規(guī)范化,即將范圍轉(zhuǎn)換為 0 到 1 之間,然后再將其傳遞給模型。

下面是大小為 4*4 的輸入圖像的示例,該圖像具有 3 個通道,即 RGB 和像素值。

圖片圖片

卷積層

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

卷積操作通過一個或多個可學(xué)習(xí)的濾波器(也稱為卷積核)在輸入數(shù)據(jù)上滑動,計算內(nèi)積來生成特征圖。

圖片圖片

讓我們借助一個例子來理解這一點。為簡單起見,我們將采用具有標準化像素的 2D 輸入圖像。

圖片圖片

在上圖中,我們有一個大小為 6 * 6 的輸入圖像,并在其上應(yīng)用了 3*3 的過濾器來檢測一些特征。在這個例子中,我們只應(yīng)用了一個過濾器,但實際上,會應(yīng)用許多這樣的過濾器來從圖像中提取信息。

對圖像應(yīng)用過濾器的結(jié)果是我們得到一個 4*4 的 Feature Map,它包含一些關(guān)于輸入圖像的信息。實際應(yīng)用中會產(chǎn)生許多這樣的 Feature Map。

讓我們來了解一下上圖中特征圖(Feature Map)背后的一些數(shù)學(xué)知識。

圖片圖片

如上圖所示,第一步是將濾器應(yīng)用于圖像中綠色高亮部分,然后將圖像的像素值與過濾器的值相乘(如圖中使用線條所示),然后相加得到最終值。

下一步,過濾器將移動一列,如下圖所示。這種移動到下一列或行的過程稱為步幅,在本例中,我們采用步幅 1,這意味著我們將移動一列。

圖片圖片

類似地,過濾器遍歷整個圖像,我們得到最終的特征圖。一旦我們得到特征圖,就會對其應(yīng)用激活函數(shù)來引入非線性。

池化層

池化層應(yīng)用于卷積層之后,用于減少特征圖的維度,這有助于保留輸入圖像的重要信息或特征并減少計算時間。

使用池化,可以創(chuàng)建一個較低分辨率的輸入版本,但仍然包含輸入圖像的較大或重要元素。

最常見的池化類型是最大池化(Max-Pooling)和平均池化(Avg-Pooling)。

圖片圖片

圖片圖片

全連接層

到目前為止,我們已經(jīng)完成了特征提取步驟,現(xiàn)在進入分類部分。

全連接層(如 ANN 中的)用于將輸入圖像分類為標簽。

該層將從前面的步驟(即卷積層和池化層)中提取的信息連接到輸出層,并最終將輸入分類為所需的標簽。

圖片圖片

案例代碼

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

import tensorflow as tf
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt

# 加載并預(yù)處理 MNIST 數(shù)據(jù)集
(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()

# 重新調(diào)整圖像的形狀為 (28, 28, 1) 并歸一化像素值到 [0, 1] 之間
train_images = train_images.reshape((60000, 28, 28, 1)).astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1)).astype('float32') / 255

# 構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)模型
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activatinotallow='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activatinotallow='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activatinotallow='relu'))

# 添加全連接層
model.add(layers.Flatten())
model.add(layers.Dense(64, activatinotallow='relu'))
model.add(layers.Dense(10, activatinotallow='softmax'))

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

# 訓(xùn)練模型
history = model.fit(train_images, train_labels, epochs=5, 
                    validation_data=(test_images, test_labels))

# 評估模型
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'\nTest accuracy: {test_acc}')
責(zé)任編輯:武曉燕 來源: 程序員學(xué)長
相關(guān)推薦

2024-06-06 09:44:33

2024-08-21 08:21:45

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

2024-08-22 08:24:51

算法CNN深度學(xué)習(xí)

2024-07-30 08:08:49

2024-12-19 00:16:43

2024-06-03 08:09:39

2024-08-02 10:28:13

算法NLP模型

2024-09-09 23:04:04

2024-11-11 00:00:02

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

2024-12-04 10:33:17

2024-08-29 09:18:55

2024-06-19 09:47:21

2024-08-08 12:33:55

算法

2024-07-12 08:38:05

2024-08-12 00:00:05

集成學(xué)習(xí)典型算法代碼

2024-06-20 08:52:10

2024-09-06 12:52:59

2024-08-22 08:21:10

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

2020-04-10 10:15:29

算法開源Github

2021-07-29 07:55:19

Demo 工作池
點贊
收藏

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