配置太复杂
机器学习
权重W和偏执B。
通过学习来修正
一次函数的例子
Y=W*X+B;
# -*- coding: UTF-8 -*-
#基础,一个一次函数,Y=W*x+B
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
#-----------【定义一个参数:Y=W*x+B】-----------
#Y=3.0X+2.0
TRUE_W=3.0
TRUE_B=2.0
xdata=tf.random.normal(shape=[100])
TRUE_Y=TRUE_W*xdata+TRUE_B
#------------【构建预测的函数模型】-------------
class Model(object):
def __init__(self):
self.w=tf.Variable(1.2)
self.b=tf.Variable(0.5)
def __call__(self, xdata):
return self.w*xdata+self.b #预测的Y
#-------------【损失函数:预测与真实的差值】--------------
def compute_loss(true_y,y):
return tf.reduce_mean(tf.square(true_y-y))
#--------------【神经网络的构建】--------------------------
def main():
model=Model()#实例化模型
for each in range(45):#45次训练
with tf.GradientTape() as tape:
loss=compute_loss(TRUE_Y,model(xdata))#计算损失:真实与预测的差值
#(差值,变量)
dw, db = tape.gradient(loss, [model.w, model.b]) #获取梯度值
# 衰减权重和偏置,进行优化,梯度下降
model.w.assign_sub(0.05 * dw) #0.05为学习率
model.b.assign_sub(0.05 * db)
print("epoch %2d: w_true= %.2f, w_pred= %.2f; b_true= %.2f, b_pred= %.2f, loss= %.2f" % (
each + 1, TRUE_W, model.w.numpy(), TRUE_B, model.b.numpy(), loss.numpy()))
#启动
if __name__ == '__main__':
main()