An implementation of softmax linear unit (solu) in PyTorch
Project description
SoLU - Softmax Linear Unit
This repository packages an implementation of Sofmax Linear Unit, as proposed in Softmax Linear Units.
Module Structure
SoLU -> SoLU, SoLULayer
Performance Penalty Mitigation
The original paper talks about a performance penalty with softmax linear unit which can be mitigated with an additional Layer Norm. This mitigation has been applied in the SoLULayer module in this package. The activation function itself is in the SoLU module.
Example Usage
Installation
pip install softmax-linear-unit
Code import
[!NOTE]
SoLUandSoLULayeraretorch.nnmodules and hence can be used in any pytorch model definition.
import torch
from SoLU import SoLULayer, SoLU
@torch.no_grad()
def main():
# batch_size=2, seq_len=5, hidden_dim=4
x = torch.randn(2, 5, 4)
# Initialize the layer (SoLU + LayerNorm)
solu_block = SoLULayer(hidden_size=4)
# Forward Pass
output = solu_block(x)
print(output)
print(output.size())
if __name__ == "__main__":
main()
You can also check main.py
Local Dev
Env
# make sure to have uv installed
# also python 3.12.11
uv sync
source .venv/bin/activate
Ruff and Pre-Commit
By default, pre-commit will run ruff formatting with the --fix flag.
[!NOTE] The pre-commit configuration can be found in the
.pre-commit-config.yamlfile.
pre-commit install
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file softmax_linear_unit-1.0.4.tar.gz.
File metadata
- Download URL: softmax_linear_unit-1.0.4.tar.gz
- Upload date:
- Size: 54.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a71da28c32c3ce5156d444af3001fbcd3fcee32359eb834f832a759f8c5f00f
|
|
| MD5 |
ac250a8d8c3ffa32cee140d01e6b2f40
|
|
| BLAKE2b-256 |
37ee600d5a7c393986b63893f96f598b5c949f7b434392abf027c3c997c21d5a
|
File details
Details for the file softmax_linear_unit-1.0.4-py3-none-any.whl.
File metadata
- Download URL: softmax_linear_unit-1.0.4-py3-none-any.whl
- Upload date:
- Size: 27.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42c7439993db0f8a9ce13b18de67475d08c89968cb724731fcc93e635ea3dd15
|
|
| MD5 |
df0834729d255defd5d5a6c33b39eeff
|
|
| BLAKE2b-256 |
662960f40db596ad8698aab7319e450233c03ee2f9f345689fb5c4640c16c5ee
|