目的:根据预测值和实际值的误差,训练。不断地修正参数。
程序如下:
#导入
import tensorflow as tf
import numpy as np
#数据
X_data =np.random.rand(100).astype(np.float32)
# 在tensorflow大部分数据形式是float32,生成100个随机数
Y_data=X_data*0.1+0.3
#本次实验的目的:经过训练,使得Weights尽可能接近0.1,biases接近0.3。
##创造tensorflow的结构开始###
Weights=tf.Variable(tf.random_uniform[1],-1.0,1.0)
#定义变量用到Variable,结构为一维,范围是-1到1
biases=tf.Variable(tf.zeros[1])
#初始值定义为0
Y=Weights*X_data+biases
Loss=tf.reduce_mean(tf.square(Y-Y_data))
#计算预测Y和实际Y的差别
Optimizer=tf.train.GradientDescentOptimizer(0.5)
#优化器梯度下降法,学习效率0.5
train =optimizer.minimize(loss)
#训练使得loss误差不断变小
init=tf.initialize_all_varibles() #初始化变量,
##创造tensorflow的结构结束###
Sess=tf.Session()
Sess.run(init) #激活,很重要!!!
for step in range(201)
sess.run(train)
if step%20==20:
print(step,sess.run(Weights),sess.run(biases))
#每隔20步打印出来
结果图:
通过训练使得参数不断地优化。对于这种简单的数据利用梯度下降法足够用了。还有其他的优化器,下次写到CNN的时候再说。
网友评论