plt画图(sigmoid、relu、softmax)

简介: plt画图(sigmoid、relu、softmax)

代码(总)

# -*- coding:utf-8 -*-
from matplotlib import pyplot as plt
import numpy as np
import mpl_toolkits.axisartist as axisartist
from matplotlib.pyplot import MultipleLocator
def sigmoid(x):
    return 1. / (1 + np.exp(-x))
def tanh(x):
    return (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
def relu(x):
    return np.where(x < 0, 0, x)
def prelu(x):
    return np.where(x < 0, 0.5 * x, x)
def sigmoid(x):
    #直接返回sigmoid函数
    return 1. / (1. + np.exp(-x))
def softmax(x):
    return np.exp(x)/np.sum(np.exp(x), axis=0)
def plot_sigmoid():
    # param:起点,终点,间距
    x = np.arange(-10, 10, 0.5)
    print(x)
    y = sigmoid(x)
    #plt.plot(x, label='sigmoid')  # 添加label设置图例名称
    #plt.title("sigmoid",fontsize=20)
    plt.grid()
    plt.plot(x, y,label='sigmoid',color='r')
    plt.legend(fontsize=20)
    plt.xlabel("x",fontsize=20)
    plt.ylabel("f(x)",fontsize=20)
    # 设置刻度字体大小
    plt.xticks(fontsize=20)
    plt.yticks(fontsize=20)
    plt.xlim([-10, 10])
    plt.ylim([0, 1])
    x_major_locator = MultipleLocator(5)
    # 把x轴的刻度间隔设置为1,并存在变量里
    y_major_locator = MultipleLocator(0.2)
    # 把y轴的刻度间隔设置为10,并存在变量里
    ax = plt.gca()
    # ax为两条坐标轴的实例
    ax.xaxis.set_major_locator(x_major_locator)
    # 把x轴的主刻度设置为1的倍数
    ax.yaxis.set_major_locator(y_major_locator)
    # 把y轴的主刻度设置为10的倍数
    plt.show()
def plot_tanh():
    x = np.arange(-10, 10, 0.1)
    y = tanh(x)
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.spines['top'].set_color('none')
    ax.spines['right'].set_color('none')
    # ax.spines['bottom'].set_color('none')
    # ax.spines['left'].set_color('none')
    ax.spines['left'].set_position(('data', 0))
    ax.spines['bottom'].set_position(('data', 0))
    ax.plot(x, y)
    plt.xlim([-10.05, 10.05])
    plt.ylim([-1.02, 1.02])
    ax.set_yticks([-1.0, -0.5, 0.5, 1.0])
    ax.set_xticks([-10, -5, 5, 10])
    plt.tight_layout()
    plt.savefig("tanh.png")
    plt.show()
def plot_relu():
    x = np.arange(-10, 10, 0.1)
    y = relu(x)
    # fig = plt.figure()
    # ax = fig.add_subplot(111)
    # ax.spines['top'].set_color('none')
    # ax.spines['right'].set_color('none')
    # # ax.spines['bottom'].set_color('none')
    # # ax.spines['left'].set_color('none')
    # ax.spines['left'].set_position(('data', 0))
    # ax.plot(x, y)
    # plt.xlim([-10.05, 10.05])
    # plt.ylim([0, 10.02])
    # ax.set_yticks([2, 4, 6, 8, 10])
    # plt.tight_layout()
    # plt.savefig("relu.png")
    #plt.title("relu")
    plt.grid()
    plt.plot(x, y, label='relu', color='r')
    plt.legend(fontsize=20)
    plt.xlabel("x",fontsize=20)
    plt.ylabel("f(x)",fontsize=20)
    # 设置刻度字体大小
    plt.xticks(fontsize=20)
    plt.yticks(fontsize=20)
    plt.xlim([-10, 10])
    plt.ylim([0, 10])
    x_major_locator = MultipleLocator(5)
    # 把x轴的刻度间隔设置为1,并存在变量里
    y_major_locator = MultipleLocator(5)
    # 把y轴的刻度间隔设置为10,并存在变量里
    ax = plt.gca()
    # ax为两条坐标轴的实例
    ax.xaxis.set_major_locator(x_major_locator)
    # 把x轴的主刻度设置为1的倍数
    ax.yaxis.set_major_locator(y_major_locator)
    # 把y轴的主刻度设置为10的倍数
    plt.show()
def plot_prelu():
    x = np.arange(-10, 10, 0.1)
    y = prelu(x)
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.spines['top'].set_color('none')
    ax.spines['right'].set_color('none')
    # ax.spines['bottom'].set_color('none')
    # ax.spines['left'].set_color('none')
    ax.spines['left'].set_position(('data', 0))
    ax.spines['bottom'].set_position(('data', 0))
    ax.plot(x, y)
    plt.xticks([])
    plt.yticks([])
    plt.tight_layout()
    plt.savefig("prelu.png")
    plt.show()
def plot_softmax():
    x = np.arange(-10, 10, 0.1)
    y = softmax(x)
    # fig = plt.figure()
    # ax = fig.add_subplot(111)
    # ax.spines['top'].set_color('none')
    # ax.spines['right'].set_color('none')
    # # ax.spines['bottom'].set_color('none')
    # # ax.spines['left'].set_color('none')
    # ax.spines['left'].set_position(('data', 0))
    # ax.plot(x, y)
    # plt.xlim([-10.05, 10.05])
    # plt.ylim([0, 10.02])
    # ax.set_yticks([2, 4, 6, 8, 10])
    # plt.tight_layout()
    # plt.savefig("relu.png")
    #plt.title("softmax")
    plt.grid()
    plt.plot(x, y, label='softmax', color='r')
    plt.legend(fontsize=20)
    plt.xlabel("x",fontsize=20)
    plt.ylabel("f(x)",fontsize=20)
    plt.xlim([-10, 10])
    plt.ylim([0, 0.1])
    # 设置刻度字体大小
    plt.xticks(fontsize=20)
    plt.yticks(fontsize=20)
    x_major_locator = MultipleLocator(5)
    # 把x轴的刻度间隔设置为1,并存在变量里
    y_major_locator = MultipleLocator(0.02)
    # 把y轴的刻度间隔设置为10,并存在变量里
    ax = plt.gca()
    # ax为两条坐标轴的实例
    ax.xaxis.set_major_locator(x_major_locator)
    # 把x轴的主刻度设置为1的倍数
    ax.yaxis.set_major_locator(y_major_locator)
    # 把y轴的主刻度设置为10的倍数
    plt.show()
if __name__ == "__main__":
    #plot_sigmoid()
    #plot_tanh()
    #plot_relu()
    plot_softmax()
    #plot_prelu()
目录
相关文章
|
7月前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch基础之激活函数模块中Sigmoid、Tanh、ReLU、LeakyReLU函数讲解(附源码)
PyTorch基础之激活函数模块中Sigmoid、Tanh、ReLU、LeakyReLU函数讲解(附源码)
330 0
|
2月前
|
机器学习/深度学习 编解码
深度学习笔记(三):神经网络之九种激活函数Sigmoid、tanh、ReLU、ReLU6、Leaky Relu、ELU、Swish、Mish、Softmax详解
本文介绍了九种常用的神经网络激活函数:Sigmoid、tanh、ReLU、ReLU6、Leaky ReLU、ELU、Swish、Mish和Softmax,包括它们的定义、图像、优缺点以及在深度学习中的应用和代码实现。
172 0
深度学习笔记(三):神经网络之九种激活函数Sigmoid、tanh、ReLU、ReLU6、Leaky Relu、ELU、Swish、Mish、Softmax详解
|
2月前
|
机器学习/深度学习 资源调度 自然语言处理
Softmax激活函数介绍
【10月更文挑战第2天】
109 0
|
2月前
|
机器学习/深度学习 数据可视化 算法
激活函数与神经网络------带你迅速了解sigmoid,tanh,ReLU等激活函数!!!
激活函数与神经网络------带你迅速了解sigmoid,tanh,ReLU等激活函数!!!
WK
|
3月前
|
机器学习/深度学习
实际应用场景下Tanh和Sigmoid哪个更常用
在实际应用中,Tanh和Sigmoid函数的选择受多种因素影响。Sigmoid函数常用于二分类问题的输出层,因其输出范围在(0, 1)内,适合表示概率;但在隐藏层中较少使用,因为它会导致梯度消失和非零中心化问题。Tanh函数输出范围在(-1, 1),以0为中心,适用于隐藏层,有助于加快收敛速度,但也存在梯度消失问题。随着深度学习技术的发展,ReLU及其变体因计算效率高和梯度消失问题较轻而逐渐成为主流选择。因此,选择激活函数需综合考虑任务需求和网络结构特点。
WK
98 2
WK
|
3月前
|
机器学习/深度学习 算法
什么是Sigmoid函数
Sigmoid函数是在机器学习及统计学中广泛应用的一种数学模型,尤其适用于逻辑回归与神经网络中的激活场景。该函数能将任意实数映射至(0,1)区间,象征概率或事件发生可能性。其S型曲线特性使其在二分类问题中表现出色,同时具备连续平滑与中心对称的特点,利于采用如梯度下降等优化算法。然而,Sigmoid函数在极端输入值下会出现梯度消失的问题,影响模型训练效果。尽管有此局限性,它在特定应用场景中依然重要,例如需要输出概率值的情况。
WK
119 0
|
4月前
|
机器学习/深度学习
Softmax 和 ReLU 函数的效用
【8月更文挑战第23天】
300 0
|
6月前
|
机器学习/深度学习 Python
tanh函数
本文探讨了高等数学中的tanh函数,即双曲正切函数,其定义为 $\tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$,导数为 $1 - \tanh^2(x)$。tanh函数广泛适用于各类场景,并在神经网络中有重要应用。提供的Python代码绘制了tanh函数及其导数的图像。
186 1
|
7月前
|
开发工具 Python
|
6月前
|
机器学习/深度学习 Python
sigmoid函数
本文探讨了高等数学中的sigmoid函数,它在神经网络中的应用,特别是在二分类问题的输出层。sigmoid函数公式为 $\frac{1}{1 + e^{-x}}$,其导数为 $sigmoid(x)\cdot(1-sigmoid(x))$。文章还展示了sigmoid函数的图像,并提供了一个使用Python绘制函数及其导数的代码示例。
275 2