大语言模型激活函数绘图

这篇具有很好参考价值的文章主要介绍了大语言模型激活函数绘图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用torch中的激活函数,绘制多个激活函数多一个图中对比展示

引入依赖

import torch
from torch.nn import functional as F
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']

定义单个曲线图的绘制函数

def draw_single_plot(x, y, x_name='x', y_name='y', img_path=''):
    plt.figure(figsize=(5, 2.5))
    plt.plot(x, y)
    plt.xlabel(x_name)
    plt.ylabel(y_name)
    if img_path:
        plt.savefig(img_path)
    plt.grid()
    plt.show()

定义多个曲线图的绘制函数

def draw_multi_plot(value_list, x_name, y_name, title, img_path):
    """
    :param value_list: [x, y, name]
    :return:
    """
    fig, ax = plt.subplots()  # 创建图实例
    for x, y, name in value_list:
        ax.plot(x, y, label=name)

    ax.set_xlabel(x_name)
    ax.set_ylabel(y_name)
    ax.set_title(title)
    ax.legend()
    plt.grid()

    # 是否保存图片
    if img_path:
        plt.savefig(img_path)
        print("成功保存图片")
    plt.show()
    print("success")

定义激活函数生成数据

def get_multi_activate_value():
    activate_list = []
    x_ = torch.arange(-8.0, 8.0, 0.01, requires_grad=True)

    # relu
    y = F.relu(x_)
    y.sum().backward()
    activate_list.append([y, x_.grad, 'relu'])

    # sigmoid
    x_ = torch.arange(-8.0, 8.0, 0.01, requires_grad=True)
    y = F.sigmoid(x_)
    y.sum().backward()
    activate_list.append([y, x_.grad, 'sigmoid'])

    # tanh
    x_ = torch.arange(-8.0, 8.0, 0.01, requires_grad=True)
    y = F.tanh(x_)
    y.sum().backward()
    activate_list.append([y, x_.grad, 'tanh'])

    # swish
    x_ = torch.arange(-8.0, 8.0, 0.01, requires_grad=True)
    beta = 1
    y = x_ * F.sigmoid(x_ * beta)
    y.sum().backward()
    activate_list.append([y, x_.grad, 'swish'])

    # silu
    x_ = torch.arange(-8.0, 8.0, 0.01, requires_grad=True)
    beta = 1
    threshold = 20
    y = F.silu(x_)
    y.sum().backward()
    activate_list.append([y, x_.grad, 'silu'])

    # mish
    x_ = torch.arange(-8.0, 8.0, 0.01, requires_grad=True)
    y = x_ * F.tanh(F.softplus(x_, beta, threshold))
    y.sum().backward()
    activate_list.append([y, x_.grad, 'mish'])

    # gelu
    x_ = torch.arange(-8.0, 8.0, 0.01, requires_grad=True)
    y = F.gelu(x_)
    y.sum().backward()
    activate_list.append([y, x_.grad, 'gelu'])

    # celu
    x_ = torch.arange(-8.0, 8.0, 0.01, requires_grad=True)
    y = F.celu(x_)
    y.sum().backward()
    activate_list.append([y, x_.grad, 'celu'])

    # elu
    x_ = torch.arange(-8.0, 8.0, 0.01, requires_grad=True)
    y = F.elu(x_)
    y.sum().backward()
    activate_list.append([y, x_.grad, 'elu'])
    return x_, activate_list

多激活函数图绘图

	x_, activate_list = get_multi_activate_value()
    act_value_list = [[x_.data.numpy(), obj[0].data.numpy(), obj[2]] for obj in activate_list]
	draw_multi_plot(act_value_list, x_name='x', y_name="激活值", title="激活函数对比", img_path='./imgs/act_multi.png')

多激活函数梯度图绘图

	x_, activate_list = get_multi_activate_value()
    grad_value_list = [[x_.data.numpy(), obj[1].data.numpy(), obj[2]] for obj in activate_list]
    draw_multi_plot(grad_value_list, x_name='x', y_name="梯度值", title="激活函数梯度对比", img_path='./imgs/grad_multi.png')

单个激活函数曲线绘图

	x_, activate_list = get_multi_activate_value()
    # 单个激活函数绘图
    draw_single_plot(x_.data.numpy(), activate_list[0][0].data.numpy(), x_name='x', y_name='y', img_path='')

参考:
torch常见激活函数
常用的激活函数合集文章来源地址https://www.toymoban.com/news/detail-764384.html

