当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Tensorflow nn.tanh()用法及代码示例


Tensorflow是Google开发的开源机器学习库。它的应用之一是开发深度神经网络。

模块tensorflow.nn为许多基本的神经网络操作提供支持。

许多激活函数之一是双曲正切函数(也称为tanh),其定义为tanh(x) = (e^z - e^{-z}) / (e^z + e^{-z})


双曲正切函数的输出范围为(-1,1),因此将强负输入映射为负值。与S型函数不同,只有near-zero值映射到near-zero输出,这在某种程度上解决了“vanishing gradients”问题。双曲正切函数在每个点都是微分的,其导数为1 - tanh^2(x)。由于表达式包含tanh函数,因此可以重用其值以使向后传播更快。

尽管与S形函数相比,网络获得“stuck”的机会较低,但是双曲正切函数仍然受到“vanishing gradients”的影响。整流线性单元(ReLU)可用于克服此问题。

函数tf.nn.tanh()[别名tf.tanh]为Tensorflow中的双曲正切函数提供支持。

用法:tf.nn.tanh(x, name=None) or tf.tanh(x, name=None)

参数:
x:以下任何类型的张量:float16,float32,double,complex64或complex128。
name(可选):操作的名称。

Return :与x具有相同类型的张量。

代码1:

# Importing the Tensorflow library 
import tensorflow as tf 
  
# A constant vector of size 6 
a = tf.constant([1.0, -0.5, 3.4, -2.1, 0.0, -6.5], dtype = tf.float32) 
  
# Applying the tanh function and 
# storing the result in 'b' 
b = tf.nn.tanh(a, name ='tanh') 
  
# Initiating a Tensorflow session 
with tf.Session() as sess:
    print('Input type:', a) 
    print('Input:', sess.run(a)) 
    print('Return type:', b) 
    print('Output:', sess.run(b))

输出:

Input type:Tensor("Const_2:0", shape=(6, ), dtype=float32)
Input:[ 1.        -0.5        3.4000001 -2.0999999  0.        -6.5      ]
Return type:Tensor("tanh_2:0", shape=(6, ), dtype=float32)
Output:[ 0.76159418 -0.46211717  0.9977749  -0.97045201  0.         -0.99999547]

代码2:可视化

# Importing the Tensorflow library 
import tensorflow as tf 
  
# Importing the NumPy library 
import numpy as np 
  
# Importing the matplotlib.pylot function 
import matplotlib.pyplot as plt 
  
# A vector of size 15 with values from -5 to 5 
a = np.linspace(-5, 5, 15) 
  
# Applying the tanh function and 
# storing the result in 'b' 
b = tf.nn.tanh(a, name ='tanh') 
  
# Initiating a Tensorflow session 
with tf.Session() as sess:
    print('Input:', a) 
    print('Output:', sess.run(b)) 
    plt.plot(a, sess.run(b), color = 'red', marker = "o")  
    plt.title("tensorflow.nn.tanh")  
    plt.xlabel("X")  
    plt.ylabel("Y")  
  
    plt.show()

输出:

Input:[-5.         -4.28571429 -3.57142857 -2.85714286 -2.14285714 -1.42857143
 -0.71428571  0.          0.71428571  1.42857143  2.14285714  2.85714286
  3.57142857  4.28571429  5.        ]
Output:[-0.9999092  -0.99962119 -0.99842027 -0.99342468 -0.97284617 -0.89137347
 -0.61335726  0.          0.61335726  0.89137347  0.97284617  0.99342468
  0.99842027  0.99962119  0.9999092 ]



相关用法


注:本文由纯净天空筛选整理自vaibhav29498大神的英文原创作品 Python | Tensorflow nn.tanh()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。