#预测一条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))