线性回归高阶 API 实现
tf.keras.layers.Dense提供一个线性计算过程,dense是指全连接层的意思
model = tf.keras.layers.Dense(units=1) # 实例化线性层
结果为<tensorflow.python.keras.layers.core.Dense at 0x215aaadc780>
import tensorflow as tf import matplotlib.pyplot as plt TRUE_W = 3.0 TRUE_b = 2.0 NUM_SAMPLES = 100 # 初始化随机数据 X = tf.random.normal(shape=[NUM_SAMPLES, 1]).numpy() noise = tf.random.normal(shape=[NUM_SAMPLES, 1]).numpy() y = X * TRUE_W + TRUE_b + noise # 添加噪声 plt.scatter(X, y)
损失函数无需再自行构造,直接使用 TensorFlow 提供的平方损失函数
tf.keras.losses.mean_squared_error
计算
tf.reduce_sum
求得全部样本的平均损失
model = tf.keras.layers.Dense(units=1) # 实例化线性层
EPOCHS = 20
LEARNING_RATE = 0.002
for epoch in range(EPOCHS): # 迭代次数
with tf.GradientTape() as tape: # 追踪梯度
y_ = model(X)
loss = tf.reduce_sum(tf.keras.losses.mean_squared_error(y, y_)) # 计算损失
grads = tape.gradient(loss, model.variables) # 计算梯度
optimizer = tf.keras.optimizers.SGD(LEARNING_RATE) # 随机梯度下降
optimizer.apply_gradients(zip(grads, model.variables)) # 更新梯度
print(f'Epoch [{epoch}/{EPOCHS}], loss [{loss}]')
plt.scatter(X, y)
plt.plot(X, model(X), c='r')
高阶函数这里不需要定义线性函数,定义损失函数以及定义优化算法