窝牛号

人工智能神器—TensorFlow入门基础(激励函数、隐藏层)

激励函数

Activation Function(激励函数):

前几期的文章,我们介绍了激励函数的感念,为何需要激励函数,那么在TensorFlow中如何使用激励函数

激励函数说白了就是非线性方程,在不同的神经网络中,可以尝试不同的激励函数,一般在卷积神经网络CNN的卷积层中, 推荐的激励函数是 relu. 在循环神经网络中RNN中, 推荐的是 tanh 或者是 relu。具体激励函数的具体细节,我们会随着文章的不断分享,逐渐介绍。

TensorFlow流程结构图

从TensorFlow数据结构图,我们可以看出TensorFlow除了输入层,训练层外,还有多层的隐藏层(hidden layer负责降维),在不同的实际问题中,添加多少隐藏层,需要根据项目的需求。我们上期的文章,TensorFlow数据结构构建一文,简单介绍了TensorFlow的数据结构建立,但是没有添加任何层,我们的激励函数就添加在层的定义中。

TensorFlow添加层

我们修改一下我们上期的代码,介绍一下如何使用激励函数与如何添加层

首先我们定义一个层的函数

import tensorflow as tf import numpy as np 定义Weights Weights = tf.Variable(tf.random_normal([in_size,out_size])) 定义y=W*x+b tf.matmul()是矩阵的乘法 Wx_plus_b=tf.matmul(inputs,Weights)+biases if activation_function is None: 通过激励函数非线性话y=W*x+b outputs=activation_function(Wx_plus_b) return outputs

添加层的函数定义后,后期我们就可以直接使用函数定义添加层。

2、创建初始化数据

x=np.linspace(-1,1,300)[:,np.newaxis] 本期定义一个一元二次函数 y=np.square(x)-0.5+noise 输入层 定义激励函数为relu lay_one=add_layer(x_ph,1,10,activation_function=tf.nn.relu) 占位符通过feed_dict输入数据,这里我们输入我们定义的x,y,当然这里你也可以输入其他的数据 sess.run(train,feed_dict={x_ph:x,y_ph:y}) if i%50==0: print(i,sess.run(loss,feed_dict={x_ph:x,y_ph:y})) >>>

10、查看输出

刚开始的误差为0.3,随着训练的step增加,误差loss 越小

loss

下期预告

下期介绍一下matplotlib 可视化工具,这在TensorFlow中可以更形象的看到TensorFlow的训练结果

TensorFlow

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1