python学习日记5-第二个tensorflow程序,回归y=x^2

代码
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

def add_layer(input_holder,in_size,out_size,activation_function=None):
Variable_Weight = tf.Variable(
tf.random_normal([in_size,out_size]))
Variable_biases = tf.Variable(
tf.zeros([1,out_size])+0.1)
Wx_plus_b = tf.matmul(input_holder,
Variable_Weight)+Variable_biases
if activation_function is None:
output_holder = Wx_plus_b
else:
output_holder = activation_function(Wx_plus_b)
return output_holder

#create sample data
#x_data = np.linspace(-1,1,300, dtype=np.float32)
sample_X = np.linspace(-2.5,2.5,500)[:, np.newaxis]
sample_Y = np.square(sample_X)+np.random.randn(*sample_X.shape)*0.4

#draw image with dot(‘ro’)
plt.plot(sample_X,sample_Y,‘ro’,label=‘sample data’)
plt.legend()
plt.show()

#place holder
holder_X = tf.placeholder(‘float’)
holder_Y = tf.placeholder(‘float’)

#add layer,define session
layer1 = add_layer(holder_X,1,10,activation_function=tf.nn.relu)
prediction = add_layer(layer1,10,1,activation_function = None)
loss = tf.reduce_mean(tf.reduce_sum(tf.square(holder_Y-prediction),
reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

#init
init = tf.global_variables_initializer()

#run
sess = tf.Session()
sess.run(init)

plotdata ={“batchsize”:[],“loss”:[]}

for i in range(800):
sess.run(train_step,feed_dict={holder_X:sample_X,
holder_Y:sample_Y})
temp_loss = sess.run(loss,
feed_dict={holder_X:sample_X,holder_Y:sample_Y})
plotdata[“batchsize”].append(i)
plotdata[“loss”].append(temp_loss)
if i%50==0:
print(i,’ loss=’,temp_loss )

print(‘finished’)
plt.plot(plotdata[“batchsize”],plotdata[“loss”],‘b–’)
plt.xlabel(‘Minibatch number’)
plt.ylabel(‘Loss’)
plt.title(‘Minibatch run vs. Training loss’)
plt.show()

#画样本点和拟合曲线
plt.plot(sample_X,sample_Y,‘ro’,label=‘Original data’)
plt.plot(sample_X,sess.run(prediction,
feed_dict=
{holder_X:sample_X,holder_Y:sample_Y}),
label=‘Fittedline’)
plt.legend()
plt.show()

结果


0 loss= 2.452926
50 loss= 0.25481138
100 loss= 0.21281026
150 loss= 0.19300117
200 loss= 0.1828335
250 loss= 0.17718668
300 loss= 0.17481087
350 loss= 0.17345525
400 loss= 0.17251094
450 loss= 0.17171502
500 loss= 0.1710108
550 loss= 0.17043188
600 loss= 0.16993634
650 loss= 0.16948102
700 loss= 0.16905677
750 loss= 0.16869277
finished

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43387285/article/details/83182554
今日推荐