书上的代码:

 # coding: utf-8

 # In[1]:

 import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
from pylab import * # In[19]: def show_activation(activation,y_lim=5):
x=np.arange(-10., 10., 0.01)
ts_x = tf.Variable(x)
ts_y =activation(ts_x )
with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
y=sess.run(ts_y)
ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_position(('data',0))
ax.spines['left'].set_position(('data',0))
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
lines=plt.plot(x,y)
plt.setp(lines, color='b', linewidth=3.0)
plt.ylim(y_lim*-1-0.1,y_lim+0.1)
plt.xlim(-10,10) plt.show() # In[20]: show_activation(tf.nn.sigmoid,y_lim=1) # In[4]: show_activation(tf.nn.softsign,y_lim=1) # In[5]: show_activation(tf.nn.tanh,y_lim=1) # In[6]: show_activation(tf.nn.relu,y_lim=10) # In[7]: show_activation(tf.nn.softplus,y_lim=10) # In[8]: show_activation(tf.nn.elu,y_lim=10) # In[14]: a = tf.constant([[1.0,2.0],[1.0,2.0],[1.0,2.0]])
sess = tf.Session()
print(sess.run(tf.sigmoid(a))) # In[ ]:

sigmoid激活函数:

S(x)=1/(1+e-x)

优点在于输出映射在0-1内,单调连续,适合做输出层,求导容易。

缺点在于软饱和性,即当x趋于无穷大时,一阶导数趋于0,容易产生梯度消失,神经网络的改善缓慢或消失。

softsign激活函数:

tanh激活函数:

tanh(x)=(1-e-2x)/(1+e-2x)

也具有软饱和性,收敛速度比sigmoid快,但是仍无法解决梯度消失的问题。

relu激活函数:

f(x)=max(x,0)

缺点:当relu在x<0时硬饱和,即在负半轴,激活函数的一阶导数等于0。

优点:由于x>0时导数为1,所以relu能在正半轴保持梯度的不衰减,缓解梯度消失的问题。

但是随着训练的进行,部分落入硬饱和区,权重无法更新。

softplus激活函数:

relu的平滑版本f(x)=log(1+exp(x))

此外还有的激活函数如下数张图:

等等..............................................................................................

......................................................................................................

输入数据特征相差明显时,tanh效果较好,不明显时,sigmoid较好。二者在使用时需要对输入进行规范化,减少进入平坦区的可能。

relu是比较流行的激活函数,不需要输入量的规范化等...

TensorFlow实现的激活函数可视化的更多相关文章

  1. Tensorboard教程:Tensorflow命名空间与计算图可视化

    Tensorflow命名空间与计算图可视化 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 强烈推荐Tensorflow实战Google深度学习框架 实验平台: Tensorflow ...

  2. 吴裕雄 python 神经网络——TensorFlow 训练过程的可视化 TensorBoard的应用

    #训练过程的可视化 ,TensorBoard的应用 #导入模块并下载数据集 import tensorflow as tf from tensorflow.examples.tutorials.mni ...

  3. tensorflow(3)可视化,日志,调试

    可视化 添加变量 tf.summary.histogram( "weights1", weights1) # 可视化观看变量 还有添加图像和音频. 常量 tf.summary.sc ...

  4. Tensorflow 之模型内容可视化

    TensorFlow模型保存和提取方法 1. tensorflow实现 卷积神经网络CNN:Tensorflow实现(以及对卷积特征的可视化) # 卷积网络的训练数据为MNIST(28*28灰度单色图 ...

  5. 【tensorflow基础】ubuntu-tensorflow可视化工具tensorboard-No dashboards are active for the current data set.

    前言 今天基于tensorflow训练一个检测模型,本应看到训练曲线的,却只见到一个文件events.out.tfevents.1570520647.hostname,后来发现这个文件可以查看训练曲线 ...

  6. TensorFlow(八):tensorboard可视化

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data from tensorflow.c ...

  7. Deep Learning基础--26种神经网络激活函数可视化

    在神经网络中,激活函数决定来自给定输入集的节点的输出,其中非线性激活函数允许网络复制复杂的非线性行为.正如绝大多数神经网络借助某种形式的梯度下降进行优化,激活函数需要是可微分(或者至少是几乎完全可微分 ...

  8. tensorflow中常用激活函数和损失函数

    激活函数 各激活函数曲线对比 常用激活函数: tf.sigmoid() tf.tanh() tf.nn.relu() tf.nn.softplus() tf.nn.softmax() tf.nn.dr ...

  9. Tensorflow机器学习入门——网络可视化TensorBoard

    一.在代码中标记要显示的各种量 tensorboard各函数的作用和用法请参考:https://www.cnblogs.com/lyc-seu/p/8647792.html import tensor ...

随机推荐

  1. 不同CSS技术及其CSS性能

    OOCSS样式:一个主class,包含所有的共同规则,然后一个独特的规则使用其他class .box {padding:25px;border:1px solid #000;border-radius ...

  2. git图片

  3. layui复选框

    效果图 layui复选框,一个主的复选框控制多个从复选框,主复选框和从复选框的颜色不一样 layui复选框的样式,都是在选然后才会有的,所以直接通过css设置就实现不了了.只可以通过js动态设置 ht ...

  4. swift - self的弱引用

    1. weak var weakSelf = self 2. DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()) {[weak se ...

  5. linux命令学习之:vim

    1. 关于Vim vim是我最喜欢的编辑器,也是linux下第二强大的编辑器. 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效. 如果是初学vi,运行一下vimtu ...

  6. linux命令学习之:sed

    sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器.能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上 ...

  7. Mysql在Linux的基本操作文档

    总结了Mysql在Linux下的应用,以下是Linux操作系统操作MySQL常用命令小结,需要的朋友参考下: 1.Mysql服务 # chkconfig --list 列出所有系统服务 # chkco ...

  8. 用Python监听鼠标和键盘事件

    PyHook是一个基于Python的“钩子”库,主要用于监听当前电脑上鼠标和键盘的事件.这个库依赖于另一个Python库PyWin32,如同名字所显示的,PyWin32只能运行在Windows平台,所 ...

  9. Linux 编译时内存不足

    1.编译内核出现问题:No space left on device AS      .tmp_kallsyms1.o .tmp_kallsyms1.S:2: fatal error: when wr ...

  10. web 框架本质 及python三大框架对比

    . 导入Bootstrap.css (开发版3.3.7) . 还要Bootstrap.js,并且还要引入jQuery(). . 栅格系统 . container,row必须包含在container中 ...