TensorFlow 一个简单的入门用例

2017-08-09  本文已影响0人  linanwx

案例

假如我有一系列的数据x-y,x-y之间是呈线性关系的,如果我们需要用一条直线拟合这条直线,我们该如何做?

下面的程序中,train_x是一系列从-1到1之间的数字,train_y是x的两倍加10,然后随机加了一个0~1之间的数字
接下来我们建立模型,X和Y是一个待初始化的张量占位符,在优化过程中,模型中的XY会一直改变为train_x和train_y中的数据,然后优化器会进行优化,使得w斜率和b截距按照使误差减小的方向变化,这样,w和b经过迭代最终就使模型满足数据了

模型建立好了以后,我们开始运行模型。首先打开一个会话,然后一定要记得初始化全部变量。接下来我们对全体数据进行10次遍历,在每一次迭代过程中,将一个坐标输入,并计算误差,然后利用梯度下降更正w和b。最后,我们输出解出来的w和b。

import tensorflow as tf
import numpy as np

train_x = np.linspace(-1, 1, 101)
train_y = 2 * train_x + np.random.rand(train_x.shape[0])  + 10

X = tf.placeholder("float")
Y = tf.placeholder("float")
w = tf.Variable(0.0, name = "w")
b = tf.Variable(0.0, name = "b")
loss = tf.square(Y - tf.multiply(X,w) - b)
train_op = tf.train.GradientDescentOptimizer(0.01).minimize(loss)

with tf.Session() as session:
    session.run(tf.global_variables_initializer())
    for i in range(10):
        for x,y in zip(train_x, train_y):
            session.run(train_op, feed_dict={X:x, Y:y})
    print("w: ", session.run(w))
    print("b: ", session.run(b))

运行效果:


效果效果
上一篇下一篇

猜你喜欢

热点阅读