上篇講了隨機梯度下降法,理論聽太多容易讓人迷糊瞌睡,今天就來點程式碼練練手,直接實戰tensorflow。
PyCharm新增Tensorflow
編寫第一段tensorflow測試程式碼,看看環境是否OK,很不幸,報錯提示沒有C++庫。根據提示去微軟官網下載安裝,再次執行tensorflow 2.0 測試程式碼,可以看到正常輸出結果了!至此表示環境已經OK,那麼就趕緊開始走一個小例子吧:)
正常執行起來了
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt# 1.資料獲取mnist = tf.keras.datasets.mnist(train_x, train_y), (test_x, test_y) = mnist.load_data() # 資料拆分為訓練集和測試集# 2.模型構建model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=[28, 28]), # Flatten 層用於展開張量 tf.keras.layers.Dense(100, activation="relu"), # 訓練層1 tf.keras.layers.Dense(100, activation="relu"), # 訓練層2 tf.keras.layers.Dropout(0.5), # 防止過擬合,關閉50%的神經元 tf.keras.layers.Dense(10, activation="softmax"), # 輸出層])model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=['accuracy']) # optimizer最佳化演算法,loss損失函式, metrics評估方法# 3.模型訓練model.fit(train_x, train_y, epochs=5) # 1個epoch等於使用訓練集中的全部樣本訓練一次;# 4.模型評估val = model.evaluate(test_x, test_y) # evaluate 模型評估print(val)
二話不說直接貼上示例程式碼,這個Minst資料集是一堆手寫的阿拉伯數字,透過已經打好標籤的訓練資料來餵給機器,從而讓機器可以學習識別未曾見過的手寫阿拉伯數字。
minst資料集
從程式碼裡可以看到機器學習分為四個主要步驟,第一步獲取要訓練的資料,第二步構建模型,第三步就是用獲取的資料去訓練這個模型,第四步是用測試集資料對模型進行驗證評估。從輸出結果來看,經過五輪訓練後,損失函式快速下降,準確率迅速提高,模型快速收斂了,達到了很好的預測效果。
模型評估結果
這個示例程式碼雖然簡單,但隱藏著很多秘密,特別是模型構建的這部分程式碼,每一個引數背後都有很大的學問,有待我們將來一起去開啟未知的世界吧:)
# 2.模型構建model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=[28, 28]), # Flatten 層用於展開張量 tf.keras.layers.Dense(100, activation="relu"), # 訓練層1 tf.keras.layers.Dense(100, activation="relu"), # 訓練層2 tf.keras.layers.Dropout(0.5), # 防止過擬合,關閉50%的神經元 tf.keras.layers.Dense(10, activation="softmax"), # 輸出層])model.compile(optimizer="adam", loss="sparse_categorical_crossentropy", metrics=['accuracy']) # optimizer最佳化演算法,loss損失函式, metrics評估方法
最新評論