当前位置: 首页 > news >正文

swiglu 激活函数学习笔记

几种激活函数函数对比:

https://zhuanlan.zhihu.com/p/696571171

pytorch 实现 可视化代码:

import torch
import torch.nn.functional as F
import numpy as np
import cv2def swiglu(x):x1, x2 = x.chunk(2, dim=-1)return F.silu(x1) * x2x_vals = torch.linspace(-5, 5, steps=300).unsqueeze(1)
x_input = torch.cat([x_vals, x_vals], dim=1)
y_vals = swiglu(x_input).squeeze().detach().numpy()w, h = 640, 480
img = np.ones((h, w, 3), dtype=np.uint8) * 255x_raw = x_vals.squeeze().numpy()
x_plot = ((x_raw + 5) / 10) * (w - 40) + 20
y_plot = ((y_vals - y_vals.min()) / (y_vals.max() - y_vals.min())) * (h - 40)
y_plot = h - y_plot - 20cv2.line(img, (20, h - 20), (w - 20, h - 20), (0, 0, 0), 2)
cv2.line(img, (20, 20), (20, h - 20), (0, 0, 0), 2)for i in range(-5, 6):x_pos = int(((i + 5) / 10) * (w - 40) + 20)cv2.line(img, (x_pos, h - 25), (x_pos, h - 15), (0, 0, 0), 1)cv2.putText(img, str(i), (x_pos - 10, h - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.4, (0, 0, 0), 1)num_yticks = 5
for i in range(num_yticks + 1):y_val = y_vals.min() + (y_vals.max() - y_vals.min()) * i / num_yticksy_pos = int(h - ((i / num_yticks) * (h - 40)) - 20)cv2.line(img, (15, y_pos), (25, y_pos), (0, 0, 0), 1)cv2.putText(img, f"{y_val:.2f}", (0, y_pos + 5), cv2.FONT_HERSHEY_SIMPLEX, 0.4, (0, 0, 0), 1)for i in range(1, len(x_plot)):pt1 = (int(x_plot[i - 1]), int(y_plot[i - 1]))pt2 = (int(x_plot[i]), int(y_plot[i]))cv2.line(img, pt1, pt2, (255, 0, 0), 2)cv2.putText(img, "SwiGLU Activation", (30, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (50, 50, 50), 2)cv2.imshow("SwiGLU", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

http://www.lryc.cn/news/583617.html

相关文章:

  • Java垃圾收集机制Test1
  • [Python] 区分方法 函数
  • 深度解析:将SymPy符号表达式转化为高效NumPy计算函数的通用解决方案
  • Git系列--3.分支管理
  • Python管理咨询数据可视化实战:收入分布与顾问利用率双轴对比图表生成脚本
  • 零基础上手 Amazon DynamoDB:NoSQL 数据库服务的核心概念与快速搭建指南
  • SQL Server 2008R2 到 2012 数据库迁移完整指南
  • Redis-哨兵选取主节点流程
  • CVE-2025-32463复现
  • AI进化论03:达特茅斯会议——AI的“开宗立派”大会
  • SpringBoot实现MCP
  • Git版本控制完全指南:从入门到实战(简单版)
  • 【LeetCode207.课程表】以及变式
  • Flutter基础(前端教程⑨-图片)
  • 「macOS 系统字体收集器 (C++17 实现)」
  • JavaScript对象的深度拷贝
  • 全球发展币GDEV:从中国出发,走向全球的数字发展合作蓝图
  • 【RK3568+PG2L50H开发板实验例程】FPGA部分 | DDR3 读写实验例程
  • 【学习笔记】OkHttp源码架构解析:从设计模式到核心实现
  • 【Java】【力扣】【字节高频】3.无重复字符的最长字串
  • 便捷的电脑自动关机辅助工具
  • Deepseek搭建智能体个人知识库
  • yolo8实现目标检测
  • 操作系统核心技术剖析:从Android驱动模型到鸿蒙微内核的国产化实践
  • Day 56
  • EPLAN 电气制图(六):结构盒与设备管理器核心概念(基础知识选看)
  • Linux操作系统之进程间通信:管道概念
  • EF提高性能(查询禁用追踪)(关闭延迟加载)
  • 神经网络初步学习3——数据与损失
  • 如何选择时序数据库:关键因素与实用指南