最近开始接触Tensorflow ,感觉如果不会Deeplearning 就要被淘汰了,所以开始学习tensorflow,然后自己就照着写了一个用BP 做线性回归的例子。
具体代码:
`import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#data
x_data=np.linspace(-0.5,0.5,200)[:,np.newaxis]
noise=np.random.normal(0,0.02,x_data.shape)
y_data=np.square(x_data)+noise
#placeholder
x=tf.placeholder(tf.float32,shape=[None,1])
y=tf.placeholder(tf.float32,shape=[None,1])
#构建模型 BP net Hiding Layer
Weights_L1=tf.Variable(tf.random_normal([1,10]))
Bias_L1=tf.Variable(tf.random_normal([1,10]))
Input_Weights_L1=tf.matmul(x,Weights_L1)+Bias_L1
Output_L1=tf.nn.tanh(Input_Weights_L1)
#BPnet output Layer
Weights_L2=tf.Variable(tf.random_normal([10,1]))
Bias_L2=tf.Variable(tf.random_normal([1,1]))
Input_Weights_L2=tf.matmul(Output_L1,Weights_L2)+Bias_L2
y_predict=tf.nn.tanh(Input_Weights_L2)
#loss function
loss=tf.reduce_mean(tf.square(y_predict-y))
#optimizer
optimizer=tf.train.GradientDescentOptimizer(0.1)
train=optimizer.minimize(loss)
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for i in range(500):
sess.run(train,feed_dict={x:x_data,y:y_data})
y_predict_value=sess.run(y_predict,feed_dict={x:x_data})
plt.figure()
plt.scatter(x_data,y_data)
plt.plot(x_data,y_predict_value,‘r-’,lw=5)
plt.show()
`
结果