线性回归:代码实现
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as pltnum_points=1000
vectors_set=[]
for i in range(num_points):x1= np.random.normal(0.0, 0.05)#均值為0,標(biāo)準(zhǔn)差為0.05的隨機值y1= x1*0.2+0.6+np.random.normal(0.0, 0.01) #加上小范圍的數(shù)據(jù)浮點vectors_set.append([x1,y1]) #將x,y的值統(tǒng)一到向量中#生成的樣本點
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,取值為0
b = tf.Variable(tf.zeros([1]), name='b')#計算預(yù)測值y
y = W*x_data+b#計算損失值(預(yù)測值與真實值間的均方差)
loss = tf.reduce_mean(tf.square(y-y_data),name='loss')#采用梯度下降優(yōu)化參數(shù)(W,b)
optimizer = tf.train.GradientDescentOptimizer(0.5)#學(xué)習(xí)率為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))#訓(xùn)練1000次訓(xùn)練for step in range(1000): #迭代步數(shù)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))#描繪回歸結(jié)果plt.show()
……
在訓(xùn)練中l(wèi)oss不斷減少,W和b逐漸趨于穩(wěn)定。
總結(jié)
- 上一篇: TensorFlow常用操作:代码示例
- 下一篇: 怀孕后能用清宫表测胎儿性别吗?准确率高吗