22 lines
650 B
Python
22 lines
650 B
Python
import sys
|
|
|
|
import numpy as np
|
|
|
|
from mla.neuralnet.activations import *
|
|
|
|
|
|
def test_softplus():
|
|
# np.exp(z_max) will overflow
|
|
z_max = np.log(sys.float_info.max) + 1.0e10
|
|
# 1.0 / np.exp(z_min) will overflow
|
|
z_min = np.log(sys.float_info.min) - 1.0e10
|
|
inputs = np.array([0.0, 1.0, -1.0, z_min, z_max])
|
|
# naive implementation of np.log(1 + np.exp(z_max)) will overflow
|
|
# naive implementation of z + np.log(1 + 1 / np.exp(z_min)) will
|
|
# throw ZeroDivisionError
|
|
outputs = np.array(
|
|
[np.log(2.0), np.log1p(np.exp(1.0)), np.log1p(np.exp(-1.0)), 0.0, z_max]
|
|
)
|
|
|
|
assert np.allclose(outputs, softplus(inputs))
|