tensorflow02——反向传播,梯度下降基础案例

#此案例最终目的:找到损失函数loss最小时,权重参数w的值(w = -1)
#尝试更改学习率lr,看看收敛效果

import tensorflow as tf

 #设定可训练的参数w的初始值为5
w=tf.Variable(tf.constant(5,dtype=tf.float32))

#学习率lr 和 迭代次数epoch(参数更新次数)
lr=0.2
epoch=40

for epoch in range(epoch):
    #用with结构实现梯度计算的过程
    with tf.GradientTape() as tape:
    #定义损失函数
        loss=tf.square(w+1) #.square是平方函数
    
    grads=tape.gradient(loss,w) #.gradient()函数用于前者对后者求导
    
    #对w变量进行更新
    w.assign_sub(lr*grads)
    
    #在tensorflow中赋值得用assign函数
    #此处assign_sub相当于自减函数 w -= lr*grads 即w=w-lr*grads
    
    print("After %s epoch , w is %f, loss is %f" % (epoch,w.numpy(),loss))
    

你可能感兴趣的:(tensorflow,numpy,python,深度学习)