激活函數

  激活函數主要做用:加入非線性python

# -*- coding: UTF-8 -*-

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

# 建立輸入數據
x = np.linspace(-7, 7, 180)  # (-7, 7) 之間等間隔的 180 個點


# 激活函數的原始實現
def sigmoid(inputs):
    y = [1 / float(1 + np.exp(-x)) for x in inputs]
    return y


def relu(inputs):
    y = [x * (x > 0) for x in inputs]
    return y


def tanh(inputs):
    y = [(np.exp(x) - np.exp(-x)) / float(np.exp(x) - np.exp(-x)) for x in inputs]
    return y


def softplus(inputs):
    y = [np.log(1 + np.exp(x)) for x in inputs]
    return y


# 通過 TensorFlow 的激活函數處理的各個 Y 值
y_sigmoid = tf.nn.sigmoid(x)#能夠在tensorflow官網搜索tf.nn,查看各個激活函數
y_relu = tf.nn.relu(x)
y_tanh = tf.nn.tanh(x)
y_softplus = tf.nn.softplus(x)

# 建立會話
sess = tf.Session()

# 運行
y_sigmoid, y_relu, y_tanh, y_softplus = sess.run([y_sigmoid, y_relu, y_tanh, y_softplus])

# 建立各個激活函數的圖像
plt.figure(1, figsize=(8, 6))

plt.subplot(221)
plt.plot(x, y_sigmoid, c='red', label='Sigmoid')
plt.ylim((-0.2, 1.2))
plt.legend(loc='best')

plt.subplot(222)
plt.plot(x, y_relu, c='red', label='Relu')
plt.ylim((-1, 6))
plt.legend(loc='best')

plt.subplot(223)
plt.plot(x, y_tanh, c='red', label='Tanh')
plt.ylim((-1.3, 1.3))
plt.legend(loc='best')

plt.subplot(224)
plt.plot(x, y_softplus, c='red', label='Softplus')
plt.ylim((-1, 6))
plt.legend(loc='best')

# 顯示圖像
plt.show()

# 關閉會話
sess.close()
相關文章
相關標籤/搜索