Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
"""
This script implements the Sobovela Modified Hyperbolic Tangent function.

The function applies the Sobovela Modified Hyperbolic Tangent function
to each element of the vector.

More details about the activation function can be found on:
https://en.wikipedia.org/wiki/Soboleva_modified_hyperbolic_tangent
"""


import numpy as np


def sobovela_modified_hyperbolic_tangent(
vector: np.ndarray, a_value: float, b_value: float, c_value: float, d_value: float
) -> np.ndarray:
"""
Implements the Sobovela Modified Hyperbolic Tangent function

Parameters:
vector (ndarray): A vector that consitis of numeric values
alpha (float): alpha value
beta (float): beta value

Returns:
vector (ndarray): Input array after applying SMHT function

>>> vector = np.array([5.4, -2.4, 6.3, -5.23, 3.27, 0.56])
>>> sobovela_modified_hyperbolic_tangent(vector, 0.2, 0.4, 0.6, 0.8)
array([ 0.11075085, -0.28236685, 0.07861169, -0.1180085 , 0.22999056,
0.1566043 ])
"""

# Separate the numerator and denominator for simplicity
# Calculate the numerator and denominator element-wise
numerator = np.exp(a_value * vector) - np.exp(-b_value * vector)
denominator = np.exp(c_value * vector) + np.exp(-d_value * vector)

# Calculate and return the final result element-wise
return numerator / denominator


if __name__ == "__main__":
import doctest

doctest.testmod()