1. 程式人生 > >莫煩大大TensorFlow學習筆記(3)----建立神經網絡

莫煩大大TensorFlow學習筆記(3)----建立神經網絡

nbsp 定義數據 學習筆記 variables ati 選擇 mea 有變 plus

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})

莫煩大大TensorFlow學習筆記(3)----建立神經網絡