import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#制造数据,加上随机噪声
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
#定义两层简单的网络
x=tf.placeholder(tf.float32,[None,1])
y=tf.placeholder(tf.float32,[None,1])
w1=tf.Variable(tf.random_normal([1,10]))
b1=tf.Variable(tf.zeros([1,10]))
wx_plus_b1=tf.matmul(x,w1)+b1
l1=tf.nn.tanh(wx_plus_b1)
w2=tf.Variable(tf.random_normal([10,1]))
b2=tf.Variable(tf.zeros([1,1]))
wx_plus_b2=tf.matmul(l1,w2)+b2
predict=tf.nn.tanh(wx_plus_b2)
#损失函数选用SME
loss=tf.reduce_mean(tf.square(y-predict))
#优化函数选取梯度下降法
train=tf.train.GradientDescentOptimizer(0.1).minimize(loss)
with tf.Session() as sess:
predict_y = None
sess.run(tf.global_variables_initializer())
for i in range(2000):
sess.run(train,feed_dict={x:x_data,y:y_data})
#训练完成后,通过模型得到预测的y值
predict_y=sess.run(predict,feed_dict={x:x_data})
plt.figure()
plt.scatter(x_data,y_data)
plt.plot(x_data,predict_y,'r',lw=5)
plt.show()
更改代码实现Tensorboard 网络结构绘制
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#制造数据,加上随机噪声
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
with tf.name_scope('input'):
#定义两层简单的网络
x=tf.placeholder(tf.float32,[None,1],name='input-x')
y=tf.placeholder(tf.float32,[None,1],name='input-y')
with tf.name_scope('layer'):
with tf.name_scope('weights1'):
w1=tf.Variable(tf.random_normal([1,10]),name='w1')
with tf.name_scope('biases1'):
b1=tf.Variable(tf.zeros([1,10]),name='b1')
with tf.name_scope('wx_plus_b1'):
wx_plus_b1=tf.matmul(x,w1)+b1
with tf.name_scope('tanh1'):
l1=tf.nn.tanh(wx_plus_b1)
with tf.name_scope('weights2'):
w2=tf.Variable(tf.random_normal([10,1]))
with tf.name_scope('biases2'):
b2=tf.Variable(tf.zeros([1,1]))
with tf.name_scope('wx_plus_b2'):
wx_plus_b2=tf.matmul(l1,w2)+b2
with tf.name_scope('tanh2'):
predict=tf.nn.tanh(wx_plus_b2)
with tf.name_scope('loss'):
#损失函数选用SME
loss=tf.reduce_mean(tf.square(y-predict),name='loss')
with tf.name_scope('train'):
#优化函数选取梯度下降法
train=tf.train.GradientDescentOptimizer(0.1).minimize(loss)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
writer=tf.summary.FileWriter('logs/',sess.graph)
for i in range(2000):
sess.run(train,feed_dict={x:x_data,y:y_data})
#训练完成后,通过模型得到预测的y值
predict_y=sess.run(predict,feed_dict={x:x_data})
plt.figure()
plt.scatter(x_data,y_data)
plt.plot(x_data,predict_y,'r',lw=5)
plt.show()