#预测一条y = 0.1x + 0.3的直线
import tensorflow as tf
import numpy as np       #科学计算模块

'''
tf.random_normal([784, 200]):指生成一个784*200的矩阵
tf.zeros([2,3],int32)==>[[0,0,0],[0,0,0]]两行三列 同理tf.ones,tf.fill(产生一个全部为给定数字的数组),tf.constants(产生一个给定值的常量)
'''

#create data 自己编造的data
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1 + 0.3       #所要预测的y,Weights 要接近0.1, biases 要接近0.3

###create tensorflow structure start ###
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))  #用随机变量生成的方式(random_uniform)生成变量(Variable),结构为1维,范围是-1到1
biases = tf.Variable(tf.zeros([1])) #初始值定义为 0

#预测 y
y = Weights * x_data + biases

loss = tf.reduce_mean(tf.square(y - y_data)) #令loss最小,提升y的准确度
optimizer = tf.train.GradientDescentOptimizer(0.5)   #建立优化器,最基础的优化器GradientDescentOptimizer,学习效率为0.5(小于1)
train = optimizer.minimize(loss) #神经网络的工作:减少误差,提升参数的准确度,优化loss

init = tf.initialize_all_variables() #初始化变量
###create tensorflow structure end ###

sess = tf.Session() #初始化前定义session
sess.run(init) #激活initial,run指用session的指针指向init

for step in range (201): #训练201步,run指用session的指针指向train,每隔20步打印一次
    sess.run(train)
    if step % 20 == 0:
        print(step,sess.run(Weights),sess.run(biases))

 



posted on 2018-09-05 09:29  走丢的蜗牛  阅读(576)  评论(0编辑  收藏  举报