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

算法面试准备 - 手撕系列第一期 - Softmax

算法面试准备 - 手撕系列第一期 - Softmax

目录

  • 算法面试准备 - 手撕系列第一期 - Softmax
    • Softmax原理图
    • Softmax实现代码 - 复杂版和简单版本(推荐简单版本)
    • 参考

Softmax原理图

在这里插入图片描述

Softmax原理图

Softmax实现代码 - 复杂版和简单版本(推荐简单版本)

  • 方法一:循环计算
import torch


def softmax(X): # X为Tensor向量,大小为(batch_size,len)
    # 方法一,复杂版本
    for i in range(X.size()[0]):
        # 取出某行的Tensor
        # 为了防止数据的上下,先把数据减去最大值
        X[i]-=max(X[i].clone())
        X[i]=torch.exp(X[i])
        X[i]/=X[i].sum()
    return X

   

if __name__=='__main__':
    X=[[i for i in range(4)] ,[j for j in range(1,5) ],[5,4,3,2]]

    X=torch.tensor(X,dtype=torch.float)
    print(softmax(X))
  • 方法二:广播利用torch函数
import torch


def softmax(X): # X为Tensor向量,大小为(batch_size,len)
    # 方法二:简单版本

    # 增加一步,防止数据上下溢出
    # (batch_size, 1)
    X_max,X_index=torch.max(X,dim=1,keepdim=True) # 让其保持二维
    X -= X_max
    # 取exp
    X_exp = torch.exp(X)
    # 求和从1维求和得到的是(batch_size,1)
    X_sum=X_exp.sum(dim=1,keepdim=True)
    return X_exp/X_sum

if __name__=='__main__':
    X=[[i for i in range(4)] ,[j for j in range(1,5) ],[5,4,3,2]]

    X=torch.tensor(X,dtype=torch.float)
    print(softmax(X))

参考

小红书资料:哲学专业转算法岗|手撕softmax - 小红书


http://www.kler.cn/a/505739.html

相关文章:

  • WPF-01理解XAML
  • 不用PLC和板卡,一台电脑就可以控制伺服
  • Vue.js 动态组件与异步组件
  • 字典和 JSON 文本的格式区别
  • 【漫话机器学习系列】044.热点对特性的影响(Effect Of One Hot On Feature Importance)
  • Rust 正则表达式完全指南
  • zerox - 使用视觉模型将 PDF 转换为 Markdown
  • 机器学习中的凸函数和梯度下降法
  • 海康MV-EB435i立体相机SDK安装(ROS 2)
  • 瑞芯微 RK 系列 RK3588 使用 ffmpeg-rockchip 实现 MPP 视频硬件编解码-代码版
  • 设计模式学习手册(四)(原型模式)
  • C++—17、C++ 中的类和结构体的区别
  • 《计算机网络》课后探研题书面报告_了解PPPoE协议
  • 基于Springboot: 宠物小程序开发笔记(上)
  • Unity2017 控制.abc格式的三维动画播放
  • Kylin Linux V10 替换安装源,并在服务器上启用 EPEL 仓库
  • Python 替换excel 单元格内容
  • Pyinstaller打包
  • Python与Excel:开启自动化办公新时代
  • AudioGPT全新的 音频内容理解与生成系统