
Atomgrad es un motor Autograd simple que tiene como objetivo estar entre Micrograd y Tinygrad que realiza Autodiff en tensores (átomos) con valor de vectores y con valor escalar junto con una biblioteca API de red neural.
sum , exp , reshape , randint , uniform , etc.).relu , sigmoid , tanh , etc.binary_cross_entropy & binary_accuracy .Puede instalar AtomGrad usando PIP:
pip install atomgrad==0.3.0Aquí hay un ejemplo simple de usar Atomgrad para calcular el gradiente de una función:
from atomgrad . atom import Atom
from atomgrad . graph import draw_dot
# create two tensors with gradients enabled
x = Atom ( 2.0 , requires_grad = True )
y = Atom ( 3.0 , requires_grad = True )
# define a function
z = x * y + x ** 2
# compute the backward pass
z . backward ()
# print the gradients
print ( x . grad ) # 7.0
print ( y . grad ) # 2.0
draw_dot ( z )
Aquí hay un ejemplo simple del uso de Atomgrad para entrenar una red neuronal de una capa oculta de 16 nodos para la clasificación binaria.
import numpy as np
from atomgrad . atom import Atom
from atomgrad . nn import AtomNet , Layer
from atomgrad . optim import SGD
from atomgrad . metrics import binary_cross_entropy , binary_accuracy
# create a model
model = AtomNet (
Layer ( 2 , 16 ),
Layer ( 16 , 16 ),
Layer ( 16 , 1 )
)
# create an optimizer
optim = SGD ( model . parameters (), lr = 0.01 )
# load some data
x = [[ 2.0 , 3.0 , - 1.0 ],
[ 3.0 , - 1.0 , 0.5 ],
[ 0.5 , 1.0 , 1.0 ],
[ 1.0 , 1.0 , - 1.0 ],
[ 0.0 , 4.0 , 0.5 ],
[ 3.0 , - 1.0 , 0.5 ]]
y = [ 1 , 1 , 0 , 1 , 0 , 1 ]
x = Atom ( x )
y = Atom ( y )
model . fit ( x , y , optim , binary_cross_entropy , binary_accuracy , epochs = 100 )
#output
'''
...
epoch: 30 | loss: 0.14601783454418182 | accuracy: 100.0%
epoch: 35 | loss: 0.11600304394960403 | accuracy: 100.0%
epoch: 40 | loss: 0.09604986757040024 | accuracy: 100.0%
epoch: 45 | loss: 0.0816292017698288 | accuracy: 100.0%
''' Un ejemplo de autodiff simple y cuatro clasificadores binarios, incluido el conjunto de datos de datos make_moons y Digits MNIST, se encuentra en el cuaderno examples/demos.ipynb .
Nota: Aunque atom.nn incluye la activación softmax y cat_cross_entropy , los resultados del modelo son bastante decepcionantes y probablemente se deban a algún error (¡por favor si lo encuentra!). Como resultado, el modelo AtomNet es el más adecuado para las tareas de redes neuronales de clasificación binaria.