Tensorflow:简单线性回归

Tensorflow:简单线性回归,tensorflow,Tensorflow,我刚刚开始在python中使用Tensorflow来解决优化问题。我只是用非常简单的回归模型做了一次尝试。但是我得到的结果(斜率和常数)似乎与我的预期相差甚远,谁能指出我做错了什么(代码运行了,但我不确定是否正确使用了Tensorflow) 我所做的: 1导入模块: 导入matplotlib.pyplot作为plt 将numpy作为np导入 导入随机运行 导入tensorflow作为tf 2基于线性结构创建数据(y=3 X+4+错误): train_X=np.数组(范围(-20,20,1))

我刚刚开始在python中使用Tensorflow来解决优化问题。我只是用非常简单的回归模型做了一次尝试。但是我得到的结果(斜率和常数)似乎与我的预期相差甚远,谁能指出我做错了什么(代码运行了,但我不确定是否正确使用了Tensorflow)

我所做的:
1导入模块:

导入matplotlib.pyplot作为plt
将numpy作为np导入
导入随机运行
导入tensorflow作为tf
2基于线性结构创建数据(y=3 X+4+错误):

train_X=np.数组(范围(-20,20,1))
b=3;c=4;sd=0.5;
误差=np.随机.正常(loc=0.0,标度=sd,尺寸=40);
确定性=b*列车X+c;
列车Y=np.add(确定,错误)
3优化设置:

X=tf.placeholder(tf.float32[40])
Y=tf.placeholder(tf.float32[40])
beta=tf.Variable(np.random.randn(),name=“beta”)
alpha=tf.Variable(np.random.randn(),name=“alpha”)
n_样本=40
学习率=0.01
pred_full=tf.add(tf.scalar_mul(beta,X),alpha)
成本=tf.reduce_平均值(tf.pow(tf.subtract(Y,pred_full),2))
优化器=tf.train.GradientDescentOptimizer(学习率)。最小化(成本)
4运行它:

init=tf.global\u variables\u initializer()
使用tf.Session()作为sess:
sess.run(初始化)
run(优化器,feed_dict={X:train_X,Y:train_Y})
结果=sess.run(成本,提要={X:train\ux,Y:train\uy})
result_beta=sess.run(beta,feed_dict={X:train_X,Y:train_Y})
结果_alpha=sess.run(alpha,feed_dict={X:train_X,Y:train_Y})
打印('result:'、result';'、'result_beta:'、result_beta';'、'result_alpha:'、result_alpha)
我得到的结果是:

结果:1912.99;结果β:6.75786;结果α:-0.209623
显然,β应该接近3,alhpa应该接近4。我想知道我的代码出了什么问题


谢谢

对于梯度下降的多次迭代,您必须多次调用优化器。正如@dv3所指出的,试试看

init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    for i in range(50):
        opt, result_alpha, result_beta = sess.run([optimizer, alpha, beta], feed_dict={X: train_X, Y: train_Y})

    print('beta =', result_beta, 'alpha =', result_alpha)

注意:不必通过单独调用run()访问多个张量值。您可以使用要获取的值列表来完成此操作。

那么您只需运行一次模型。。。?创建一个循环并迭代:cost,opt,beta,alpha=sess.run([cost,optimizer,result\u-alpha,result\u-beta],feed=…)哦,非常感谢,非常感谢!我认为,每次追踪,乐观主义者只有在找不到更小的成本时才会停止。我已经实现了你给我的代码。它起作用了!