Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Paddle
  • Issue
  • #2239

P
Paddle
  • 项目概览

PaddlePaddle / Paddle
大约 2 年 前同步成功

通知 2325
Star 20933
Fork 5424
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 1423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
Paddle
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 1,423
    • Issue 1,423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
    • 合并请求 543
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板
已关闭
开放中
Opened 5月 23, 2017 by saxon_zh@saxon_zhGuest

PaddlePaddle不支持对向量进行2范数归一化

Created by: comeonfox

有些场景下需要对Layer的输出向量做2范数归一化,PaddlePaddle当前似乎不能直接支持此操作。

考虑间接的使用其他Layer来完成此操作:

    squared_l2_norm = mixed_layer(inputs = dot_mul_operator(to_be_normed_vec, to_be_normed_vec))
    # 开平方,square_root_power 是形如 [0.5] 的data_layer
    l2_norm = power_layer(inputs = [square_root_power, squared_l2_norm])
    # 求倒数,reciprocal_power是形如[-1.0]的data_layer
    reciprocal_l2_norm = power_layer(inputs = [reciprocal_power, l2_norm])
    # 给原始向量的每一位都乘以 1/2-norm
    normalized_vec = scaling_layer(inputs = [reciprocal_l2_norm, to_be_normed_vec])

如上是我能想到的一种做2范数归一化的方法,但还存在3个问题:

  • 当前PaddlePaddle的 dot_mul_operator 只做了向量的element-wise product,但没有做最后的加法;
  • 当前power_layer 只支持cpu,在gpu上没有实现。
  • 上边的方法需要两次通过data_layer传入power_layer所需的指数,并且在计算power(0.5)之前需要给被开方的向量添加一个很小的偏移量防止出现负数,这是一个比较容易被忽略的地方。

PaddlePaddle是否可以直接支持2范数归一化,或者提供完整的 dot_product 操作来间接支持?或者是否有其它的方法可以实现2范数归一化?

指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: paddlepaddle/Paddle#2239
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7