莫烦大大TensorFlow学习笔记(3)----建立神经网络

1、def add_layer()

添加神经网络层:

import tensorflow as tf

def add_layer( inputs, in_size, out_size ,activation_function=None) :

#weight初始化时生成一个随机变量矩阵比0矩阵效果要好

    Weights = tf.Variable( tf.random_normal ( [in_size, out_size]))

#biases初始值最好也不要都为0,则biases值全部等于0.1

    biases = tf.Variable( tf.zeros([1,out_size]) + 0.1)
 

#相当于Y_predict


    Wx_plus_b = tf.matmul ( inputs,Weights ) +biases
#如果为线性则outputs不用改变,如果不为线性则用激活函数
    if activation_function is None:
        outputs = Wx_plus_b
    else:
        outputs = activation_functions ( Wx_plus_b)
    reeturn outputs

2、建立神经网络

#定义数据

x_data = np.linspace ( -1,1,300) [:,np.newaxis]
noise = np.random.normal ( 0,0.05 , x_data.shape)
y_data = np.square( x_data) - 0.5 +noise

#建立第一层layer
#一个输入层、一个隐藏层、一个输出层
#输入层:输入多少data就多少个神经元,这里的x只有一个特征属性,则输入层有1个神经元
#隐藏层:自己定义10个
#输出层:输出y只有1个输出

#None表示无论给多少个样本都可以
xs = tf.placeholder(tf.float32, [None, 1])
ys = tf.placeholder(tf.float32, [None,1] )

#add_layer为上面自己建立的函数,这里建立隐藏层
l1 = add_layer( xs , 1 ,10 ,activation_function = tf.nn.relu)
#输出层
predition = add_layer( l1 ,10 , 1,activation_function = None)

#算损失函数 , reduction_indices =[1] 按行求和
loss = tf.reduce_mean ( tf.square ( ys -prediction ), 
reduction_indices =[1] )

#选择一个优化器,选择:梯度下降,需要给定一个学习率为0.1,通常要小于1
#优化器以0.1的学习效率要减少loss函数,使下一次结果更好
train_step = tf.train.GradientDecentOptimizer( 0.1).minimize (loss)

#初始所有变量

init = tf.initialize_all_variables ()

sess = tf.Session()

sess.run(init)
#重复学习1000次
for i in range(1000):
    sess.run( train_step , feed_dict = {xs:x_data,ys:y_data})
#每50次打印loss
    if i % 50 == 0:
        print(sess.run(loss,feed_dict={x:x_data,ys:y_data})

猜你喜欢

转载自www.cnblogs.com/Lee-yl/p/9415849.html
今日推荐