📜  Python| TensorFlow nn.softplus()

📅  最后修改于: 2022-05-13 01:54:39.755000             🧑  作者: Mango

Python| TensorFlow nn.softplus()

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

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

激活函数是应用于神经网络层的输出的函数,然后将其作为输入传递给下一层。激活函数是神经网络的重要组成部分,因为它们提供非线性,没有它,神经网络会简化为单纯的逻辑回归模型。许多激活函数之一是 Softplus函数,定义为f(x) = ln(1 + e^x) .

传统的激活函数如 sigmoid 和双曲正切有上下界,而 softplus函数的输出范围为 (0, ∞)。 softplus函数的导数是f'(x) = 1 / (1 + e^{-x}) ,也就是 sigmoid函数。 softplus函数与 Rectified Linear Unit (ReLU)函数非常相似,主要区别在于 softplus函数在 x = 0 处的可微性。Zheng 等人的研究论文“Improving deep neural networks using softplus units”。 (2015) 表明,与 ReLU函数相比,softplus 为深度神经网络提供了更多的稳定性和性能。然而,通常首选 ReLU,因为它易于计算及其导数。激活函数及其导数的计算是神经网络中的常见操作,与 softplus函数相比,ReLU 提供了更快的前向和后向传播。

函数nn.softplus() [别名math.softplus ] 为 Tensorflow 中的 softplus 提供支持。

代码#1:

Python3
# 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 softplus function and
# storing the result in 'b'
b = tf.nn.softplus(a, name ='softplus')
  
# 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))


Python3
# Importing the Tensorflow library
import tensorflow as tf
  
# Importing the NumPy library
import numpy as np
  
# Importing the matplotlib.pyplot 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 softplus function and
# storing the result in 'b'
b = tf.nn.softplus(a, name ='softplus')
  
# 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.softplus") 
    plt.xlabel("X") 
    plt.ylabel("Y") 
  
    plt.show()


输出:

Input type: Tensor("Const:0", shape=(6, ), dtype=float32)
Input: [ 1.        -0.5        3.4000001 -2.0999999  0.        -6.5      ]
Return type: Tensor("softplus:0", shape=(6, ), dtype=float32)
Output: [  1.31326163e+00   4.74076986e-01   3.43282866e+00   1.15519524e-01
   6.93147182e-01   1.50233845e-03]

代码 #2:可视化

Python3

# Importing the Tensorflow library
import tensorflow as tf
  
# Importing the NumPy library
import numpy as np
  
# Importing the matplotlib.pyplot 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 softplus function and
# storing the result in 'b'
b = tf.nn.softplus(a, name ='softplus')
  
# 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.softplus") 
    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.00671535  0.01366993  0.02772767  0.05584391  0.11093221  0.21482992
  0.39846846  0.69314718  1.11275418  1.64340135  2.25378936  2.91298677
  3.59915624  4.29938421  5.00671535]