Python中卷積神經(jīng)網(wǎng)絡(CNN)入門教程分分享
卷積神經(jīng)網(wǎng)絡(Convolutional Neural Networks, CNN)是一類特別適用于處理圖像數(shù)據(jù)的深度學習模型。在Python中,我們可以使用流行的深度學習庫TensorFlow和Keras來創(chuàng)建和訓練一個CNN模型。在本文中,我們將介紹如何使用Keras創(chuàng)建一個簡單的CNN模型,并用它對手寫數(shù)字進行分類。
1. 準備數(shù)據(jù)集
我們將使用MNIST數(shù)據(jù)集,這是一個常用的手寫數(shù)字數(shù)據(jù)集。Keras庫提供了一個方便的函數(shù)來加載MNIST數(shù)據(jù)集。數(shù)據(jù)集包含60000個訓練樣本和10000個測試樣本,每個樣本是一個28x28的灰度圖像。
from tensorflow.keras.datasets import mnist (train_images, train_labels), (test_images, test_labels) = mnist.load_data()
接下來,我們需要對數(shù)據(jù)進行預處理。我們將圖像數(shù)據(jù)歸一化到0-1之間,并將標簽數(shù)據(jù)進行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)建一個簡單的CNN模型,包括卷積層、池化層、全連接層等。模型的結(jié)構(gòu)如下:
- 卷積層:使用32個3x3的卷積核,激活函數(shù)為ReLU;
- 池化層:使用2x2的最大池化;
- 卷積層:使用64個3x3的卷積核,激活函數(shù)為ReLU;
- 池化層:使用2x2的最大池化;
- 全連接層:包含128個神經(jīng)元,激活函數(shù)為ReLU;
- 輸出層:包含10個神經(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. 訓練CNN模型
我們將使用訓練數(shù)據(jù)集訓練CNN模型,并在測試數(shù)據(jù)集上評估模型性能。我們將使用交叉熵損失函數(shù)和Adam優(yōu)化器,訓練10個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模型進行預測
訓練好CNN模型后,我們可以用它對新的圖像數(shù)據(jù)進行預測。下面我們將隨機選擇一個測試圖像,并使用模型進行預測。
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)
上述代碼將展示一個隨機選擇的手寫數(shù)字圖像,并輸出模型預測的結(jié)果。
這就是如何在Python中使用Keras創(chuàng)建和訓練一個簡單的CNN模型進行手寫數(shù)字分類。在實際應用中,可以根據(jù)需求調(diào)整CNN模型的結(jié)構(gòu)和參數(shù)以優(yōu)化性能。
到此這篇關于Python中卷積神經(jīng)網(wǎng)絡(CNN)入門教程分分享的文章就介紹到這了,更多相關Python卷積神經(jīng)網(wǎng)絡內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Python實現(xiàn)用networkx繪制MultiDiGraph
- Python使用Networkx實現(xiàn)復雜的人物關系圖
- Python中的Networkx的基本使用
- Python?CNN卷積神經(jīng)網(wǎng)絡實戰(zhàn)教程深入講解
- python機器學習GCN圖卷積神經(jīng)網(wǎng)絡原理解析
- python人工智能tensorflow構(gòu)建卷積神經(jīng)網(wǎng)絡CNN
- Python卷積神經(jīng)網(wǎng)絡圖片分類框架詳解分析
- python如何實現(xiàn)convolution neural network卷積神經(jīng)網(wǎng)絡算法
相關文章
Python面向?qū)ο笾涌?、抽象類與多態(tài)詳解
這篇文章主要介紹了Python面向?qū)ο笾涌?、抽象類與多態(tài),結(jié)合實例形式詳細分析了Python面向?qū)ο笾薪涌凇⒊橄箢惣岸鄳B(tài)的概念、用法及相關操作注意事項,需要的朋友可以參考下2018-08-08python數(shù)學建模之Numpy?應用介紹與Pandas學習
這篇文章主要介紹了python數(shù)學建模之Numpy?應用介紹與Pandas學習,NumPy?是一個運行速度非??斓臄?shù)學庫,一個開源的的python科學計算庫,主要用于數(shù)組、矩陣計算2022-07-07Python run()函數(shù)和start()函數(shù)的比較和差別介紹
這篇文章主要介紹了Python run()函數(shù)和start()函數(shù)的比較和差別介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Pytorch實現(xiàn)圖像識別之數(shù)字識別(附詳細注釋)
這篇文章主要介紹了Pytorch實現(xiàn)圖像識別之數(shù)字識別(附詳細注釋),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05pydantic?resolve解決嵌套數(shù)據(jù)結(jié)構(gòu)生成痛點分析
這篇文章主要為大家介紹了pydantic?resolve解決嵌套數(shù)據(jù)結(jié)構(gòu)生成痛點分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04