用tensorflow实现一个简单的三层神经网络

#有一个隐藏层的简单三层神经网络神经网络

#定义方法添加层数

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方法中的参数介绍以及方法使用:

 

posted @ 2018-12-19 21:52  慕云深  阅读(976)  评论(0)    收藏  举报