mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-12-18 01:00:15 +00:00
Add Soboleva Modified Hyberbolic Tangent function (#10043)
* Add Sobovela Modified Hyberbolic Tangent function * fix: typo * Update and rename sobovela_modified_hyperbolic_tangent.py to soboleva_modified_hyperbolic_tangent.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix: typo * Apply suggestions from code review --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Tianyi Zheng <tianyizheng02@gmail.com>
This commit is contained in:
parent
a2b695dabd
commit
2260961a80
|
@ -0,0 +1,49 @@
|
|||
"""
|
||||
This script implements the Soboleva Modified Hyperbolic Tangent function.
|
||||
|
||||
The function applies the Soboleva 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 soboleva_modified_hyperbolic_tangent(
|
||||
vector: np.ndarray, a_value: float, b_value: float, c_value: float, d_value: float
|
||||
) -> np.ndarray:
|
||||
"""
|
||||
Implements the Soboleva Modified Hyperbolic Tangent function
|
||||
|
||||
Parameters:
|
||||
vector (ndarray): A vector that consists of numeric values
|
||||
a_value (float): parameter a of the equation
|
||||
b_value (float): parameter b of the equation
|
||||
c_value (float): parameter c of the equation
|
||||
d_value (float): parameter d of the equation
|
||||
|
||||
Returns:
|
||||
vector (ndarray): Input array after applying SMHT function
|
||||
|
||||
>>> vector = np.array([5.4, -2.4, 6.3, -5.23, 3.27, 0.56])
|
||||
>>> soboleva_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()
|
Loading…
Reference in New Issue
Block a user