0
点赞
收藏
分享

微信扫一扫

人工智能python

王栩的文字 2022-03-11 阅读 119

人工智能实验学习

通过生成人工数据集合,基于TensorFlow实现y=3.12XX x+2.X线性回归
要求:
(1) 生成 x_data,值为 [0, 100]之间500个等差数列数据集合作为样本特征;
(2)根据目标线性方程 y=3.12XX
x+2.X,生成相应的标签集合 y_data(需要添加噪声);
(3) 画出随机生成数据的散点图和想要通过学习得到的目标线性函数;
(4)构建回归模型;
(5)训练模型,10轮;
(6)通过训练出的模型预测 x=5.79 时 y 的值,并显示根据目标方程显示的 y 值;
(7)通过Tensorboard显示构建的计算图。
(8)通过更改超参数查看实验效果是否有改善。

 %matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
tf.reset_default_graph()

x_data=np.linspace(0,100,500)
y_data=3.1268*x_data+2.1+np.random.randn(*x_data.shape)*60

plt.scatter(x_data,y_data)

x=tf.placeholder("float",name="x")
y=tf.placeholder("float",name="y")

def model(x,w,b):
    return tf.multiply(x,w)+b

w=tf.Variable(0.0,name="w0")
b=tf.Variable(0.0,name="b0")

pre_value=model(x,w,b)
train_epochs=10
learning_rate=0.00001

loss_function=tf.reduce_mean(tf.square(y-pre_value))
optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function)

sess=tf.Session()
init=tf.global_variables_initializer()
sess.run(init)

for epoch in range(train_epochs):
    for xs,ys in zip(x_data,y_data):
        _,loss=sess.run([optimizer,loss_function],feed_dict={x:xs,y:ys})
    b0temp=b.eval(session=sess)
    w0temp=w.eval(session=sess)
    plt.plot(x_data,w0temp*x_data+b0temp)

x_text=5.79
predict=sess.run(pre_value,feed_dict={x:x_text})
print("预测值:%f" %predict)

target=3.1268*x_text+2.1
print("目标值:%f"%target)

writer=tf.summary.FileWriter("创建路径",tf.get_default_graph())
writer.close()

测试结果如下
在这里插入图片描述

举报

相关推荐

0 条评论