简单粗暴的tensorflow-模型与层
#y_pred = a * X + b进行模型建立 import tensorflow as tf X = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) y = tf.constant([[10.0], [20.0]]) 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, input): output = self.dense(input) return output # 以下代码结构与前节类似 model = Linear() optimizer = tf.keras.optimizers.SGD(learning_rate=0.01) #模型优化器-梯度下降 for i in range(100): with tf.GradientTape() as tape: #梯度录像带 y_pred = model(X) # 调用模型 y_pred = model(X) 而不是显式写出 y_pred = a * X + b loss = tf.reduce_mean(tf.square(y_pred - y)) #定义loss函数 grads = tape.gradient(loss, model.variables) # 计算梯度,使用 model.variables 这一属性直接获得模型中的所有变量 optimizer.apply_gradients(grads_and_vars=zip(grads, model.variables)) #优化器进行梯度更新 print(model.variables)
天道酬勤 循序渐进 技压群雄