如何使用 Python 和 TensorFlow 訓練基於 Stack Overflow 問題資料集的模型?


TensorFlow 是 Google 提供的一個機器學習框架。它是一個開源框架,與 Python 結合使用以實現演算法、深度學習應用程式等等。它用於研究和生產目的。

它擁有最佳化技術,有助於快速執行復雜的數學運算。

這是因為它使用了 NumPy 和多維陣列。這些多維陣列也稱為“張量”。該框架支援與深度神經網路一起工作。它具有高度可擴充套件性,並附帶許多流行的資料集。它使用 GPU 計算並自動管理資源。它附帶大量機器學習庫,並且得到良好的支援和記錄。該框架能夠執行深度神經網路模型、訓練它們以及建立預測相應資料集相關特徵的應用程式。

可以使用以下程式碼行在 Windows 上安裝“tensorflow”包:

pip install tensorflow

張量是 TensorFlow 中使用的資料結構。它有助於連線流圖中的邊。此流圖稱為“資料流圖”。張量只不過是多維陣列或列表。可以使用三個主要屬性來識別它們:

  • - 它表示張量的維度。可以理解為張量的階數或已定義的張量中的維度數。

  • 型別 - 它表示與張量元素關聯的資料型別。它可以是一維、二維或 n 維張量。

  • 形狀 - 它指的是行數和列數的組合。

我們正在使用 Google Colaboratory 來執行以下程式碼。Google Colab 或 Colaboratory 幫助在瀏覽器上執行 Python 程式碼,無需任何配置,並且可以免費訪問 GPU(圖形處理單元)。Colaboratory 是建立在 Jupyter Notebook 之上的。

示例

以下是程式碼片段:

print("A bag-of-words linear model is built to train the stackoverflow dataset")
binary_model = tf.keras.Sequential([layers.Dense(4)])
binary_model.compile(
   loss=losses.SparseCategoricalCrossentropy(from_logits=True),
   optimizer='adam',
   metrics=['accuracy'])
history = binary_model.fit(
   binary_train_ds, validation_data=binary_val_ds, epochs=10)

程式碼來源 - https://www.tensorflow.org/tutorials/load_data/text

輸出

A bag-of-words linear model is built to train the stackoverflow dataset
Epoch 1/10
188/188 [==============================] - 4s 19ms/step - loss: 1.2450 - accuracy: 0.5243 -
val_loss: 0.9285 - val_accuracy: 0.7645
Epoch 2/10
188/188 [==============================] - 1s 3ms/step - loss: 0.8304 - accuracy: 0.8172 -
val_loss: 0.7675 - val_accuracy: 0.7895
Epoch 3/10
188/188 [==============================] - 1s 3ms/step - loss: 0.6615 - accuracy: 0.8625 -
val_loss: 0.6824 - val_accuracy: 0.8050
Epoch 4/10
188/188 [==============================] - 1s 3ms/step - loss: 0.5604 - accuracy: 0.8833 -
val_loss: 0.6291 - val_accuracy: 0.8125
Epoch 5/10
188/188 [==============================] - 1s 3ms/step - loss: 0.4901 - accuracy: 0.9034 -
val_loss: 0.5923 - val_accuracy: 0.8210
Epoch 6/10
188/188 [==============================] - 1s 3ms/step - loss: 0.4370 - accuracy: 0.9178 -
val_loss: 0.5656 - val_accuracy: 0.8255
Epoch 7/10
188/188 [==============================] - 1s 3ms/step - loss: 0.3948 - accuracy: 0.9270 -
val_loss: 0.5455 - val_accuracy: 0.8290
Epoch 8/10
188/188 [==============================] - 1s 3ms/step - loss: 0.3601 - accuracy: 0.9325 -
val_loss: 0.5299 - val_accuracy: 0.8295
Epoch 9/10
188/188 [==============================] - 1s 3ms/step - loss: 0.3307 - accuracy: 0.9408 -
val_loss: 0.5177 - val_accuracy: 0.8335
Epoch 10/10
188/188 [==============================] - 1s 3ms/step - loss: 0.3054 - accuracy: 0.9472 -
val_loss: 0.5080 - val_accuracy: 0.8340

解釋

  • 神經網路是使用“Sequential” API 建立的。

  • 對於已以“二進位制”格式向量化的資料,會訓練一個詞袋模型,它是一個線性模型。

更新於: 2021年1月18日

338 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告