activations: a package contains different kinds of activation functions
Project description
AReLU: Attention-based-Rectified-Linear-Unit
Activation function player with PyTorch on supervised/transfer/meta learning.
Content
1. Introduction
This repository is the implementation of paper AReLU: Attention-based-Rectified-Linear-Unit.
This project is friendly to newcomers of PyTorch. You can design and compare different activation functions under different learning tasks.
2. Install
Install activations as package
pip install activations
conda create -n AFP python=3.7 -y
conda activate AFP
pip install -r requirements.txt
NOTE: PAU is only CUDA supported. You have to compile it first:
pip install airspeed==0.5.14
cd activations/pau/cuda
python setup.py install
The code of PAU is directly token from PAU, if you occur any problems while compiling, please refer to the original repository.
If you just want to have a quick start, and do not want to compile with PAU, just comment out the following lines in activations/__init__.py:
try:
from .pau.utils import PAU
__class_dict__["PAU"] = PAU
except Exception:
raise NotImplementedError("")
3. Run
python -m visdom.server & # start visdom
python main.py # run with default parameters
Click here to check your training process.
NOTE: The program will download and save dataset under args.data_root automatically.
Run with specified parameters
python main_mnist.py -h
usage: main_mnist.py [-h] [--batch_size BATCH_SIZE] [--lr LR] [--lr_aux LR_AUX]
[--epochs EPOCHS] [--epochs_aux EPOCHS_AUX] [--times TIMES]
[--data_root DATA_ROOT]
[--dataset {MNIST,SVHN,EMNIST,KMNIST,QMNIST,FashionMNIST}]
[--dataset_aux {MNIST,SVHN,EMNIST,KMNIST,QMNIST,FashionMNIST}]
[--num_workers NUM_WORKERS]
[--net {BaseModel,ConvMNIST,LinearMNIST}] [--resume RESUME]
[--af {APL,AReLU,GELU,Maxout,Mixture,SLAF,Swish,ReLU,ReLU6,Sigmoid,LeakyReLU,ELU,PReLU,SELU,Tanh,RReLU,CELU,Softplus,PAU,all}]
[--optim {SGD,Adam}] [--cpu] [--exname {AFS,TransferLearning}]
[--silent]
Activation Function Player with PyTorch.
optional arguments:
-h, --help show this help message and exit
--batch_size BATCH_SIZE
batch size for training
--lr LR learning rate
--lr_aux LR_AUX learning rate of finetune. only used while transfer
learning.
--epochs EPOCHS training epochs
--epochs_aux EPOCHS_AUX
training epochs. only used while transfer learning.
--times TIMES repeat runing times
--data_root DATA_ROOT
the path to dataset
--dataset {MNIST,SVHN,EMNIST,KMNIST,QMNIST,FashionMNIST}
the dataset to play with.
--dataset_aux {MNIST,SVHN,EMNIST,KMNIST,QMNIST,FashionMNIST}
the dataset to play with. only used while transfer
learning.
--num_workers NUM_WORKERS
number of workers to load data
--net {BaseModel,ConvMNIST,LinearMNIST}
network architecture for experiments. you can add new
models in ./models.
--resume RESUME pretrained path to resume
--af {APL,AReLU,GELU,Maxout,Mixture,SLAF,Swish,ReLU,ReLU6,Sigmoid,LeakyReLU,ELU,PReLU,SELU,Tanh,RReLU,CELU,Softplus,PAU,all}
the activation function used in experiments. you can
specify an activation function by name, or try with
all activation functions by `all`
--optim {SGD,Adam} optimizer used in training.
--cpu with cuda training. this would be much faster.
--exname {AFS,TransferLearning}
experiment name of visdom.
--silent if True, shut down the visdom visualizer.
Full Experiment
nohup ./main_mnist.sh > main_mnist.log &
4. Explore
New activation functions
-
Write a python script file under
activations
, such as new_activation_functions.py, where contains the implementation of new activation function. -
Import new activation functions in activations/__init__.py.
New network structure
-
Write a python script file under
models
, such as new_network_structure.py, where contains the definition of new network structure. New defined network structure should be a subclass of BaseModel, which defined inmodels/models.py
. -
Import new network structure in models/__init__.py.
NOTE: New activation functions and network sctructures will be automatically added into argparse. So, it is not necessary to modify main.py
.
5. Meta Learning
Setup
pip install learn2learn
Run
python meta_mnist.py --help
usage: meta_mnist.py [-h] [--ways N] [--shots N] [-tps N] [-fas N]
[--iterations N] [--lr LR] [--maml-lr LR] [--no-cuda]
[--seed S] [--download-location S]
[--afs {APL,AReLU,GELU,Maxout,Mixture,SLAF,Swish,ReLU,ReLU6,Sigmoid,LeakyReLU,ELU,PReLU,SELU,Tanh,RReLU,CELU,Softplus,PAU}]
Learn2Learn MNIST Example
optional arguments:
-h, --help show this help message and exit
--ways N number of ways (default: 5)
--shots N number of shots (default: 1)
-tps N, --tasks-per-step N
tasks per step (default: 32)
-fas N, --fast-adaption-steps N
steps per fast adaption (default: 5)
--iterations N number of iterations (default: 1000)
--lr LR learning rate (default: 0.005)
--maml-lr LR learning rate for MAML (default: 0.01)
--no-cuda disables CUDA training
--seed S random seed (default: 1)
--download-location S
download location for train data (default : data
--afs {APL,AReLU,GELU,Maxout,Mixture,SLAF,Swish,ReLU,ReLU6,Sigmoid,LeakyReLU,ELU,PReLU,SELU,Tanh,RReLU,CELU,Softplus,PAU}
activation function used to meta learning.
Run all
nohup ./meta_mnist.sh > meta_mnist.log &
Citation
If you use this code, please cite the following paper:
@misc{AReLU,
Author = {Dengsheng Chen and Kai Xu},
Title = {AReLU: Attention-based Rectified Linear Unit},
Year = {2020},
Eprint = {arXiv:2006.13858},
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file activations-0.1.0.tar.gz
.
File metadata
- Download URL: activations-0.1.0.tar.gz
- Upload date:
- Size: 14.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0.post20201207 requests-toolbelt/0.9.1 tqdm/4.55.2 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a40a472597b206bc810e725b8bbe3a77991b8b11a94c35816508f9494d22fa81 |
|
MD5 | 45adb6bd5ecb78f9384d96ac1877bca7 |
|
BLAKE2b-256 | 9a0349ab919fb102931417418d1a95de5fc6ce942f991add7a5190e704885bbb |
File details
Details for the file activations-0.1.0-py3.8.egg
.
File metadata
- Download URL: activations-0.1.0-py3.8.egg
- Upload date:
- Size: 34.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0.post20201207 requests-toolbelt/0.9.1 tqdm/4.55.2 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56414abcf254b8da5b3a52fb5728083a4b8a476d6276f9e74cb2ea444f97c468 |
|
MD5 | c44c74abcf7e48261042514bed0a8bc5 |
|
BLAKE2b-256 | 9db10a24cfd869542c98c8b01ef7934186635c79b3d9df9aa01ba48f33b89ccb |
File details
Details for the file activations-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: activations-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.0.0.post20201207 requests-toolbelt/0.9.1 tqdm/4.55.2 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e7b35a2b5b17e432d5c08a0813e3a8182bb9b25934d4dcefb3624ca8e19a847 |
|
MD5 | d474b10f66bbb6156ac9d9bc34b870e0 |
|
BLAKE2b-256 | b298bcbe2a66048e78dc1a16bf3d77510ef3f11f7a0475670ec5f05248e40549 |