tensorflow输入x和y拟合线性曲线,求k,b

import numpy as np
import tensorflow as tf
x_data=np.random.rand(1000)
y_data=x_data*10 +77

print(x_data)
print(y_data)

k=tf.Variable(0.,name='k')
b=tf.Variable(0.)
y=k*x_data+b

loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.2)
train = optimizer.minimize(loss)

init=tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for step in range(201):
        sess.run(train)
        if step%20==0:
            k1,b1 = sess.run([k, b])
            mess='step:%s,k:%s,b:%s'%(step,k1,b1)
            print(mess)
            print([k1,b1])

在这里插入图片描述

好的,我可以帮你解决这个问题。首先,需要导入必要的库,包括: ```python import tensorflow as tf import numpy as np import matplotlib.pyplot as plt ``` 接着,我们可以生成一些随机的数据点,作为“y=x”的散点图: ```python x_data = np.linspace(-1, 1, 100) y_data = x_data + np.random.randn(*x_data.shape) * 0.3 plt.scatter(x_data, y_data) ``` 这里使用了 `numpy` 库的 `linspace` 函数生成了-1到1之间100个等差数列作为 `x` 坐标,然后使用 `numpy` 库的 `random.randn` 函数生成一些随机的噪声数据,并将它们加到 `x` 上,得到 `y` 坐标,最后使用 `matplotlib` 库的 `scatter` 函数绘制出来。 接下来,我们可以建立一个简单的线性回归模型来拟合这些数据点: ```python X = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32) W = tf.Variable(tf.random_normal([1]), name="weight") b = tf.Variable(tf.random_normal([1]), name="bias") Y_predicted = tf.add(tf.multiply(X, W), b) cost = tf.reduce_mean(tf.square(Y_predicted - Y)) optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost) ``` 这里使用 `TensorFlow` 库建立了一个简单的线性回归模型,其中 `X` `Y` 分别表示输入输出的占位符,`W` `b` 分别表示模型的权重偏置,`Y_predicted` 表示预测的输出结果,`cost` 表示损失函数,`optimizer` 表示优化器。 最后,我们可以使用 `TensorFlow` 库来训练模型,并绘制出拟合曲线: ```python with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for epoch in range(100): _, c = sess.run([optimizer, cost], feed_dict={X: x_data, Y: y_data}) print("Epoch:", epoch, "cost=", c, "W=", sess.run(W), "b=", sess.run(b)) plt.plot(x_data, sess.run(W) * x_data + sess.run(b)) plt.show() ``` 这里使用 `TensorFlow` 库的 `Session` 来运行模型,使用 `global_variables_initializer` 函数初始化所有变量,使用 `run` 函数 `feed_dict` 参数来训练模型,最后使用 `plot` 函数绘制出拟合曲线,并使用 `show` 函数显示出来。 完整代码如下: ```python import tensorflow as tf import numpy as np import matplotlib.pyplot as plt # 生成数据 x_data = np.linspace(-1, 1, 100) y_data = x_data + np.random.randn(*x_data.shape) * 0.3 plt.scatter(x_data, y_data) # 建立模型 X = tf.placeholder(tf.float32) Y = tf.placeholder(tf.float32) W = tf.Variable(tf.random_normal([1]), name="weight") b = tf.Variable(tf.random_normal([1]), name="bias") Y_predicted = tf.add(tf.multiply(X, W), b) cost = tf.reduce_mean(tf.square(Y_predicted - Y)) optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost) # 训练模型并绘制曲线 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for epoch in range(100): _, c = sess.run([optimizer, cost], feed_dict={X: x_data, Y: y_data}) print("Epoch:", epoch, "cost=", c, "W=", sess.run(W), "b=", sess.run(b)) plt.plot(x_data, sess.run(W) * x_data + sess.run(b)) plt.show() ``` 希望这个例子能够帮助你更好地理解如何使用 `TensorFlow` 来生成函数的散点图并进行拟合。如果还有什么问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigData-0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值