书上的代码:

 # 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. dedecms 5.7sp2在用type标签时出现调用无效问题

    {dede:type typeid='1'}栏目{/dede:type}   无效 和 {dede:type typeid='1'}[field:typename/]{/dede:type}   有效 ...

  2. NumPy 高级索引

    NumPy 高级索引 NumPy 比一般的 Python 序列提供更多的索引方式.除了之前看到的用整数和切片的索引外,数组可以由整数数组索引.布尔索引及花式索引. 整数数组索引 以下实例获取数组中(0 ...

  3. C++旅馆问题。

    有总钱数 有每房每天住需要多少钱 问最少可以住几天 最后输入的是钱数.前边输入没个住所每天多少钱 例如: 1001 1002 1003 1004 1000 -1 100 500 600 最少一天,最多 ...

  4. Win7系统不能记忆窗口大小与位置解决方法

    似在某此系统优化后,无意发现系统在注销或重启后,打开资源管理器,它以默认大小及位置显示. 对于习惯自定义操作来说,甚为不便,遍找方法未有奏效者,但总萦绕心头,时时记起. 今日再找问题解决方法,难兄难弟 ...

  5. redis集群 与spring-data-redis 集成

    所遇到的坑:必须使用如下的jedis 版本与spring-data-redis 版本,才能够达到集群效果 .1.7版本以前是不支持集群的 <dependency> <groupId& ...

  6. Django配置后台xadmin管理界面

    Django配置后台xadmin管理界面 python版本3.6.5 Django版本1.10.8(刚开始是2.1.5,由于各种错误,改成了低版本) 1.xadmin的安装,下载地址https://g ...

  7. AnguarJS——第10章 路由

    第10章 路由 一个应用是由若个视图组合而成的,根据不同的业务逻辑展示给用户不同的视图,路由则是实现这一功能的关键. 10.1 SPA SPA(Single Page Application)指的是通 ...

  8. Volley框架原理

    Volley有如下优点: 1. 自动调度网络请求 2. 多并发请求 (源于开了多个线程)3. 本地Cache自动缓存网络请求结果 4. 支持设置请求优先级 5. 支持取消单个请求或者取消所有请求 6. ...

  9. 关于AndroidStudio的打包数字签名以及多渠道发布

    AndroidStudio右侧Gradle里边的build(工程下的)是可以生成未签名的debug和release的apk包生成前可以先clean一下工程 app下的build.gradle里边的 l ...

  10. vm参数配置的理解

    -denv=dev表示将服务器的级别 设置为开发环境 所有错误的内容都会打印在控制台上 //The-Denv = dev statement creates a system property nam ...