1、线性回归原理复习
1)构建模型
y = w1x1+w2x2 + ..... wnxn+ b
2)构造损失函数
均方误差
3)优化损失
梯度下降
2、案例:实现线性回归的训练
准备真实数据 100样本
x特征值形状(100,1)
y_ _true 目标值(100, 1)
y_ _true = 0.8x + 0.7
假定x和y之间的关系满足
y=kx+b
k≈0.8 b≈0.7
流程分析:
(100,1) * (1, 1) = (100, 1)
y_ predict = X * weights(1, 1) + bias(1, 2)
1)构建模型
y_ predict = tf.matmul(x, weights) + bias
2)构造损失函数
error = tf. reduce_ mean(tf. square(y. _predict - y_ .true))
3)优化损失
optimizer = tf.train. GradientDescentOpt imizer(learning_ rate=0. 01) . minimize(error)
代码示例:
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
def linear_regression():
"""
自实现一个线性回归
1)准备数据
2)模型构造
3)构造损失函数
4)优化损失
:return:
"""
# 准备数据
X = tf.compat.v1.random_normal(shape=[100,1])
y_true = tf.matmul(X,[[0.8]])+0.7
# 构造模型 定义模型参数用 变量
weights = tf.Variable(initial_value=tf.compat.v1.random_normal(shape=[1,1]))
bias = tf.Variable(initial_value=tf.compat.v1.random_normal(shape=[1,1]))
y_predict = tf.matmul(X,weights)+bias
# 构造损失函数
error = tf.reduce_mean(tf.square(y_predict-y_true))
#优化损失
optimizer = tf.compat.v1.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)
# 显示初始化变量
init = tf.compat.v1.global_variables_initializer()
# 开启会话
with tf.compat.v1.Session() as sess:
# 初始化变量
sess.run(init)
# 查看初始化模型参数之后的值
print("训练前模型参数:权重%f ,偏置%f,损失为%f" % (weights.eval(),bias.eval(), error.eval()))
# 开始训练
for i in range(1000):
sess.run(optimizer)
print("第%d次训练后模型参数:权重%f ,偏置%f,损失为%f" % (i+1,weights.eval(), bias.eval(), error.eval()))
return None
linear_regression()
学习率越高,训练到较好结果步数越小,但是过大会出现梯度爆炸现象
3、优化
1、增加变量显示
1)创建事件文件
2)收集变量
3)合并变量
4)每次迭代运行一次合并变量
5)将summary对象写入事件文件
调用tensorboard显示
2、添加命名空间
更直观的看到变量的变化
3、模型保存与加载
1)保存:saver.save(sess,path)
2)加载:saver.restore(sess,path)
标签:compat,案例,error,v1,bias,tf,线性,TensorFlow,100 From: https://blog.csdn.net/weixin_47256446/article/details/137552373