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()
目录
相关文章
|
2天前
|
机器学习/深度学习 PyTorch 算法框架/工具
PyTorch基础之激活函数模块中Sigmoid、Tanh、ReLU、LeakyReLU函数讲解(附源码)
PyTorch基础之激活函数模块中Sigmoid、Tanh、ReLU、LeakyReLU函数讲解(附源码)
78 0
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch中nn.ReLU()和F.relu()有什么区别?
pytorch中nn.ReLU()和F.relu()有什么区别?
380 0
|
9月前
|
机器学习/深度学习 算法 PyTorch
Softmax回归(Softmax Regression)
Softmax回归(Softmax Regression),也称为多类别逻辑回归或多项式回归,是一种用于解决多类别分类问题的统计学习方法。它是逻辑回归在多类别情况下的扩展。
151 3
|
9月前
|
机器学习/深度学习 PyTorch 算法框架/工具
Linear Model 线性模型
Linear Model 线性模型
50 0
|
11月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch】nn.ReLU()与F.relu()的区别
【PyTorch】nn.ReLU()与F.relu()的区别
104 0
|
11月前
|
机器学习/深度学习 PyTorch 算法框架/工具
pytorch实现基本的logistic和softmax回归实验(手动+torch)
pytorch实现基本的logistic和softmax回归实验(手动+torch)
164 0
|
机器学习/深度学习 人工智能 自然语言处理
【Pytorch神经网络理论篇】 07 激活函数+Sigmoid+tanh+ReLU+Swish+Mish+GELU
对于分类任务来说,如果仅仅给出分类的结果,在某些场景下,提供的信息可能并不充足,这就会带来一定的局限。因此,我们建立分类模型,不仅应该能够进行分类,同时,也应该能够提供样本属于该类别的概率。这在现实中是非常实用的。例如,某人患病的概率,明天下雨概率等。因此,我们需要将z的值转换为概率值,逻辑回归使用sigmoid函数来实现转换。
457 0
|
机器学习/深度学习 资源调度
深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
深度学习基础入门篇[四]:激活函数介绍:tanh、sigmoid、ReLU、PReLU、ELU、softplus、softmax、swish等
|
机器学习/深度学习
深度学习入门基础CNN系列——池化(Pooling)和Sigmoid、ReLU激活函数
池化是使用某一位置的相邻输出的总体统计特征代替网络在该位置的输出,其好处是当输入数据做出少量平移时,经过池化函数后的大多数输出还能保持不变。比如:当识别一张图像是否是人脸时,我们需要知道人脸左边有一只眼睛,右边也有一只眼睛,而不需要知道眼睛的精确位置,这时候通过池化某一片区域的像素点来得到总体统计特征会显得很有用。由于池化之后特征图会变得更小,如果后面连接的是全连接层,能有效的减小神经元的个数,节省存储空间并提高计算效率。
338 1
深度学习入门基础CNN系列——池化(Pooling)和Sigmoid、ReLU激活函数
|
PyTorch 算法框架/工具 数据格式