import tensorflowas tf
import? numpyas np
import? matplotlib.pyplotas plt
# 簡單的y = x * 0.1 + 0.5的分布
num_ponits =1000
venter = []
for iin range(num_ponits):
x = np.random.normal(0.0,0.5)
y = x*0.1? +0.5 + np.random.normal(0.0,0.03)
venter.append([x,y])
x_data = [v[0]for vin venter]
y_data = [v[1]for vin venter]
#plt.scatter(x_data,y_data,c='r')
#plt.show()
#權(quán)重要給個隨機(jī)值,不能為0衣形,這里為1維矩陣,取值在-1~1之間
#w = tf.Variable(tf.random_uniform([1],-1.0,1.0),name="W")
w = tf.Variable(tf.random_uniform([1],-1.0,1.0),name="W")
b = tf.Variable(tf.zeros([1]),name="b")
y = w*x_data + b
#求預(yù)測值y和實(shí)際值y_data之間的平方的平均值作為損失
loss = tf.reduce_mean(tf.square(y-y_data),name="loss")
#采用梯度下降的方法 來優(yōu)化參數(shù)
optimizer = tf.train.GradientDescentOptimizer(0.5)
#訓(xùn)練的過程就是最小化這個誤差值
train = optimizer.minimize(loss,name="loss")
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
for stepin range(20):
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.plot(x_data,sess.run(w)*x_data+sess.run(b))
plt.show()
對比公式y(tǒng) = x * 0.1 + 0.5橄杨,可以看出權(quán)重逐漸等于0.1,傾斜值逐漸等于0.5.