如何使用 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 建立的。
對於已以“二進位制”格式向量化的資料,會訓練一個詞袋模型,它是一個線性模型。