Files
2025-03-20 21:40:01 -07:00

64 lines
1.8 KiB
Python

from typing import Any, Dict, Tuple
import torch
import torch.nn as nn
class PtnBCELoss:
"""
Ptn BCE Loss:
A class to compute the binary cross entropy loss.
Unlike the Ptn BCE Loss With Logits node, which takes logits as input, this node expects probabilities. If the input consists of logits, apply a Sigmoid function first or use the Ptn BCE Loss With Logits node instead.
Args:
reduction (str): Reduction method.
`none`: no reduction will be applied done.
`mean`: computes the mean.
`sum`: computes the sum.
category: PyTorch wrapper - Loss function
"""
@classmethod
def INPUT_TYPES(cls) -> Dict[str, Any]:
"""
Defines the input types for the function.
Returns:
Dict[str, Any]: A dictionary specifying required input types.
"""
return {
"required": {
"reduction": (("mean", "sum", "none"),)
}
}
RETURN_TYPES: Tuple[str] = ("PTLOSS",)
FUNCTION: str = "f"
CATEGORY: str = "Training"
@classmethod
def IS_CHANGED(cls, **kw):
return float("NaN")
def f(self,
reduction: str
) -> Tuple[nn.Module]:
"""
A model to compute the cross entropy loss.
Args:
reduction: (str): Reduction method.
`none`: no reduction will be applied done.
`sum`: computes the sum.
`mean`: computes the mean.
Returns:
Tuple[nn.Module]: A tuple containing the instantiated PyTorch model.
"""
with torch.inference_mode(False):
model = nn.BCELoss(reduction=reduction)
return (model,)