通过模型类的方式实现线性模型 y_pred = a * X + b,代码如下:
import tensorflow as tf
x = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]])
print(x.shape)
y = tf.constant([[10.0], [20.0]])
print(y.shape)
class Linear(tf.keras.Model):
def __init__(self):
super().__init__()
self.dense = tf.keras.layers.Dense(
units=1,
activation=None,
kernel_initializer=tf.zeros_initializer(),
bias_initializer=tf.zeros_initializer()
)
def call(self, inputs):
output = self.dense(inputs)
return output
model = Linear()
optimizer = tf.keras.optimizers.SGD(0.01)
for i in range(100):
with tf.GradientTape() as tape:
y_pred = model(x)
loss = tf.reduce_mean(tf.square(y_pred - y))
grads = tape.gradient(loss, model.variables)
optimizer.apply_gradients(zip(grads, model.variables))
print(len(model.variables))
print(model.variables)