From e61b3460fff276c9b85e3f820b807af5edf4649c Mon Sep 17 00:00:00 2001 From: PuQing Date: Fri, 12 Jul 2024 00:28:33 +0800 Subject: [PATCH 1/2] add weight and density options for histogram --- docs/api/paddle/histogram_cn.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/api/paddle/histogram_cn.rst b/docs/api/paddle/histogram_cn.rst index 8d0bce79468..24a68a70796 100644 --- a/docs/api/paddle/histogram_cn.rst +++ b/docs/api/paddle/histogram_cn.rst @@ -3,7 +3,7 @@ histogram ------------------------------- -.. py:function:: paddle.histogram(input, bins=100, min=0, max=0, name=None) +.. py:function:: paddle.histogram(input, bins=100, min=0, max=0, weight=None, density=False, name=None) 计算输入 Tensor 的直方图。以 min 和 max 为 range 边界,将其均分成 bins 个直条,然后将排序好的数据划分到各个直条(bins)中。如果 min 和 max 都为 0,则利用数据中的最大最小值作为边界。 @@ -14,11 +14,13 @@ histogram - **bins** (int,可选) - 直方图 bins(直条)的个数,默认为 100。 - **min** (int,可选) - range 的下边界(包含),默认为 0。 - **max** (int,可选) - range 的上边界(包含),默认为 0。 + - **weight** (Tensor,可选) - 权重 Tensor,维度和 input 相同。如果提供,输入中的每个值都将以对应的权重值进行计数(而不是 1)。默认为 None。 + - **density** (bool,可选) - 如果为 False,则返回直方图中每个 bin 的计数。如果为 True,则返回直方图中每个 bin 经过归一化后的概率密度函数的值,使得直方图的积分(即所有 bin 的面积)等于 1。默认为 False。 - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。 返回 :::::::::::: -Tensor,数据为 int64 类型,维度为(nbins,)。 +Tensor,维度为(nbins,)。如果 density 为 True 或者 weight 不为 None,则返回的 Tensor 的数据类型为 float32;否则为 int64。 代码示例 :::::::::::: From 57f7751402f90e19cd0bd04ac91bb448eb7d17f7 Mon Sep 17 00:00:00 2001 From: PuQing Date: Sat, 3 Aug 2024 17:02:30 +0800 Subject: [PATCH 2/2] fix embedding doc --- docs/api/paddle/nn/Embedding_cn.rst | 4 +++- docs/api/paddle/nn/functional/embedding_cn.rst | 4 +++- .../functional/torch.nn.functional.embedding.md | 6 +++--- .../api_difference/nn/torch.nn.Embedding.md | 6 ++++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/docs/api/paddle/nn/Embedding_cn.rst b/docs/api/paddle/nn/Embedding_cn.rst index 4f79b692084..e99cba44513 100644 --- a/docs/api/paddle/nn/Embedding_cn.rst +++ b/docs/api/paddle/nn/Embedding_cn.rst @@ -3,7 +3,7 @@ Embedding ------------------------------- -.. py:class:: paddle.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, sparse=False, weight_attr=None, name=None) +.. py:class:: paddle.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2.0, sparse=False, weight_attr=None, name=None) 嵌入层(Embedding Layer),用于构建 ``Embedding`` 的一个可调用对象,具体用法参照 ``代码示例``。其根据 ``x`` 中的 id 信息从 embedding 矩阵中查询对应 embedding 信息,并会根据输入的 size (num_embeddings, embedding_dim)和 weight_attr 自动构造一个二维 embedding 矩阵。 @@ -38,6 +38,8 @@ Embedding - **num_embeddings** (int) - 嵌入字典的大小,input 中的 id 必须满足 ``0 <= id < num_embeddings`` 。 - **embedding_dim** (int) - 每个嵌入向量的维度。 - **padding_idx** (int|long|None,可选) - padding_idx 的配置区间为 ``[-weight.shape[0], weight.shape[0]]``,如果配置了 padding_idx,那么在训练过程中遇到此 id 时,其参数及对应的梯度将会以 0 进行填充。 + - **max_norm** (float,可选) - 如果给定,则每个范数大于 max_norm 的嵌入向量都会被重新规范化为具有范数 max_norm。注意,在动态图模式下,将会原位修改权重。默认值:None。 + - **norm_type** (float,可选) - 规范化的范数类型,默认为 2.0,即 L2 范数。默认值:2.0。 - **sparse** (bool,可选) - 是否使用稀疏更新,在词嵌入权重较大的情况下,使用稀疏更新能够获得更快的训练速度及更小的内存/显存占用。 - **weight_attr** (ParamAttr|None,可选) - 指定嵌入向量的配置,包括初始化方法,具体用法请参见 :ref:`api_guide_ParamAttr`,一般无需设置,默认值为 None。 - **name** (str|None,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。 diff --git a/docs/api/paddle/nn/functional/embedding_cn.rst b/docs/api/paddle/nn/functional/embedding_cn.rst index b6fd0473d94..1659092f4f5 100644 --- a/docs/api/paddle/nn/functional/embedding_cn.rst +++ b/docs/api/paddle/nn/functional/embedding_cn.rst @@ -3,7 +3,7 @@ embedding ------------------------------- -.. py:function:: paddle.nn.functional.embedding(x, weight, padding_idx=None, sparse=False, name=None) +.. py:function:: paddle.nn.functional.embedding(x, weight, padding_idx=None, max_norm=None, norm_type=2.0, sparse=False, name=None) @@ -41,6 +41,8 @@ embedding - **input** (Tensor) - 存储 id 信息的 Tensor,数据类型必须为:int32/int64。input 中的 id 必须满足 ``0 =< id < size[0]`` 。 - **weight** (Tensor) - 存储词嵌入权重参数的 Tensor,形状为(num_embeddings, embedding_dim)。 + - **max_norm** (float,可选) - 如果给定,则每个范数大于 max_norm 的嵌入向量都会被重新规范化为具有范数 max_norm。注意,在动态图模式下,将会原位修改权重。默认值:None。 + - **norm_type** (float,可选) - 规范化的范数类型,默认为 2.0,即 L2 范数。默认值:2.0。 - **sparse** (bool,可选) - 是否使用稀疏更新,在词嵌入权重较大的情况下,使用稀疏更新(即设置为 True)能够获得更快的训练速度及更小的内存/显存占用。但是一些优化器不支持稀疏更新,例如 :ref:`cn_api_paddle_optimizer_Adadelta` , :ref:`cn_api_paddle_optimizer_Adamax` , :ref:`cn_api_paddle_optimizer_Lamb` 。在这些情况下,稀疏必须为 False。默认值:False。 - **padding_idx** (int|long|None,可选) - padding_idx 的配置区间为 ``[-weight.shape[0], weight.shape[0]``,如果配置了 padding_idx,那么在训练过程中遇到此 id 时,其参数及对应的梯度将会以 0 进行填充。如果 padding_idx < 0 ,则 padding_idx 将自动转换到 ``weight.shape[0] + padding_idx`` 。如果设置为 "None",则不会对输出产生影响。默认值:None。 - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。 diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/functional/torch.nn.functional.embedding.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/functional/torch.nn.functional.embedding.md index b68a56ee675..a5afb0d983a 100644 --- a/docs/guides/model_convert/convert_from_pytorch/api_difference/functional/torch.nn.functional.embedding.md +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/functional/torch.nn.functional.embedding.md @@ -9,7 +9,7 @@ torch.nn.functional.embedding(input, weight, padding_idx=None, max_norm=None, no ### [paddle.nn.functional.embedding](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/nn/functional/embedding_cn.html#embedding) ```python -paddle.nn.functional.embedding(x, weight, padding_idx=None, sparse=False, name=None) +paddle.nn.functional.embedding(x, weight, padding_idx=None, max_norm=None, norm_type=2.0, sparse=False, name=None) ``` PyTorch 相比 Paddle 支持更多其他参数,具体如下: @@ -21,7 +21,7 @@ PyTorch 相比 Paddle 支持更多其他参数,具体如下: | input | x | 输入 Tensor,仅参数名不同。 | | weight | weight | 嵌入矩阵权重。 | | padding_idx | padding_idx | 视为填充的下标,参数完全一致。 | -| max_norm | - | 重新归一化的最大范数,参数不一致,暂无转写方式。 | -| norm_type | - | Paddle 无此参数,参数不一致,暂无转写方式。 | +| max_norm | max_norm | 重新归一化的最大范数,参数完全一致。 | +| norm_type | norm_type | 范数计算方式,默认为 L2 范数,参数完全一致。 | | scale_grad_by_freq | - | 按词频进行梯度缩放的比例,参数不一致,暂无转写方式。 | | sparse | sparse | 是否使用稀疏更新。 | diff --git a/docs/guides/model_convert/convert_from_pytorch/api_difference/nn/torch.nn.Embedding.md b/docs/guides/model_convert/convert_from_pytorch/api_difference/nn/torch.nn.Embedding.md index 35c994ae034..8a62617d21f 100644 --- a/docs/guides/model_convert/convert_from_pytorch/api_difference/nn/torch.nn.Embedding.md +++ b/docs/guides/model_convert/convert_from_pytorch/api_difference/nn/torch.nn.Embedding.md @@ -16,6 +16,8 @@ torch.nn.Embedding(num_embeddings, paddle.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, + max_norm=None, + norm_type=2.0, sparse=False, weight_attr=None, name=None) @@ -29,8 +31,8 @@ PyTorch 相比 Paddle 支持更多其他参数,具体如下: | num_embeddings | num_embeddings | 表示嵌入字典的大小。 | | embedding_dim | embedding_dim | 表示每个嵌入向量的维度。 | | padding_idx | padding_idx | 在此区间内的参数及对应的梯度将会以 0 进行填充 | -| max_norm | - | 如果给定,Embeddding 向量的范数(范数的计算方式由 norm_type 决定)超过了 max_norm 这个界限,就要再进行归一化,Paddle 无此参数,暂无转写方式。 | -| norm_type | - | 为 maxnorm 选项计算 p-范数的 p。默认值 2,Paddle 无此参数,暂无转写方式。 | +| max_norm | max_norm | 如果给定,Embeddding 向量的范数(范数的计算方式由 norm_type 决定)超过了 max_norm 这个界限,就要再进行归一化。 | +| norm_type | norm_type | 为 maxnorm 选项计算 p-范数的 p。默认值 2。 | | scale_grad_by_freq | - | 是否根据单词在 mini-batch 中出现的频率,对梯度进行放缩,Paddle 无此参数,暂无转写方式。 | | sparse | sparse | 表示是否使用稀疏更新。 | | - | weight_attr | 指定权重参数属性的对象,PyTorch 无此参数,Paddle 保持默认即可。 |