3 月 6-7 日,在 TensorFlow 的 2019 峰會上正式推出了 2.0 Alpha 版本。
新的 TensorFlow,代碼很簡潔,搭建模型更容易,下面通過一個最簡單的模型,來看用 2.0 搭建神經(jīng)網(wǎng)絡(luò)模型的一般流程:
1. 建立一個最簡單的神經(jīng)網(wǎng)絡(luò)
首先用一個很簡單的網(wǎng)絡(luò)來了解一下 TensorFlow 2.0 的工作流程。
例如,我們有一組訓練集,x 和 y 之間滿足這個關(guān)系:
y = (2 * x) - 1
接下來要建立一個最簡單的神經(jīng)網(wǎng)絡(luò),讓它來學習出這種關(guān)系,輸入新的 x ,可以輸出相應的 y。
import tensorflow as tf
import numpy as np
from tensorflow import keras
這個模型超簡單,只有一層,這層只有一個神經(jīng)元,input shape 只是 1.
model = tf.keras.Sequential(
[keras.layers.Dense(units=1, input_shape=[1])]
)
然后編譯模型,這里指定兩個函數(shù) loss 和 optimizer。
神經(jīng)網(wǎng)絡(luò)在學習這個關(guān)系時,它先是猜一個系數(shù),比如 y=10x+10,
這樣模型的輸出和實際的結(jié)果就會有一個差距,loss 就是來表示這個差距。
然后神經(jīng)網(wǎng)絡(luò)就用 optimizer 來根據(jù)這個 loss 進行下一步的猜測,它的目標就是讓 loss 越來越小,比如這時變成了 y=5x+5。
就這樣一點點讓 loss 變小,來得到不錯的模型。
model.compile(optimizer='sgd',
loss='mean_squared_error')
接下來是數(shù)據(jù),我們用一個很小的例子,x 和 y 之間符合 y = (2 * x) - 1 關(guān)系。
xs = np.array([-1.0, 0.0, 1.0, 2.0, 3.0, 4.0], dtype=float)
ys = np.array([-3.0, -1.0, 1.0, 3.0, 5.0, 7.0], dtype=float)
訓練模型,
這里最簡單的方式是用 model.fit,在這一步中模型會用上面提到的過程,開始學習 x 和 y 之間的關(guān)系。
先猜測一組系數(shù),
衡量一下模型的表現(xiàn),
用 optimizer 進行下一組猜測,
執(zhí)行指定的 epoch 次后,得到最后的模型。
model.fit(xs, ys, epochs=500)
模型訓練好后,可以用 model.predict 來預測新的數(shù)據(jù)。
print(model.predict([10.0]))
學習資料:
Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning
https://www.coursera.org/learn/introduction-tensorflow/home/welcome
大家好!
我是 不會停的蝸牛 Alice,
喜歡人工智能,沒事兒寫寫機器學習干貨,
歡迎關(guān)注我!