添加神经网络层:
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
#定义数据 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)----建立神经网络
原文:https://www.cnblogs.com/Lee-yl/p/9415849.html