TensorFlow03-实现线性回归
2018-05-14 本文已影响0人
__流云
def test01_liner():
# 用numpy生成100个点
x_data = np.random.rand(100)
y_data = x_data * 0.1 + 0.2
# 构造一个线程模型
# k:斜率; b:偏置值
b = tf.Variable(0.)
k = tf.Variable(0.)
y = k * x_data + b
# 定义二次方差损失函数,用于优化计算结果,机器学习理论部分
# 求得预测值和实际值的平方差,用于判断计算结果的损失
loss = tf.reduce_mean(tf.square(y_data - y))
# 定义梯度下降法来进行训练的优化器,0.1参数为训练步长
optimizer = tf.train.GradientDescentOptimizer(0.1)
# 定义最小化代价函数,梯度下降的目的是把loss降到最小
# loss越小代表预测值与真实值越接近,
# k,b越接近0.1和0.2
train = optimizer.minimize(loss)
# 初始化变量,一旦有变量,则需要初始化变量
init = tf.global_variables_initializer()
# run
with tf.Session() as sess:
sess.run(init)
for step in range(8001):
sess.run(train)
if step % 20 == 0:
print(step, sess.run([k, b]))
"""运行过程:
1. sess.run(train) -> optimizer.minimize(loss) :使用梯度下降法计算最小化的loss:
原理: 深度学习06-logistic
2. 然后计算y_data 和y 的平方差,y_data为x_data的固定值;根据y的模型来计算斜率k和偏置量b
3. 当k和b最接近y_data模型中的斜率和偏置量,则说明模型最优化
4. 为什么要使用确定的值来训练模型?
求预测模型最接近真实模型的算法
"""
if __name__ == "__main__":
test01_liner()