import tensorflow as tf import numpy as np #使用numpy中的随机生成数据功能生成一个y = 4x+1的线性曲线 #数据inputX,noise为随机生成的输入数与满足偏差为0.05的正太分布的噪声数 inputX = np.random.rand(3000,1)#通过本函数可以返回一个或一组服从“0~1”均匀分布的随机样本值。 # 随机样本取值范围是[0,1),不包括1。 noise = np.random.normal(0,0.05,inputX.shape) outputY = inputX*4 +1+noise #这里是第一层 #这里weight1与bias1分别是神经网络隐藏层的变量,因为这个变量在后续的图计算过程是需要重新根据误差算法不停 #地重新赋值所以被设置成tf变量 #程序段中x1与y1_在写作时就有些不同。这里x1是占位符,占位符的作用是在tf图计算时不停的输入数据;而y1_是神经 #设立的模型目标其形式为:Y=x*w+b 即这个模型是一个一元线性回归模型 weight1 = tf.Variable(np.random.rand(inputX.shape[1],4)) bias1 = tf.Variable(np.random.rand(inputX.shape[1],4)) x1 = tf.placeholder(tf.float64,[None,1]) y1_=tf.matmul(x1,weight1)+bias1 #程序中,这里训练模型的真实值y同样被设置成一个占位符。loss定义的是损失函数,这里采用的是最小二乘法的随时函数,即计算模型输出值 #与真实值之间的误差的最小二乘法train是采用梯度下降算法计算的训练方法 y = tf.placeholder(tf.float64, [None, 1]) loss =tf.reduce_mean(tf.reduce_sum(tf.square((y1_-y)),reduction_indices=[1])) train = tf.train.GradientDescentOptimizer(0.25).minimize(loss)#选择梯度下降法 #当全部数据和模型被设置完毕以后,tf.initialize_all_variables()启动数值的初始化工作, #之后对话被启动,框架准备开始执行任务。 init = tf.initialize_all_variables() sess = tf.Session() sess.run(init) #在设定的循环次数下会话被启动,而feed会把设定的值一次传送到训练模型中 for i in range(1000): sess.run(train,feed_dict={x1:inputX,y:outputY}) #训练完成后,可以把结果进行打印,在整个公式中,最需要知道的就是weight和bias的值,可以直接被打印出来。 print(weight1.eval(sess)) print("____________________") print(bias1.eval(sess)) print("________结果是__________") x_data = np.matrix([[1.],[2.],[3.]]) print(sess.run(y1_,feed_dict={x1:x_data})) #而模型训练结束后被储存在上文设定的y1_模型中。需要注意的是。当训练结束后,模型就已经被训练完毕被储存在系统中 #因此当需要时只需要按要求调用即可
Hello_Tensorflow_plus
最新推荐文章于 2020-06-08 23:48:04 发布