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()
posted @   小小新一枚  阅读(13)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示