diff --git a/docs/examples/elu_variants/isrlu_example.hires.png b/docs/examples/elu_variants/isrlu_example.hires.png new file mode 100644 index 0000000..f7eed6a Binary files /dev/null and b/docs/examples/elu_variants/isrlu_example.hires.png differ diff --git a/docs/examples/elu_variants/isrlu_example.pdf b/docs/examples/elu_variants/isrlu_example.pdf new file mode 100644 index 0000000..01fec7a Binary files /dev/null and b/docs/examples/elu_variants/isrlu_example.pdf differ diff --git a/docs/examples/elu_variants/isrlu_example.png b/docs/examples/elu_variants/isrlu_example.png new file mode 100644 index 0000000..6b6e13e Binary files /dev/null and b/docs/examples/elu_variants/isrlu_example.png differ diff --git a/docs/examples/elu_variants/isrlu_example.py b/docs/examples/elu_variants/isrlu_example.py new file mode 100644 index 0000000..5ea95dc --- /dev/null +++ b/docs/examples/elu_variants/isrlu_example.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import torch + +from activations_plus.simple import isrlu + +x = torch.linspace(-3, 3, 200) +y = isrlu(x) +fig, ax = plt.subplots() +ax.plot(x.numpy(), y.numpy()) +ax.set_title("ISRLU (Inverse Square Root Linear Unit)") +ax.set_xlabel("Input") +ax.set_ylabel("Output") +ax.grid(alpha=0.3) +fig.show() # This will be mocked in tests diff --git a/docs/examples/elu_variants/pelu_example.hires.png b/docs/examples/elu_variants/pelu_example.hires.png new file mode 100644 index 0000000..96348db Binary files /dev/null and b/docs/examples/elu_variants/pelu_example.hires.png differ diff --git a/docs/examples/elu_variants/pelu_example.pdf b/docs/examples/elu_variants/pelu_example.pdf new file mode 100644 index 0000000..5f9c82c Binary files /dev/null and b/docs/examples/elu_variants/pelu_example.pdf differ diff --git a/docs/examples/elu_variants/pelu_example.png b/docs/examples/elu_variants/pelu_example.png new file mode 100644 index 0000000..96927d5 Binary files /dev/null and b/docs/examples/elu_variants/pelu_example.png differ diff --git a/docs/examples/elu_variants/pelu_example.py b/docs/examples/elu_variants/pelu_example.py new file mode 100644 index 0000000..a97771c --- /dev/null +++ b/docs/examples/elu_variants/pelu_example.py @@ -0,0 +1,45 @@ +"""Example demonstrating the PELU activation function.""" + +import matplotlib.pyplot as plt +import torch + +from activations_plus.simple import pelu + + +def main() -> None: + """Plot the PELU activation function with different parameter values.""" + x = torch.linspace(-5, 5, 1000) + + # Different parameter combinations + params = [ + {"alpha": 1.0, "beta": 1.0, "label": "α=1.0, β=1.0 (default)"}, + {"alpha": 1.5, "beta": 1.0, "label": "α=1.5, β=1.0"}, + {"alpha": 1.0, "beta": 1.5, "label": "α=1.0, β=1.5"}, + {"alpha": 1.5, "beta": 1.5, "label": "α=1.5, β=1.5"}, + ] + + # Create the plot + plt.figure(figsize=(10, 6)) + + # Plot PELU with different parameter combinations + for param in params: + y_pelu = pelu(x, alpha=param["alpha"], beta=param["beta"]) + plt.plot(x.numpy(), y_pelu.numpy(), label=param["label"], linewidth=2) + + # Add vertical and horizontal lines at origin + plt.axhline(y=0, color="k", linestyle="-", alpha=0.3) + plt.axvline(x=0, color="k", linestyle="-", alpha=0.3) + + # Configure the plot + plt.grid(True, alpha=0.3) + plt.xlabel("x") + plt.ylabel("f(x)") + plt.title("PELU Activation Function with Different Parameters") + plt.legend() + plt.tight_layout() + + plt.show() + + +if __name__ == "__main__": + main() diff --git a/docs/examples/relu_variants/dual_line_example.hires.png b/docs/examples/relu_variants/dual_line_example.hires.png new file mode 100644 index 0000000..26a30a1 Binary files /dev/null and b/docs/examples/relu_variants/dual_line_example.hires.png differ diff --git a/docs/examples/relu_variants/dual_line_example.pdf b/docs/examples/relu_variants/dual_line_example.pdf new file mode 100644 index 0000000..05a6dbb Binary files /dev/null and b/docs/examples/relu_variants/dual_line_example.pdf differ diff --git a/docs/examples/relu_variants/dual_line_example.png b/docs/examples/relu_variants/dual_line_example.png new file mode 100644 index 0000000..465b40c Binary files /dev/null and b/docs/examples/relu_variants/dual_line_example.png differ diff --git a/docs/examples/relu_variants/dual_line_example.py b/docs/examples/relu_variants/dual_line_example.py new file mode 100644 index 0000000..0f253fc --- /dev/null +++ b/docs/examples/relu_variants/dual_line_example.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import torch + +from activations_plus.simple import dual_line + +x = torch.linspace(-3, 3, 200) +y = dual_line(x, a=1.0, b=0.01) +fig, ax = plt.subplots() +ax.plot(x.numpy(), y.numpy()) +ax.set_title("Dual Line (a=1.0, b=0.01)") +ax.set_xlabel("Input") +ax.set_ylabel("Output") +ax.grid(alpha=0.3) +fig.show() # This will be mocked in tests diff --git a/docs/examples/sigmoid_tanh_variants/aria2_example.hires.png b/docs/examples/sigmoid_tanh_variants/aria2_example.hires.png new file mode 100644 index 0000000..146721f Binary files /dev/null and b/docs/examples/sigmoid_tanh_variants/aria2_example.hires.png differ diff --git a/docs/examples/sigmoid_tanh_variants/aria2_example.pdf b/docs/examples/sigmoid_tanh_variants/aria2_example.pdf new file mode 100644 index 0000000..f097919 Binary files /dev/null and b/docs/examples/sigmoid_tanh_variants/aria2_example.pdf differ diff --git a/docs/examples/sigmoid_tanh_variants/aria2_example.png b/docs/examples/sigmoid_tanh_variants/aria2_example.png new file mode 100644 index 0000000..4a06445 Binary files /dev/null and b/docs/examples/sigmoid_tanh_variants/aria2_example.png differ diff --git a/docs/examples/sigmoid_tanh_variants/aria2_example.py b/docs/examples/sigmoid_tanh_variants/aria2_example.py new file mode 100644 index 0000000..9c23b59 --- /dev/null +++ b/docs/examples/sigmoid_tanh_variants/aria2_example.py @@ -0,0 +1,42 @@ +import matplotlib.pyplot as plt +import torch + +from activations_plus.simple import aria2 + +x = torch.linspace(-5, 5, 200) + +# Default parameters (alpha=1.5, beta=0.5) +y_default = aria2(x) + +# Different alpha values +y_alpha_1 = aria2(x, alpha=1.0, beta=0.5) +y_alpha_2 = aria2(x, alpha=2.0, beta=0.5) + +# Different beta values +y_beta_1 = aria2(x, alpha=1.5, beta=0.2) +y_beta_2 = aria2(x, alpha=1.5, beta=1.0) + +fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5)) + +# Plot different alpha values +ax1.plot(x.numpy(), y_default.numpy(), label="Default (α=1.5, β=0.5)") +ax1.plot(x.numpy(), y_alpha_1.numpy(), label="α=1.0, β=0.5") +ax1.plot(x.numpy(), y_alpha_2.numpy(), label="α=2.0, β=0.5") +ax1.set_title("ARiA2 with Different Alpha Values") +ax1.set_xlabel("Input") +ax1.set_ylabel("Output") +ax1.grid(alpha=0.3) +ax1.legend() + +# Plot different beta values +ax2.plot(x.numpy(), y_default.numpy(), label="Default (α=1.5, β=0.5)") +ax2.plot(x.numpy(), y_beta_1.numpy(), label="α=1.5, β=0.2") +ax2.plot(x.numpy(), y_beta_2.numpy(), label="α=1.5, β=1.0") +ax2.set_title("ARiA2 with Different Beta Values") +ax2.set_xlabel("Input") +ax2.set_ylabel("Output") +ax2.grid(alpha=0.3) +ax2.legend() + +plt.tight_layout() +fig.show() diff --git a/docs/examples/sigmoid_tanh_variants/isru_example.hires.png b/docs/examples/sigmoid_tanh_variants/isru_example.hires.png new file mode 100644 index 0000000..eac1ea9 Binary files /dev/null and b/docs/examples/sigmoid_tanh_variants/isru_example.hires.png differ diff --git a/docs/examples/sigmoid_tanh_variants/isru_example.pdf b/docs/examples/sigmoid_tanh_variants/isru_example.pdf new file mode 100644 index 0000000..366d3bc Binary files /dev/null and b/docs/examples/sigmoid_tanh_variants/isru_example.pdf differ diff --git a/docs/examples/sigmoid_tanh_variants/isru_example.png b/docs/examples/sigmoid_tanh_variants/isru_example.png new file mode 100644 index 0000000..9757488 Binary files /dev/null and b/docs/examples/sigmoid_tanh_variants/isru_example.png differ diff --git a/docs/examples/sigmoid_tanh_variants/isru_example.py b/docs/examples/sigmoid_tanh_variants/isru_example.py new file mode 100644 index 0000000..05976a4 --- /dev/null +++ b/docs/examples/sigmoid_tanh_variants/isru_example.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import torch + +from activations_plus.simple import isru + +x = torch.linspace(-3, 3, 200) +y = isru(x, alpha=1.0) +fig, ax = plt.subplots() +ax.plot(x.numpy(), y.numpy()) +ax.set_title("ISRU (alpha=1.0)") +ax.set_xlabel("Input") +ax.set_ylabel("Output") +ax.grid(alpha=0.3) +fig.show() # This will be mocked in tests diff --git a/docs/examples/sigmoid_tanh_variants/tanh_exp_example.hires.png b/docs/examples/sigmoid_tanh_variants/tanh_exp_example.hires.png new file mode 100644 index 0000000..7d45da3 Binary files /dev/null and b/docs/examples/sigmoid_tanh_variants/tanh_exp_example.hires.png differ diff --git a/docs/examples/sigmoid_tanh_variants/tanh_exp_example.pdf b/docs/examples/sigmoid_tanh_variants/tanh_exp_example.pdf new file mode 100644 index 0000000..c4c3a67 Binary files /dev/null and b/docs/examples/sigmoid_tanh_variants/tanh_exp_example.pdf differ diff --git a/docs/examples/sigmoid_tanh_variants/tanh_exp_example.png b/docs/examples/sigmoid_tanh_variants/tanh_exp_example.png new file mode 100644 index 0000000..cc43987 Binary files /dev/null and b/docs/examples/sigmoid_tanh_variants/tanh_exp_example.png differ diff --git a/docs/examples/sigmoid_tanh_variants/tanh_exp_example.py b/docs/examples/sigmoid_tanh_variants/tanh_exp_example.py new file mode 100644 index 0000000..0d9723c --- /dev/null +++ b/docs/examples/sigmoid_tanh_variants/tanh_exp_example.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import torch + +from activations_plus.simple import tanh_exp + +x = torch.linspace(-3, 3, 200) +y = tanh_exp(x) +fig, ax = plt.subplots() +ax.plot(x.numpy(), y.numpy()) +ax.set_title("TanhExp") +ax.set_xlabel("Input") +ax.set_ylabel("Output") +ax.grid(alpha=0.3) +fig.show() diff --git a/docs/examples/specialized_variants/erf_act_example.hires.png b/docs/examples/specialized_variants/erf_act_example.hires.png new file mode 100644 index 0000000..8d76992 Binary files /dev/null and b/docs/examples/specialized_variants/erf_act_example.hires.png differ diff --git a/docs/examples/specialized_variants/erf_act_example.pdf b/docs/examples/specialized_variants/erf_act_example.pdf new file mode 100644 index 0000000..14256b5 Binary files /dev/null and b/docs/examples/specialized_variants/erf_act_example.pdf differ diff --git a/docs/examples/specialized_variants/erf_act_example.png b/docs/examples/specialized_variants/erf_act_example.png new file mode 100644 index 0000000..7e8b009 Binary files /dev/null and b/docs/examples/specialized_variants/erf_act_example.png differ diff --git a/docs/examples/specialized_variants/erf_act_example.py b/docs/examples/specialized_variants/erf_act_example.py new file mode 100644 index 0000000..d21083f --- /dev/null +++ b/docs/examples/specialized_variants/erf_act_example.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import torch + +from activations_plus.simple import erf_act + +x = torch.linspace(-3, 3, 200) +y = erf_act(x) +fig, ax = plt.subplots() +ax.plot(x.numpy(), y.numpy()) +ax.set_title("ErfAct") +ax.set_xlabel("Input") +ax.set_ylabel("Output") +ax.grid(alpha=0.3) +fig.show() # This will be mocked in tests diff --git a/docs/examples/specialized_variants/hat_example.hires.png b/docs/examples/specialized_variants/hat_example.hires.png new file mode 100644 index 0000000..7ef0bb9 Binary files /dev/null and b/docs/examples/specialized_variants/hat_example.hires.png differ diff --git a/docs/examples/specialized_variants/hat_example.pdf b/docs/examples/specialized_variants/hat_example.pdf new file mode 100644 index 0000000..bc00298 Binary files /dev/null and b/docs/examples/specialized_variants/hat_example.pdf differ diff --git a/docs/examples/specialized_variants/hat_example.png b/docs/examples/specialized_variants/hat_example.png new file mode 100644 index 0000000..42bcf71 Binary files /dev/null and b/docs/examples/specialized_variants/hat_example.png differ diff --git a/docs/examples/specialized_variants/hat_example.py b/docs/examples/specialized_variants/hat_example.py new file mode 100644 index 0000000..36fc17c --- /dev/null +++ b/docs/examples/specialized_variants/hat_example.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import torch + +from activations_plus.simple import hat + +x = torch.linspace(-3, 3, 200) +y = hat(x) +fig, ax = plt.subplots() +ax.plot(x.numpy(), y.numpy()) +ax.set_title("Hat") +ax.set_xlabel("Input") +ax.set_ylabel("Output") +ax.grid(alpha=0.3) +fig.show() # This will be mocked in tests diff --git a/docs/examples/specialized_variants/pserf_example.hires.png b/docs/examples/specialized_variants/pserf_example.hires.png new file mode 100644 index 0000000..0b1ea18 Binary files /dev/null and b/docs/examples/specialized_variants/pserf_example.hires.png differ diff --git a/docs/examples/specialized_variants/pserf_example.pdf b/docs/examples/specialized_variants/pserf_example.pdf new file mode 100644 index 0000000..97fb07c Binary files /dev/null and b/docs/examples/specialized_variants/pserf_example.pdf differ diff --git a/docs/examples/specialized_variants/pserf_example.png b/docs/examples/specialized_variants/pserf_example.png new file mode 100644 index 0000000..fb304cb Binary files /dev/null and b/docs/examples/specialized_variants/pserf_example.png differ diff --git a/docs/examples/specialized_variants/pserf_example.py b/docs/examples/specialized_variants/pserf_example.py new file mode 100644 index 0000000..e725186 --- /dev/null +++ b/docs/examples/specialized_variants/pserf_example.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import torch + +from activations_plus.simple import pserf + +x = torch.linspace(-3, 3, 200) +y = pserf(x) +fig, ax = plt.subplots() +ax.plot(x.numpy(), y.numpy()) +ax.set_title("Pserf") +ax.set_xlabel("Input") +ax.set_ylabel("Output") +ax.grid(alpha=0.3) +fig.show() # This will be mocked in tests diff --git a/docs/examples/specialized_variants/resp_example.hires.png b/docs/examples/specialized_variants/resp_example.hires.png new file mode 100644 index 0000000..65bda4d Binary files /dev/null and b/docs/examples/specialized_variants/resp_example.hires.png differ diff --git a/docs/examples/specialized_variants/resp_example.pdf b/docs/examples/specialized_variants/resp_example.pdf new file mode 100644 index 0000000..d55a8c7 Binary files /dev/null and b/docs/examples/specialized_variants/resp_example.pdf differ diff --git a/docs/examples/specialized_variants/resp_example.png b/docs/examples/specialized_variants/resp_example.png new file mode 100644 index 0000000..d4d0bbc Binary files /dev/null and b/docs/examples/specialized_variants/resp_example.png differ diff --git a/docs/examples/specialized_variants/resp_example.py b/docs/examples/specialized_variants/resp_example.py new file mode 100644 index 0000000..f99071d --- /dev/null +++ b/docs/examples/specialized_variants/resp_example.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import torch + +from activations_plus.simple import resp + +x = torch.linspace(-3, 3, 200) +y = resp(x) +fig, ax = plt.subplots() +ax.plot(x.numpy(), y.numpy()) +ax.set_title("Rectified Softplus (ReSP)") +ax.set_xlabel("Input") +ax.set_ylabel("Output") +ax.grid(alpha=0.3) +fig.show() # This will be mocked in tests diff --git a/docs/examples/tanh_variants/penalized_tanh_example.hires.png b/docs/examples/tanh_variants/penalized_tanh_example.hires.png new file mode 100644 index 0000000..3cf6909 Binary files /dev/null and b/docs/examples/tanh_variants/penalized_tanh_example.hires.png differ diff --git a/docs/examples/tanh_variants/penalized_tanh_example.pdf b/docs/examples/tanh_variants/penalized_tanh_example.pdf new file mode 100644 index 0000000..44127fd Binary files /dev/null and b/docs/examples/tanh_variants/penalized_tanh_example.pdf differ diff --git a/docs/examples/tanh_variants/penalized_tanh_example.png b/docs/examples/tanh_variants/penalized_tanh_example.png new file mode 100644 index 0000000..bf9cdf7 Binary files /dev/null and b/docs/examples/tanh_variants/penalized_tanh_example.png differ diff --git a/docs/examples/tanh_variants/penalized_tanh_example.py b/docs/examples/tanh_variants/penalized_tanh_example.py new file mode 100644 index 0000000..2faf36c --- /dev/null +++ b/docs/examples/tanh_variants/penalized_tanh_example.py @@ -0,0 +1,14 @@ +import matplotlib.pyplot as plt +import torch + +from activations_plus.simple import penalized_tanh + +x = torch.linspace(-3, 3, 200) +y = penalized_tanh(x) +fig, ax = plt.subplots() +ax.plot(x.numpy(), y.numpy()) +ax.set_title("Penalized Tanh") +ax.set_xlabel("Input") +ax.set_ylabel("Output") +ax.grid(alpha=0.3) +fig.show() # This will be mocked in tests diff --git a/docs/source/conf.py b/docs/source/conf.py index d25a4df..34ce966 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -42,6 +42,21 @@ # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output -html_theme = "sphinx_rtd_theme" +html_theme = "pydata_sphinx_theme" master_doc = "index" html_static_path = ["_static"] + +# Theme options +html_theme_options = { + "github_url": "https://github.com/DanielAvdar/activations-plus", + "use_edit_page_button": True, + "show_toc_level": 2, + "navbar_align": "left", +} + +html_context = { + "github_user": "DanielAvdar", + "github_repo": "activations-plus", + "github_version": "main", + "doc_path": "docs/source", +} diff --git a/pyproject.toml b/pyproject.toml index 4ff5d0f..430e687 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -63,7 +63,7 @@ dev = [ docs = [ "sphinx>=8.2.0; python_version >= '3.11'", "sphinx>=7.0.0; python_version < '3.11'", - "sphinx-rtd-theme>=3.0.2", + "pydata-sphinx-theme>=0.13.0", "matplotlib", ]