本文共 1216 字,大约阅读时间需要 4 分钟。
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as pltnum_points=1000vectors_set=[] for i in range(num_points): x1= np.random.normal(0.0, 0.05)#均值为0,标准差为0.05的随机值 y1= x1*0.2+0.6+np.random.normal(0.0, 0.01) #加上小范围的数据浮点 vectors_set.append([x1,y1]) #将x,y的值统一到向量中#生成的样本点x_data=[v[0] for v in vectors_set]y_data=[v[1] for v in vectors_set]plt.scatter(x_data,y_data,c='r')plt.show()
#初始化1维矩阵W,取值在[-1,1]之间W = tf.Variable(tf.random_uniform([1],-1.0,1.0), name='W')#初始化1维矩阵b,取值为0b = tf.Variable(tf.zeros([1]), name='b')#计算预测值yy = W*x_data+b#计算损失值(预测值与真实值间的均方差)loss = tf.reduce_mean(tf.square(y-y_data),name='loss')#采用梯度下降优化参数(W,b)optimizer = tf.train.GradientDescentOptimizer(0.5)#学习率为0.5#最小化损失值train = optimizer.minimize(loss,name='loss')init_op = tf.global_variables_initializer()with tf.Session() as sess: sess.run(init_op) print("W = " ,sess.run(W),"b = " ,sess.run(b),"loss = ", sess.run(loss)) #训练1000次训练 for step in range(1000): #迭代步数 sess.run(train) print("W = " ,sess.run(W),"b = ", sess.run(b),"loss = " ,sess.run(loss)) plt.scatter(x_data,y_data,c='r') #描绘样本点 plt.scatter(x_data,sess.run(W)*x_data+sess.run(b))#描绘回归结果 plt.show()
……
在训练中loss不断减少,W和b逐渐趋于稳定。转载地址:http://fohwi.baihongyu.com/