主要学习了使用TensorFlow深度学习系统如何进行训练数据以及预测数据:session
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import matplotlib.pyplot as plt import numpy as np import tensorflow as tf #导入对应的第三方库 ''' 线性回归实战:TensorFlow ''' #设置随机种子 np.random.seed(5) #直接采用np生成等差数列的方法,生成100个点,每一个点的取值在-1~1之间 #第一步:准备数据 x_data = np.linspace(-1,1,100) # y = 2x+1+噪声 ,其中,噪声的维度与x_data一致 y_data = 2 * x_data + 1.0 + np.random.randn(*x_data.shape) * 0.4 #画出随机生成数据的散点图 plt.scatter(x_data,y_data) plt.show() #画出咱们想要学习到的线性函数y = 2x+1 plt.plot(x_data,2 * x_data + 1.0, color = 'red',linewidth = 3) #显示数据集的分布 #plt.show() #第二步:构建模型 #定义训练数据的占位符,x是特征值,y是标签值 x = tf.placeholder("float",name = "x") y = tf.placeholder("float",name = "y") #定义模型函数 w和b是模型真正的参数 def model(x,w,b): return tf.multiply(x,w) + b #返回wx +b #定义模型机构 TensorFlow的变量用来更新参数 ''' TensorFlow变量的声明函数是tf.Variable tf.Variable的做用是保存和更新参数 变量的初始值能够是随机数、常数,或是经过其余变量的初始值计算获得 ''' #构建线性函数的斜率,变量w w = tf.Variable(1.0,name="w0") #构建线性函数的截距,变量b b = tf.Variable(0.0,name="b0") #pred是预测值,前向计算 pred = model(x,w,b) #第三步:训练模型 #设置训练参数 #迭代次数 train_epochs = 10 #学习率 learning_rate = 0.05 #定义损失函数 #采用均方差做为损失函数 loss_function = tf.reduce_mean(tf.square(y-pred)) #选择迭代器 #梯度降低优化器 optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_function) #声明会话 sess = tf.Session() #变量初始化 init = tf.global_variables_initializer() sess.run(init) #执行训练 #开始训练,轮数为epoch,采用SGD随机梯度降低优化方法 for epoch in range(train_epochs): for xs,ys in zip(x_data,y_data): #训练100次 _,loss = sess.run([optimizer,loss_function],feed_dict={x:xs,y:ys}) b0temp = b.eval(session = sess) w0temp = w.eval(session = sess) plt.plot(x_data,w0temp * x_data + b0temp)#画图 plt.show() print("w:",sess.run(w))#w的值应该在2附近 print("b:",sess.run(b))#w的值应该在1附近 #第四步:进行预测 plt.scatter(x_data,y_data,label = 'Original data') plt.plot(x_data,x_data * sess.run(w) + sess.run(b),label = 'Fitted line',color='r',linewidth = 3) plt.legend(loc = 2) #经过参数loc指定图例位置 plt.show() x_test = 3.21 predict = sess.run(pred,feed_dict={x:x_test}) print("预测值:%f" % predict) target = 2 * x_test + 1.0 print("目标值:%f" % target)
输出结果:dom
这个阶段:须要本身进行消化,多敲几遍这个代码,理解整个过程,为后期的学习打好坚实的基础。函数