Implement the Hardtanh activation function. Hardtanh clamps its input to the range [min_val, max_val], typically [-1, 1].
Clip each value to the specified range.
def hardtanh(x: float, min_val: float = -1.0, max_val: float = 1.0) -> float:
if x < min_val:
return min_val
elif x > max_val:
return max_val
return x
def hardtanh_list(
values: list[float], min_val: float = -1.0, max_val: float = 1.0
) -> list[float]:
return [round(hardtanh(v, min_val, max_val), 6) for v in values]x < min_val, return min_val.x > max_val, return max_val.x unchanged.[min_val, max_val] and 0 outside, similar to a clipped ReLU.