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()` 的最后一个输入设备。