[Tensorflow]激励函数tf.nn.relu样例
代码: |
import tensorflow as tf import numpy as np ### 定义添加神经网络层函数 START ### def add_layer(inputs,in_size,out_size,activation_function=None): """描述: 添加神经网络层函数. :param inputs: 输入神经层 :param in_size: 输入神经层的神经元个数 :param out_size: 输出神经层的神经元个数 :param activation_function: 激励函数 """ # 定义一个"in_size行,out_size列"的随机矩阵变量 Weights=tf.Variable(tf.random_normal([in_size,out_size])) # 定义一个"1行,out_size列"的0值矩阵基准变量 biases=tf.Variable(tf.zeros([1,out_size])+0.1) # 定义一个矩阵乘法函数公式 Wx_plus_b = tf.matmul(inputs,Weights)+biases # 判断是否使用激励函数 if activation_function is None: outputs=Wx_plus_b else: outputs=activation_function(Wx_plus_b) return outputs ### 定义添加神经网络层函数 END ### ### 定义变量结构 START### # 定义起始输入:在指定的-1到1的间隔内返回300个均匀间隔的1行300列的数组,再将数组转化为1列300行的矩阵 # 例如: # x1 = np.array([1, 2, 3, 4, 5]) # # the shape of x1 is (5,) # x1_new = x1[:, np.newaxis] # # now, the shape of x1_new is (5, 1) # array([[1], # [2], # [3], # [4], # [5]]) # x1_new = x1[np.newaxis,:] # # now, the shape of x1_new is (1, 5) # array([[1, 2, 3, 4, 5]]) x_data=np.linspace(-1,1,300)[:,np.newaxis] # 定义噪点 :使用高斯分布的概率密度函数定义一个均值为0,标准差为0.05的高斯随机数,个数为x_data的矩阵元素数 noise =np.random.normal(0,0.05,x_data.shape) # 定义起始输出:x_data的平方减去0.5,再加上噪点 y_data=np.square(x_data)-0.5+noise # 定义运行时参数变量 xs=tf.placeholder(tf.float32,[None,1]) ys=tf.placeholder(tf.float32,[None,1]) ### 定义神经网络结构 START### # 定义隐藏层神经网络层layer01 layer01=add_layer(xs,1,10,activation_function=tf.nn.relu) # 定义隐藏层神经网络层layer02 layer02=add_layer(layer01,10,10,activation_function=tf.nn.sigmoid) # 定义预测输出层 prediction prediction =add_layer(layer02,10,1,activation_function=None) # 计算损失 # 1.计算起始输出与预测输出的偏差的平方 loss_square=tf.square(y_data - prediction) # 2.计算一个张量的各个维度上元素的总和. reduce_sum_square=tf.reduce_sum(loss_square,reduction_indices=[1]) # 3.计算损失:张量的各个维度上的元素的平均值 loss=tf.reduce_mean(reduce_sum_square) #使用梯度下降算法训练所有样本 train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) # 定义初始化变量 init=tf.initialize_all_variables() # 创建会话 sess=tf.Session() # 运行初始化变量指针 sess.run(init) ### 定义神经网络结构 END### ###定义变量结构 END### for i in range(2000): sess.run(train_step,feed_dict={xs:x_data,ys:y_data}) if i%50==0: print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
|
输出结果: |
> Executing task: python d:\Work\002_WorkSpace\VSCode\Tensorflow\cnn.py < WARNING:tensorflow:From C:\Program Files\Python\Python37\lib\site-packages\tensorflow\python\framework
|
Powered By D&J (URL:http://www.cnblogs.com/Areas/)