#有一个隐藏层的简单三层神经网络神经网络
#定义方法添加层数
import tensorflow as tf
def add_layer(input_x,in_size,out_size,activation_function=None):
weights=tf.Variable(tf.random_normal([in_size,out_size]))
bias=tf.Variable(tf.zeros(out_size)+0.1)
wx_plus_b=tf.matmul(input_x,weights)+bias
if activation_function is None:
outputs=wx_plus_b
else:
outputs=activation_function(wx_plus_b)
return outputs
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x_data=np.linspace(-1,1,300)[:,np.newaxis]#增加一个维度,变成二维了
noise=np.random.normal(0,0.1,x_data.shape)
y_data=np.square(x_data)-0.5+noise
xs=tf.placeholder(tf.float32,[None,1])
ys=tf.placeholder(tf.float32,[None,1])
#############数据准备#####################
hidden_layer_out=add_layer(xs,1,10,activation_function=tf.nn.relu)
final_layer_out=add_layer(hidden_layer_out,10,1,activation_function=None)
###################模型构造########################
loss=tf.reduce_mean(tf.reduce_sum(
tf.square(y_data-final_layer_out),
reduction_indices=[1]#向右压缩维度,变成一列
))
optimizer=tf.train.GradientDescentOptimizer(0.01)
train_op=optimizer.minimize(loss)
init=tf.global_variables_initializer()
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.scatter(x_data,y_data)
plt.ion()
plt.show
with tf.Session() as sess:
sess.run(init)
for i in range(5000):
#train
sess.run(train_op,feed_dict={xs:x_data,ys:y_data})
if i%100==0:
try:
ax.lines.remove(lines[0])#抹去上一条线
except Exception:
pass
prediction_value=sess.run(final_layer_out,feed_dict={xs:x_data})
lines=ax.plot(x_data,prediction_value,\'r-\',lw=3)#lw线宽为3
plt.pause(0.1)
#print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
tensorflow中的tf.reduce_sum以及tf.reduce_mean方法中的参数介绍以及方法使用: