首頁  >  文章  >  後端開發  >  如何在Python中使用神經網路進行分類?

如何在Python中使用神經網路進行分類?

WBOY
WBOY原創
2023-06-04 22:40:321904瀏覽

當涉及大量資料的分類時,人工處理這些資料是一件非常耗時且困難的工作。在這種情況下,使用神經網路進行分類就可以輕鬆快速地完成這項工作。 Python 是個很好的選擇,因為它有許多成熟且易於使用的神經網路函式庫。本文將介紹如何在 Python 中使用神經網路進行分類。

  1. 神經網路和分類

在講解如何使用神經網路進行分類之前,我們需要先簡單了解一下神經網路的概念。神經網路是一種計算模型,它的工作原理是基於大量輸入和輸出資料之間的關係建立模型來預測未知資料的某些屬性。這種模型在分類問題上表現得非常好,可以用於分類圖片、電子郵件、語音等不同類型的資料。

分類是神經網路的一種主要應用之一。分類問題的目的是將資料分為不同的類別。例如,在影像辨識中,神經網路可以將不同的影像分為貓、狗或車等不同的類別。在這種情況下,神經網路將影像作為輸入數據,分類作為輸出資料。分類是將資料分成不同類別的過程,通常使用監督式學習方法。

  1. 安裝神經網路庫

Python 中有許多神經網路庫可供選擇,如TensorFlow、Keras、PyTorch等。在本文中,我們將使用TensorFlow,TensorFlow是一個開源的人工智慧函式庫,由Google brain團隊開發。 TensorFlow是一種非常受歡迎的框架,容易學習和使用,並且它用於大量的機器學習專案。

如果您還沒有安裝TensorFlow,可以開啟終端機或指令提示符,輸入以下指令:

pip install tensorflow

安裝完成後,您就可以在Python程式碼中使用TensorFlow庫。

  1. 資料準備

資料準備是分類任務的關鍵步驟。數據需要被轉換成一個可以被神經網路理解的數值格式。在這裡,我們將介紹一個非常受歡迎的資料集MNIST,它由數位影像組成,每個影像代表了一個數字。 MNIST資料集可以在TensorFlow中取得,您可以直接使用下列指令來載入資料:

from tensorflow.keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

這個指令將MNIST資料集載入到變數x_train和y_train中,這些變數用來訓練神經網路。測試資料被載入到變數x_test和y_test中,用來測試神經網路。 x_train和x_test包含數位影像數據,y_train和y_test包含數位影像的標籤。

接下來,讓我們查看資料集以了解更多資訊:

print('x_train shape:', x_train.shape)

print('y_train shape :', y_train.shape)

print('x_test shape:', x_test.shape)

print('y_test shape:', y_test.shape)

#在輸出中,您將看到以下資訊:

x_train shape: (60000, 28, 28)

y_train shape: (60000,)

x_test shape: (10000 , 28, 28)

y_test shape: (10000,)

這表示訓練資料集包含60,000個數位影像,每個影像都是28像素x28像素。測試資料集有10000個影像。

  1. 神經網路模型

在準備好資料後,您需要選擇神經網路模型。我們將選擇一個非常簡單的神經網路模型,它由兩個全連接層(Dense)組成。第一個全連接層包含128個神經元,第二個全連接層包含10個神經元。程式碼如下:

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Dense, Flatten

#model = Sequential()

model.add(Flatten(input_shape=(28, 28)))

model.add(Dense(128, activation='relu'))

model.add(Dense(10, activation='softmax'))

model.compile(optimizer='adam',

loss='sparse_categorical_crossentropy',

metrics=['accuracy'])

在這裡,我們首先創建了一個Sequential模型,然後添加了一個Flatten層,該層用於將28x28的圖像資料展平為一維數組。接下來,我們加入了一個具有128個神經元的全連接層,並使用ReLU作為活化函數。最後,我們再增加另一個具有10個神經元的全連接層,並使用Softmax活化函數來獲得每個數字的機率分佈。模型使用adam優化器和稀疏分類交叉熵損失函數進行編譯。

  1. 訓練模型

我們已經準備好了資料和模型,現在我們需要使用訓練資料來訓練模型。可以使用以下指令來訓練模型:

history = model.fit(x_train, y_train, epochs=10, validation_data=(x_test, y_test))

#這段程式碼將使用10個時期(epochs)來訓練模型,同時使用測試集進行驗證。訓練完成後,我們可以使用以下程式碼來評估模型:

test_loss, test_acc = model.evaluate(x_test, y_test)

##print('Test accuracy:', test_acc)

在輸出中,您將看到測試集上的準確度指標。

  1. 預測

訓練和評估模型後,我們可以使用模型來預測未知資料。我們可以使用以下程式碼來預測一個圖片的標籤:

import numpy as np

image_index = 7777 # 從0開始

img = x_test[image_index]

img = np.expand_dims(img, axis=0)

predictions = model.predict(img)

##print(predictions)

print("Predicted label :", np.argmax(predictions))

在輸出中,我們可以看到該影像被預測為數字2。

    結論
在本文中,我們介紹如何在Python中使用神經網路進行分類。我們使用了TensorFlow來建立和訓練神經網路模型,並使用MNIST資料集來進行測試和預測。您可以將這個模型用於不同類別的影像分類任務,並根據需要調整模型中的神經網路層。使用神經網路進行分類是一種非常有效的方法,可以方便地處理大量資料分類,讓我們可以更快地進行模型開發和分類任務處理。

以上是如何在Python中使用神經網路進行分類?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn