tensorflow就是先创建数据流图,然后往进喂数据。在输入层输入数据,然后数据飞到隐藏层飞到输出层,用梯度下降处理,梯度下降会对几个参数进行更新和完善,更新后的参数再次跑到隐藏层去学习,这样一直循环直到结果收敛。动图如下:
训练过程:
1.输入x,y数据
2.将weight,biases用tensor表示出来
3.求Loss,使用tf.train.GradientDescentOptimizer(0.5).minimize(loss)训练最小化loss
4.初始化变量
import tensorflow as tf import numpy as np #输入x,y数据 x_data = np.random.rand(100).astype(np.float32) y_data = x_data*0.1+0.3 #构建线性模型 weight = tf.Variable(tf.random_uniform([1],-1.0,1.0)) biases = tf.Variable(tf.zeros([1])) y = x_data*weight+ biases #求loss loss = tf.reduce_mean(tf.square(y-y_data)) #定义梯度下降来优化,使loss最小 train = tf.train.GradientDescentOptimizer(0.5).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: print(step,sess.run(weight),sess.run(biases),sess.run(loss))
注意点:
在 with tf.Session() as sess:前仅仅是定义了 op的作用,而真正的复制初始化操作是在sess.run(init)进行操作的,sess.run()激活这两个op。
在打印变量的时候也需要sess.run()