到了这里,关于大语言模型激活函数绘图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习——常用激活函数解析与对比

    在神经网络中,激活函数扮演着至关重要的角色。它们的主要目的是引入非线性因素,使得网络能够学习和表示更加复杂的函数映射。以下是激活函数应具备的特点,以及这些特点为何重要的详细解释: 引入非线性有助于优化网络 : 非线性激活函数是神经网络能够解决非线

    2024年04月25日
    浏览(49)
  • 【深度学习】2-1 神经网络 - 激活函数

    将输入信号的总和转换为输出信号,一般称为激活函数(activation function)。激活函数作用在于决定如何来激活输入信号的总和。 对激活函数,一般要求: 非线性 :为提高模型的学习能力,如果是线性,那么再多层都相当于只有两层效果。 可微性 :有时可以弱化,在一些点

    2024年02月09日
    浏览(40)
  • 李沐深度学习-激活函数/多层感知机文档

    multilayer perceptron (MLP):多层感知机(多层神经网络) (hidden layer)隐藏层: 介于输入层和输出层之间的网络层 输入层不涉及计算,如果一个神将网络由三层组成,则多层感知机层数为2 多层感知机中隐藏层和输出层都是全连接 隐藏层的输出(也叫隐藏层变量或隐藏变量) 隐藏层单元

    2024年01月24日
    浏览(37)
  • 现代C++中的从头开始深度学习:激活函数

            让我们通过在C++中实现激活函数来获得乐趣。 人工神经网络是生物启发模型的一个例子。在人工神经网络中,称为神经元的处理单元被分组在计算层中,通常用于执行模式识别任务。         在这个模型中,我们通常更喜欢控制每一层的输出以服从一些约束。

    2024年02月15日
    浏览(37)
  • [log_softmax]——深度学习中的一种激活函数

    [log_softmax]——深度学习中的一种激活函数 随着人工智能技术的发展,深度学习已经成为了众多领域的热点研究方向。在深度学习中,激活函数是非常重要的组成部分之一,而[log_softmax]就是其中的一种。本文将介绍什么是[log_softmax],以及它在深度学习中的应用。 首先,我们

    2024年02月13日
    浏览(49)
  • 【一起撸个深度学习框架】6 折与曲的相会——激活函数

    CSDN个人主页:清风莫追 欢迎关注本专栏:《一起撸个DL框架》 GitHub获取源码:https://github.com/flying-forever/OurDL blibli视频合集:https://space.bilibili.com/3493285974772098/channel/series 在上一节,我们实现了一个“自适应线性单元”,不断地将一个一次函数的输入和输出“喂”给它,它就

    2024年02月05日
    浏览(42)
  • [深度学习入门]什么是神经网络?[神经网络的架构、工作、激活函数]

      在大多数资料中,神经网络都被描述成某种 正向传播的矩阵乘法 。而本篇博文 通过将神经网络描述为某种计算单元 ,以一种更加简单易懂的方式介绍神经网络的功能及应用。   广义上讲,神经网络就是要 在输入数据中找寻某种规律 ,就像这个经典的例子: 手写数

    2024年02月17日
    浏览(51)
  • Python学习笔记(11-2):matplotlib绘图——图形绘制函数

    因为部分图形绘制函数共用了一套参数体系,在颜色、曲线形状等部分的使用方式也是一致的。所以,在讲解各类图形绘制之前,我们整体性地对各类通用参数进行一个整理,并在此基础上对于颜色(color)、数据点标记(marker)和曲线形式(linestyle)等几个通用参数进行相

    2024年02月06日
    浏览(58)
  • Python 华为面试手撕代码 + 八股文,机器学习参数调节,损失函数,激活函数,线程、进程和协程

    一、手撕代码:力扣原题905 二、八股文部分:有点紧张,忘了好多东西 1.深度学习模型优化的方法有哪些? 深度学习模型的优化策略包括以下几个方面: (1)选择合适的激活函数:激活函数对模型的表达能力和收敛速度有很大影响,常用的激活函数包括ReLU、Sigmoid、Tanh等。

    2024年02月09日
    浏览(44)
  • 【人工智能】神经网络、M-P_神经元模型、激活函数、神经网络结构、学习网络参数、代价定义、总代价

    ⚫ 输入:来自其它n个神经元传递过来的输入信号 ⚫ 处理:输入信号通过带权重的连接进行传递, 神经元接受到总输入值将与神经元的阈值进行比较 ⚫ 输出:通过激活函数的处理以得到输出

    2024年02月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包