美文网首页我爱编程
2018-03-17 (线性回归)

2018-03-17 (线性回归)

作者: 欣悦神话 | 来源:发表于2018-03-17 19:36 被阅读0次

    #线性回归

    import numpyas np

    import  tensorflowas tf

    import matplotlib.pyplotas plt#绘图库

    plt.rcParams["figure.figsize"] = (14,8)#设置画布的长宽为14,8

    #加载数据  实际的数据可以通过pandas读入

    n_observations =100 #产生的点的个数为100个

    xs = np.linspace(-3, 3, n_observations)#随机产生x值,取值区间为【-3,3】

    ys = np.sin(xs) + np.random.uniform(-0.5, 0.5, n_observations)#y值为sin(x)加上正负0.5的随机扰动

    plt.scatter(xs, ys)#绘制图

    plt.show()#显示图

    #准备好placeholder(占位符),容器

    X=tf.placeholder(tf.float32,name='X')

    Y=tf.placeholder(tf.float32,name='Y')

    #初始化权重和偏置

    W=tf.Variable(tf.random_normal([1]),name='Weight')

    b=tf.Variable(tf.random_normal([1]),name='bias')

    #计算预测结果

    Y_pred=tf.add(tf.multiply(X,W),b)

    #计算损失函数的值

    loss=tf.square(Y-Y_pred,name='loss')

    #初始化optimizer(优化器)

    learning_rate=0.01

    optimizer=tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)

    #指定迭代的次数,并在session中执行graph

    n_samples = xs.shape[0]#样本的数量

    with tf.Session()as sess:

    sess.run(tf.global_variables_initializer())#初始化所有变量

        writer = tf.summary.FileWriter('./graphs/linear_reg', sess.graph)#将graph(图)写入到本地日志

    #训练模型

        for iin range(50):#训练50次

            total_loss =0

            for x,yin zip(xs,ys):

    _,l=sess.run([optimizer,loss],feed_dict={X:x,Y:y})

    total_loss+=l #所有的损失

            if i%5==0:#每隔5轮输出一下平均的loss

                print('Epoch {0}: {1}'.format(i,total_loss/n_samples))

    writer.close()#关闭writer

        W,b=sess.run([W,b])

    print(W,b)

    print('W:'+str(W[0]))

    print("b:"+str(b[0]))

    #可视化

    plt.plot(xs,ys,'bo',label='Real_data')

    plt.plot(xs,xs*W+b,'r',label='Predicted data')

    plt.legend()

    plt.show()

    loss matplotlib.pyplotas可视化 tensorboard可视化

    相关文章

      网友评论

        本文标题:2018-03-17 (线性回归)

        本文链接:https://www.haomeiwen.com/subject/qiojqftx.html