Echo-AI
Python package containing all mathematical backend algorithms used in Machine Learning. The full documentation for Echo is provided here.
Table of Contents
About
Echo-AI Package is created to provide an implementation of the most promising mathematical algorithms, which are missing in the most popular deep learning libraries, such as PyTorch, Keras and TensorFlow.
Activation Functions
The package contains implementation for following activation functions (✅ - implemented functions, 🕑 - functions to be implemented soon, :white_large_square: - function is implemented in the original deep learning package):
# | Function | Equation | Keras | PyTorch | TensorFlow-Keras | TensorFlow - Core |
---|---|---|---|---|---|---|
1 | Weighted Tanh | ✅ | ✅ | ✅ | 🕑 | |
2 | Swish | ✅ | ✅ | ✅ | 🕑 | |
3 | ESwish | ✅ | ✅ | ✅ | 🕑 | |
4 | Aria2 | ✅ | ✅ | ✅ | 🕑 | |
5 | ELiSH | ✅ | ✅ | ✅ | 🕑 | |
6 | HardELiSH | ✅ | ✅ | ✅ | 🕑 | |
7 | Mila | ✅ | ✅ | ✅ | 🕑 | |
8 | SineReLU | ✅ | ✅ | ✅ | 🕑 | |
9 | Flatten T-Swish | ✅ | ✅ | ✅ | 🕑 | |
10 | SQNL | ✅ | ✅ | ✅ | 🕑 | |
11 | ISRU | ✅ | ✅ | ✅ | 🕑 | |
12 | ISRLU | ✅ | ✅ | ✅ | 🕑 | |
13 | Bent's identity | ✅ | ✅ | ✅ | 🕑 | |
14 | Soft Clipping | ✅ | ✅ | ✅ | 🕑 | |
15 | SReLU | ✅ | ✅ | ✅ | 🕑 | |
15 | BReLU | 🕑 | ✅ | ✅ | 🕑 | |
16 | APL | 🕑 | ✅ | ✅ | 🕑 | |
17 | Soft Exponential | ✅ | ✅ | ✅ | 🕑 | |
18 | Maxout | 🕑 | ✅ | ✅ | 🕑 | |
19 | Mish | ✅ | ✅ | ✅ | 🕑 | |
20 | Beta Mish | ✅ | ✅ | ✅ | 🕑 | |
21 | RReLU | 🕑 | ⬜ | 🕑 | 🕑 | |
22 | CELU | ✅ | ⬜ | ✅ | 🕑 | |
23 | ReLU6 | ✅ | ⬜ | 🕑 | 🕑 | |
24 | HardTanh | ✅ | ⬜ | ✅ | 🕑 | |
25 | GLU | 🕑 | ⬜ | 🕑 | 🕑 | |
26 | LogSigmoid | ✅ | ⬜ | ✅ | 🕑 | |
27 | TanhShrink | ✅ | ⬜ | ✅ | 🕑 | |
28 | HardShrink | ✅ | ⬜ | ✅ | 🕑 | |
29 | SoftShrink | ✅ | ⬜ | ✅ | 🕑 | |
30 | SoftMin | ✅ | ⬜ | ✅ | 🕑 | |
31 | LogSoftmax | ✅ | ⬜ | ✅ | 🕑 | |
32 | Gumbel-Softmax | 🕑 | ⬜ | 🕑 | 🕑 | |
33 | LeCun's Tanh | ✅ | ✅ | ✅ | 🕑 | |
34 | TaLU | ✅ | 🕑 | ✅ | 🕑 |
Repository Structure
The repository has the following structure:
- echoAI # main package directory
| - Activation # sub-package containing activation functions implementation
| |- Torch # sub-package containing implementation for PyTorch
| | | - functional.py # script which contains implementation of activation functions
| | | - weightedTanh.py # activation functions wrapper class for PyTorch
| | | - ... # PyTorch activation functions wrappers
| |- Keras # sub-package containing implementation for Keras
| | | - custom_activations.py # script which contains implementation of activation functions
| |- TF_Keras # sub-package containing implementation for Tensorflow-Keras
| | | - custom_activation.py # script which contains implementation of activation functions
| - __init__.py
- Observations # Folder containing other assets
- docs # Sphinx documentation folder
- LICENSE # license file
- README.md
- setup.py # package setup file
- Smoke_tests # folder, which contains scripts with demonstration of activation functions usage
- Unit_tests # folder, which contains unit test scripts
Setup Instructions
To install echoAI package from PyPI run the following command:
$ pip install echoAI
Code Examples:
Sample scripts are provided in Smoke_tests folder.
PyTorch:
# import PyTorch
import torch
# import activation function from echoAI
from echoAI.Activation.Torch.mish import Mish
# apply activation function
mish = Mish()
t = torch.tensor(0.1)
t_mish = mish(t)
Keras:
# import Keras
from keras import layers
from keras.models import Model
from keras.layers import Input, Dense, Activation, ZeroPadding2D, BatchNormalization, Flatten, Conv2D
# import activation function from echoAI
from echoAI.Activation.Keras.custom_activations import Mish
def CNNModel(input_shape):
X_input = Input(input_shape)
X = ZeroPadding2D((3, 3))(X_input)X
X = Conv2D(32, (3, 3), strides = (1, 1), name = 'conv0')(X)
X = BatchNormalization(axis = 3, name = 'bn0')(X)
# apply the activation function
X = Mish()(X)
# MAXPOOL
X = MaxPooling2D((2, 2), name='max_pool')(X)
# FLATTEN X (means convert it to a vector) + FULLYCONNECTED
X = Flatten()(X)
X = Dense(10, activation='softmax', name='fc')(X)
# Create model
model = Model(inputs = X_input, outputs = X, name='CNNModel')
return model
TensorFlow Keras:
#import tensorflow
import tensorflow as tf
from tensorflow.keras import layers
from tensorflow.keras.layers import Dense, Flatten
# import activation function from echoAI
from echoAI.Activation.TF_Keras.custom_activation import Mish
model = tf.keras.Sequential([
layers.Flatten(),
layers.Dense(128, input_shape=(784,)),
Mish(), # use the activation function
layers.Dense(64, activation='relu'),
layers.Dense(10, activation='softmax')])
# Compile the model
model.compile(optimizer = "adam", loss = "mean_squared_error", metrics = ["accuracy"])
# Fit the model
model.fit(x = X_train, y = y_train, epochs = 3, batch_size = 128)