import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
参数
learning_rate = 0.01
training_epochs = 1000
display_step = 50
生成数据
X_train = np.array([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,
7.042,10.791,5.313,7.997,5.654,9.27,3.1])
y_train = np.array([1.7,2.76,2.09,3.19,1.694,1.573,3.366,2.596,2.53,1.221,
2.827,3.465,1.65,2.904,2.42,2.94,1.3])
n_samples = X_train.shape[0]
定义模型
# 图输入
X = tf.placeholder("float")
Y = tf.placeholder("float")
# 权值
W = tf.Variable(np.random.randn(),name='weight')
b = tf.Variable(np.random.randn(),name='bias')
# 构造线性模型
pred = tf.add(tf.multiply(X,W),b)
# 定义loss
loss = tf.reduce_sum(tf.pow(pred-Y,2))/(2*n_samples)
# 梯度下降
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss)
# 初始化(只有执行了初始化tf.Variable才有值)
init = tf.global_variables_initializer()
训练模型
with tf.Session() as sess:
sess.run(init) # 初始化所有变量
for epoch in range(training_epochs):
for (x,y) in zip(X_train,y_train):
sess.run(optimizer,feed_dict={X:x,Y:y})
# 每个epoch_step
if(epoch+1) % display_step == 0:
c = sess.run(loss,feed_dict={X:X_train,Y:y_train})
print("Epoch:",'%04d'%(epoch+1),"loss=","{:.9f}".format(c),"W=",sess.run(W),"b=",sess.run(b))
print("Optimization Finished!")
traing_loss = sess.run(loss,feed_dict={X:X_train,Y:y_train})
print("Training loss=",traing_loss,"W=",sess.run(W),"b=",sess.run(b),'\n')
# 绘制拟合曲线
plt.plot(X_train, y_train, 'ro', label='Original data')
plt.plot(X_train, sess.run(W) * X_train + sess.run(b), label='Fitted line')
plt.legend()
plt.show()
Epoch: 0050 loss= 0.140402213 W= 0.39045516 b= -0.21188125
Epoch: 0100 loss= 0.133071989 W= 0.3820774 b= -0.15161258
Epoch: 0150 loss= 0.126588479 W= 0.37419796 b= -0.09492845
Epoch: 0200 loss= 0.120853901 W= 0.36678717 b= -0.04161575
Epoch: 0250 loss= 0.115781769 W= 0.35981712 b= 0.008526364
Epoch: 0300 loss= 0.111295596 W= 0.35326165 b= 0.055686276
Epoch: 0350 loss= 0.107327767 W= 0.34709597 b= 0.10004124
Epoch: 0400 loss= 0.103818364 W= 0.3412971 b= 0.14175838
Epoch: 0450 loss= 0.100714490 W= 0.33584297 b= 0.18099429
Epoch: 0500 loss= 0.097969279 W= 0.33071336 b= 0.21789667
Epoch: 0550 loss= 0.095541336 W= 0.32588884 b= 0.25260425
Epoch: 0600 loss= 0.093393981 W= 0.3213511 b= 0.2852479
Epoch: 0650 loss= 0.091494851 W= 0.3170833 b= 0.31594998
Epoch: 0700 loss= 0.089815304 W= 0.3130695 b= 0.3448256
Epoch: 0750 loss= 0.088329881 W= 0.30929425 b= 0.37198424
Epoch: 0800 loss= 0.087016210 W= 0.30574358 b= 0.39752796
Epoch: 0850 loss= 0.085854478 W= 0.30240405 b= 0.42155194
Epoch: 0900 loss= 0.084827065 W= 0.2992631 b= 0.44414753
Epoch: 0950 loss= 0.083918512 W= 0.29630902 b= 0.4653992
Epoch: 1000 loss= 0.083115049 W= 0.29353055 b= 0.48538688
Optimization Finished!
Training loss= 0.08311505 W= 0.29353055 b= 0.48538688
版权声明:本文为bqw18744018044原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。