PyTorch – 如何计算输入张量的逐元素熵?


要计算输入张量的逐元素熵,我们使用 **torch.special.entr()** 方法。它返回一个新的张量,其中包含逐元素计算的熵。

  • 如果张量的元素为负数,则熵为 **负无穷大**。

  • 如果张量的元素为零,则熵为 **零**。

  • 正数元素的熵计算为元素与其自然对数乘积的负值。它接受任何维度的 torch 张量。

步骤

我们可以使用以下步骤来逐元素计算张量的熵:

  • 导入所需的库。在以下所有示例中,所需的 Python 库为 **torch**。确保您已安装它。

import torch
  • 定义一个 torch 张量。这里我们定义了一个包含随机数的二维张量。

tensor = torch.randn(2,3,3)
  • 使用 **torch.special.entr(tensor)** 计算上述定义的张量的熵。可以选择将此值赋给一个新变量。

ent = torch.special.entr(tensor)
  • 打印计算出的熵。

print("Entropy:", ent)

示例 1

在此示例中,我们计算了一个一维用户定义张量的熵。

# import necessary libraries
import torch

# define a 1D tensor
tensor1 = torch.tensor([-1,1,2,0,.4])

# print above created tensor
print("Tensor:", tensor1)

# compute the entropy on input tensor element wise
ent = torch.special.entr(tensor1)

# Display the computed entropies
print("Entropy:", ent)

输出

它将产生以下输出:

Tensor: tensor([-1.0000, 1.0000, 2.0000, 0.0000, 0.4000])
Entropy: tensor([ -inf, -0.0000, -1.3863, 0.0000, 0.3665])

请注意,负数的熵为 -inf,零的熵为零。

示例 2

在此示例中,我们逐元素计算了一个二维 torch 张量的熵。

# import necessary libraries
import torch

# define a tensor of random numbers
tensor1 = torch.randn(2,3,3)

# print above created tensor
print("Tensor:
", tensor1) # compute the entropy on input tensor element wise ent = torch.special.entr(tensor1) # Display the computed entropies print("Entropy:
", ent)

输出

它将产生以下输出:

Tensor:
tensor([[[ 0.5996, -0.7526, -1.0233],
   [-0.9907, -0.0358, 0.6433],
   [ 0.4527, -0.1434, 0.3338]],
   [[ 0.0521, -0.3729, -0.1162],
   [ 0.2417, 0.7732, -0.6362],
   [-0.7942, -0.2582, 1.0860]]])
Entropy:
tensor([[[ 0.3067, -inf, -inf],
   [ -inf, -inf, 0.2838],
   [ 0.3588, -inf, 0.3663]],

   [[ 0.1539, -inf, -inf],
   [ 0.3432, 0.1989, -inf],
   [ -inf, -inf, -0.0896]]])

更新于: 2022年1月6日

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告