A neat instrument designed for visualizing neural networks.
Project description
aNETomy
A neat instrument designed for visualizing neural networks.
Experience seamless visualization without the burden of conversion.
🚀 Spotlight
🎯 Effortless Visualization
Given that PyTorch is an imperative framework, to visualize on the fly could be very useful for developers. aNETomy sidesteps the prep and conversion while keeping the accessibility and compatibility.
📊 Comparison
The following comparison are concluded according to hands-on practical experience. It could be wrong somewhere.
Feature | aNETomy | Netron | TensorBoard | torchviz | torchinfo | torchview | torchlens | torchexplorer |
---|---|---|---|---|---|---|---|---|
Less Preparation | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Handles Dynamic Models | ✅ | ❌ | ⚠️ | ❌ | ⚠️ | ✅ | ✅ | ❌ |
Interactive Graphs | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
Tensor Shapes | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Structure Completeness | ✅ | ✅ | ✅ | ❌ based on autograd | ⚠️ some functions are missing | ⚠️ | ✅ | ❌ based on autograd |
Compatibility | ✅ | ⚠️ unfriendly to some ops | ⚠️ limited | ✅ | ❌ No | ✅ | ✅ | ✅ |
⚡ Quick Start
You can simply take it as a wrapper or help you plot curves.
from anetomy import Inspector
import torch
from torch import nn
import torch.nn.functional as F
# define the toy model
class Dense(nn.Module):
def __init__(self):
super().__init__()
self.lin = nn.Linear(28*28*2, 10)
def forward(self, x):
x = F.relu(x, inplace=True)
x = x.reshape(-1,)
y = self.lin(x)
return y
class NeuralNetwork(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(3, 8, 3, padding=1)
self.mpool1 = nn.MaxPool2d(3, stride=2, ceil_mode=True)
self.dense = Dense()
def forward(self, x, scale=1):
x *= scale
y = self.conv1(x)
y = self.mpool1(y)
y = self.dense(y)
return y
# input dummy data to visualize
net = NeuralNetwork()
dummy_x = torch.randn(1, 3, 28, 28)
dummy_s = 2
ant = Inspector(graph_path='./toynn.png')
ant.dissect(net, dummy_x, scale=dummy_s)
ant.draw(3)
📦 Installation
At first, install graphviz beforehand.
🍎 macOS
Use Homebrew for a quick installation:
brew install graphviz
🐧 Linux
For Debian-based systems (Ubuntu, Debian):
sudo apt update && sudo apt install graphviz
For Arch-based systems (Arch, Manjaro):
sudo pacman -S graphviz
For RHEL-based systems (Fedora, CentOS):
sudo dnf install graphviz
🐍 Python
Then install the bindings.
pip install graphviz
Finally, install anetomy via pip.
pip install anetomy
❤️ Support
If you find aNETomy helpful, please give it a ⭐ on GitHub! ▶️ https://github.com/SeriaQ/aNETomy
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 Distribution
File details
Details for the file anetomy-0.1.0.tar.gz
.
File metadata
- Download URL: anetomy-0.1.0.tar.gz
- Upload date:
- Size: 16.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
cc775490721c5fe90c4ca4aa41dae159c2aead6b51dbe9bd433f7c2fc1092d0d
|
|
MD5 |
dd50e1219e4caff47434d2144c4133fe
|
|
BLAKE2b-256 |
810d98269457992a250b6856175d644a670c0dc644c3665875841b2f3df861b6
|
File details
Details for the file anetomy-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: anetomy-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
59115f74dd3d53d6e73076706560fcc7965b94066993b294b579f4cf2dfe650c
|
|
MD5 |
fc33a22770792937303c6d9070e5bfbc
|
|
BLAKE2b-256 |
29ee3e260ad2a42f83e8f493ce5536e806473808474fb6e3c66b2ef10fb20a38
|