• 文档 >
  • 指标 >
  • torcheval.metrics.WindowedBinaryNormalizedEntropy
快捷方式

torcheval.metrics.WindowedBinaryNormalizedEntropy

class torcheval.metrics.WindowedBinaryNormalizedEntropy(*, from_logits: bool = False, num_tasks: int = 1, max_num_updates: int = 100, enable_lifetime: bool = True, device: device | None = None)

BinaryNormalizedEntropy 的窗口版本,提供窗口值和生命周期值。窗口值从最近 window_size 次 `update()` 调用的输入和目标计算而来。生命周期值从所有过去 `update()` 调用的输入和目标计算而来。

计算预测输入和真实二进制目标之间的归一化二进制交叉熵。

参数::
  • from_logits (bool) – 一个布尔值,指示预测值 `y_pred` 是一个浮点对数几率值(即,当 `from_logits=True` 时,值为 [-inf, inf])还是一个概率值(即,当 `from_logits=False` 时,值为 [0., 1.])默认值为 False。

  • num_tasks (int) – 需要进行 BinaryNormalizedEntropy 计算的任务数量。默认值为 1。每个任务的 BinaryNormalizedEntropy 将独立计算。

  • max_num_updates (int) – 可以容纳更新次数的最大窗口大小。

  • enable_lifetime (bool) – 一个布尔值,指示是否计算生命周期值。

示例

>>> import torch
>>> from torcheval.metrics import WindowedBinaryNormalizedEntropy

>>> metric = WindowedBinaryNormalizedEntropy(max_num_updates=2)
>>> metric.update(torch.tensor([0.2, 0.3]), torch.tensor([1.0, 0.0]))
>>> metric.update(torch.tensor([0.5, 0.6]), torch.tensor([1.0, 1.0]))
>>> metric.update(torch.tensor([0.6, 0.2]), torch.tensor([0.0, 1.0]))
>>> metric.num_examples, metric.windowed_num_examples
(tensor([6.], dtype=torch.float64), tensor([[2., 2.]], dtype=torch.float64))
>>> metric.compute()
(tensor([1.4914], dtype=torch.float64), tensor([1.6581], dtype=torch.float64))

>>> metric = WindowedBinaryNormalizedEntropy(max_num_updates=2, enable_lifetime=False)
>>> metric.update(torch.tensor([0.2, 0.3]), torch.tensor([1.0, 0.0]))
>>> metric.update(torch.tensor([0.5, 0.6]), torch.tensor([1.0, 1.0]))
>>> metric.update(torch.tensor([0.6, 0.2]), torch.tensor([0.0, 1.0]))
>>> metric.windowed_num_examples
tensor([[2., 2.]], dtype=torch.float64)
>>> metric.compute()
tensor([1.6581], dtype=torch.float64)

>>> metric = WindowedBinaryNormalizedEntropy(max_num_updates=2, num_tasks=2)
>>> metric.update(torch.tensor([[0.2, 0.3], [0.5, 0.1]]), torch.tensor([[1.0, 0.0], [0.0, 1.0]]))
>>> metric.update(torch.tensor([[0.8, 0.3], [0.6, 0.1]]), torch.tensor([[1.0, 1.0], [1.0, 0.0]]))
>>> metric.update(torch.tensor([[0.5, 0.1], [0.3, 0.9]]), torch.tensor([[0.0, 1.0], [0.0, 0.0]]))
>>> metric.num_examples, metric.windowed_num_examples
(tensor([6., 6.], dtype=torch.float64),
tensor([[2., 2.],
        [2., 2.]], dtype=torch.float64))
>>> metric.compute()
(tensor([1.6729, 1.6421], dtype=torch.float64),
tensor([1.9663, 1.4562], dtype=torch.float64))
__init__(*, from_logits: bool = False, num_tasks: int = 1, max_num_updates: int = 100, enable_lifetime: bool = True, device: device | None = None) None

初始化一个指标对象及其内部状态。

使用 `self._add_state()` 初始化指标类状态变量。状态变量应该是 `torch.Tensor`、`torch.Tensor` 列表、带有 `torch.Tensor` 作为值的字典或 `torch.Tensor` 的 deque。

方法

__init__(*[, from_logits, num_tasks, ...])

初始化一个指标对象及其内部状态。

compute()

返回归一化二进制交叉熵。

load_state_dict(state_dict[, strict])

从 state_dict 中加载指标状态变量。

merge_state(metrics)

将指标状态与其来自其他指标实例的对应部分合并。

reset()

将指标状态变量重置为默认值。

state_dict()

将指标状态变量保存在 state_dict 中。

to(device, *args, **kwargs)

将指标状态变量中的张量移动到设备。

update(input, target, *[, weight])

使用总熵、总示例数和总正目标数更新指标状态。

属性

device

`Metric.to()` 的最后一个输入设备。

文档

访问 PyTorch 的全面开发者文档

查看文档

教程

获取面向初学者和高级开发者的深入教程

查看教程

资源

查找开发资源并获得问题的解答

查看资源