Python中卷積神經(jīng)網(wǎng)絡(luò)(CNN)入門教程分分享
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)是一類特別適用于處理圖像數(shù)據(jù)的深度學(xué)習(xí)模型。在Python中,我們可以使用流行的深度學(xué)習(xí)庫(kù)TensorFlow和Keras來創(chuàng)建和訓(xùn)練一個(gè)CNN模型。在本文中,我們將介紹如何使用Keras創(chuàng)建一個(gè)簡(jiǎn)單的CNN模型,并用它對(duì)手寫數(shù)字進(jìn)行分類。
1. 準(zhǔn)備數(shù)據(jù)集
我們將使用MNIST數(shù)據(jù)集,這是一個(gè)常用的手寫數(shù)字?jǐn)?shù)據(jù)集。Keras庫(kù)提供了一個(gè)方便的函數(shù)來加載MNIST數(shù)據(jù)集。數(shù)據(jù)集包含60000個(gè)訓(xùn)練樣本和10000個(gè)測(cè)試樣本,每個(gè)樣本是一個(gè)28x28的灰度圖像。
from tensorflow.keras.datasets import mnist (train_images, train_labels), (test_images, test_labels) = mnist.load_data()
接下來,我們需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。我們將圖像數(shù)據(jù)歸一化到0-1之間,并將標(biāo)簽數(shù)據(jù)進(jìn)行one-hot編碼:
train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype("float32") / 255
test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype("float32") / 255
from tensorflow.keras.utils import to_categorical
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
2. 創(chuàng)建CNN模型
我們將使用Keras創(chuàng)建一個(gè)簡(jiǎn)單的CNN模型,包括卷積層、池化層、全連接層等。模型的結(jié)構(gòu)如下:
- 卷積層:使用32個(gè)3x3的卷積核,激活函數(shù)為ReLU;
- 池化層:使用2x2的最大池化;
- 卷積層:使用64個(gè)3x3的卷積核,激活函數(shù)為ReLU;
- 池化層:使用2x2的最大池化;
- 全連接層:包含128個(gè)神經(jīng)元,激活函數(shù)為ReLU;
- 輸出層:包含10個(gè)神經(jīng)元,激活函數(shù)為softmax。
from tensorflow.keras import layers from tensorflow.keras import models model = models.Sequential() model.add(layers.Conv2D(32, (3, 3), activation="relu", input_shape=(28, 28, 1))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation="relu")) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Flatten()) model.add(layers.Dense(128, activation="relu")) model.add(layers.Dense(10, activation="softmax"))
3. 訓(xùn)練CNN模型
我們將使用訓(xùn)練數(shù)據(jù)集訓(xùn)練CNN模型,并在測(cè)試數(shù)據(jù)集上評(píng)估模型性能。我們將使用交叉熵?fù)p失函數(shù)和Adam優(yōu)化器,訓(xùn)練10個(gè)epoch。
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])
model.fit(train_images, train_labels, epochs=10, batch_size=64)
test_loss, test_acc = model.evaluate(test_images, test_labels)
print("Test accuracy: {:.2f}%".format(test_acc * 100))
4. 使用CNN模型進(jìn)行預(yù)測(cè)
訓(xùn)練好CNN模型后,我們可以用它對(duì)新的圖像數(shù)據(jù)進(jìn)行預(yù)測(cè)。下面我們將隨機(jī)選擇一個(gè)測(cè)試圖像,并使用模型進(jìn)行預(yù)測(cè)。
import numpy as np
import matplotlib.pyplot as plt
index = np.random.randint(0, len(test_images))
image = test_images[index]
plt.imshow(image.reshape(28, 28), cmap="gray")
plt.show()
predictions = model.predict(np.expand_dims(image, axis=0))
predicted_label = np.argmax(predictions)
print("Predicted label:", predicted_label)
上述代碼將展示一個(gè)隨機(jī)選擇的手寫數(shù)字圖像,并輸出模型預(yù)測(cè)的結(jié)果。
這就是如何在Python中使用Keras創(chuàng)建和訓(xùn)練一個(gè)簡(jiǎn)單的CNN模型進(jìn)行手寫數(shù)字分類。在實(shí)際應(yīng)用中,可以根據(jù)需求調(diào)整CNN模型的結(jié)構(gòu)和參數(shù)以優(yōu)化性能。
到此這篇關(guān)于Python中卷積神經(jīng)網(wǎng)絡(luò)(CNN)入門教程分分享的文章就介紹到這了,更多相關(guān)Python卷積神經(jīng)網(wǎng)絡(luò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python實(shí)現(xiàn)用networkx繪制MultiDiGraph
- Python使用Networkx實(shí)現(xiàn)復(fù)雜的人物關(guān)系圖
- Python中的Networkx的基本使用
- Python?CNN卷積神經(jīng)網(wǎng)絡(luò)實(shí)戰(zhàn)教程深入講解
- python機(jī)器學(xué)習(xí)GCN圖卷積神經(jīng)網(wǎng)絡(luò)原理解析
- python人工智能tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)CNN
- Python卷積神經(jīng)網(wǎng)絡(luò)圖片分類框架詳解分析
- python如何實(shí)現(xiàn)convolution neural network卷積神經(jīng)網(wǎng)絡(luò)算法
相關(guān)文章
Python?pandas中DataFrame.dropna()刪除缺失值用法實(shí)例
在Python的Pandas庫(kù)中DataFrame對(duì)象是處理二維表格數(shù)據(jù)的核心結(jié)構(gòu),下面這篇文章主要介紹了Python?pandas中DataFrame.dropna()刪除缺失值用法的相關(guān)資料,需要的朋友可以參考下2025-06-06
使用python進(jìn)行時(shí)間序列預(yù)測(cè)的流程
使用 Python 進(jìn)行時(shí)間序列預(yù)測(cè)是一個(gè)非常常見的任務(wù),可以應(yīng)用于各種領(lǐng)域,時(shí)間序列預(yù)測(cè)的方法有很多,包括統(tǒng)計(jì)方法、機(jī)器學(xué)習(xí)方法、以及深度學(xué)習(xí)方法,下面是一個(gè)簡(jiǎn)單的時(shí)間序列預(yù)測(cè)流程示例,需要的朋友可以參考下2024-09-09
Python學(xué)習(xí)之Django的管理界面代碼示例
這篇文章主要介紹了Python學(xué)習(xí)之Django的管理界面代碼示例,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
Python Pandas創(chuàng)建Dataframe數(shù)據(jù)框的六種方法匯總
這篇文章主要介紹了Python中的Pandas創(chuàng)建Dataframe數(shù)據(jù)框的六種方法,創(chuàng)建Dataframe主要是使用pandas中的DataFrame函數(shù),其核心就是第一個(gè)參數(shù):data,傳入原始數(shù)據(jù),因此我們可以據(jù)此給出六種創(chuàng)建Dataframe的方法,需要的朋友可以參考下2023-05-05
Python實(shí)現(xiàn)將數(shù)據(jù)庫(kù)一鍵導(dǎo)出為Excel表格的實(shí)例
下面小編就為大家?guī)硪黄狿ython實(shí)現(xiàn)將數(shù)據(jù)庫(kù)一鍵導(dǎo)出為Excel表格的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
python 偷懶技巧——使用 keyboard 錄制鍵盤事件
這篇文章主要介紹了python如何使用 keyboard 錄制鍵盤事件,幫助大家提高工作效率,感興趣的朋友可以了解下2020-09-09
python錯(cuò)誤提示:Errno?2]?No?such?file?or?directory的解決方法
我相信很多人在學(xué)習(xí)Python的時(shí)候,特別是在open文件的時(shí)候總還碰到,還報(bào)錯(cuò)IOError:[Errno?2]沒有這樣的文件或目錄:'E://aaa.txt',這篇文章主要給大家介紹了關(guān)于python錯(cuò)誤提示:Errno?2]?No?such?file?or?directory的解決方法,需要的朋友可以參考下2022-02-02
python 項(xiàng)目目錄結(jié)構(gòu)設(shè)置
JAVA有標(biāo)準(zhǔn)的maven目錄結(jié)構(gòu),golang也有建議的目錄結(jié)構(gòu),那么我想python是不是也有一個(gè)比較好的目錄結(jié)構(gòu)組織方式呢2020-02-02

