import Pkg
Pkg . add ( " Lux " )
Conseil
Si vous utilisez une version antérieure à la v1 de Lux.jl, veuillez consulter la section Mise à jour vers la v1 pour obtenir des instructions sur la façon de mettre à jour.
Forfaits | Version stable | Téléchargements mensuels | Total des téléchargements | Statut de construction |
---|---|---|---|---|
? Lux.jl | ||||
└ ? LuxLib.jl | ||||
└ ? LuxCore.jl | ||||
└ ? MLDataDevices.jl | ||||
└ ? WeightInitializers.jl | ||||
└ ? LuxTestUtils.jl | ||||
└ ? LuxCUDA.jl |
using Lux, Random, Optimisers, Zygote
# using LuxCUDA, AMDGPU, Metal, oneAPI # Optional packages for GPU support
# Seeding
rng = Random . default_rng ()
Random . seed! (rng, 0 )
# Construct the layer
model = Chain ( Dense ( 128 , 256 , tanh), Chain ( Dense ( 256 , 1 , tanh), Dense ( 1 , 10 )))
# Get the device determined by Lux
dev = gpu_device ()
# Parameter and State Variables
ps, st = Lux . setup (rng, model) |> dev
# Dummy Input
x = rand (rng, Float32, 128 , 2 ) |> dev
# Run the model
y, st = Lux . apply (model, x, ps, st)
# Gradients
# # First construct a TrainState
train_state = Lux . Training . TrainState (model, ps, st, Adam ( 0.0001f0 ))
# # We can compute the gradients using Training.compute_gradients
gs, loss, stats, train_state = Lux . Training . compute_gradients ( AutoZygote (), MSELoss (),
(x, dev ( rand (rng, Float32, 10 , 2 ))), train_state)
# # Optimization
train_state = Training . apply_gradients! (train_state, gs) # or Training.apply_gradients (no `!` at the end)
# Both these steps can be combined into a single call
gs, loss, stats, train_state = Training . single_train_step! ( AutoZygote (), MSELoss (),
(x, dev ( rand (rng, Float32, 10 , 2 ))), train_state)
Recherchez dans le répertoire des exemples des exemples d'utilisation autonomes. La documentation contient des exemples classés dans des catégories appropriées.
Pour les questions liées à l'utilisation, veuillez utiliser Github Discussions qui permet d'indexer les questions et réponses. Pour signaler des bogues, utilisez les problèmes github ou, mieux encore, envoyez une pull request.
Si vous avez trouvé cette bibliothèque utile dans le cadre de vos travaux universitaires, veuillez citer :
@software { pal2023lux ,
author = { Pal, Avik } ,
title = { {Lux: Explicit Parameterization of Deep Neural Networks in Julia} } ,
month = apr,
year = 2023 ,
note = { If you use this software, please cite it as below. } ,
publisher = { Zenodo } ,
version = { v0.5.0 } ,
doi = { 10.5281/zenodo.7808904 } ,
url = { https://doi.org/10.5281/zenodo.7808904 }
}
@thesis { pal2023efficient ,
title = { {On Efficient Training & Inference of Neural Differential Equations} } ,
author = { Pal, Avik } ,
year = { 2023 } ,
school = { Massachusetts Institute of Technology }
}
Pensez également à mettre en vedette notre dépôt github.
Cette section est quelque peu incomplète. Vous pouvez contribuer en contribuant à terminer cette section ?.
Le test complet de Lux.jl
prend beaucoup de temps, voici comment tester une partie du code.
Pour chaque @testitem
, il existe tags
correspondantes, par exemple :
@testitem " SkipConnection " setup = [SharedTestSetup] tags = [ :core_layers ]
Par exemple, considérons les tests pour SkipConnection
:
@testitem " SkipConnection " setup = [SharedTestSetup] tags = [ :core_layers ] begin
...
end
Nous pouvons tester le groupe auquel appartient SkipConnection
en testant core_layers
. Pour ce faire, définissez la variable d'environnement LUX_TEST_GROUP
ou renommez la balise pour affiner davantage la portée du test :
export LUX_TEST_GROUP= " core_layers "
Ou modifiez directement la balise test par défaut dans runtests.jl
:
# const LUX_TEST_GROUP = lowercase(get(ENV, "LUX_TEST_GROUP", "all"))
const LUX_TEST_GROUP = lowercase ( get ( ENV , " LUX_TEST_GROUP " , " core_layers " ))
Mais assurez-vous de restaurer la valeur par défaut "all" avant de soumettre le code.
De plus, si vous souhaitez exécuter un test spécifique basé sur le nom de l'ensemble de tests, vous pouvez utiliser TestEnv.jl comme suit. Commencez par activer l'environnement Lux, puis exécutez ce qui suit :
using TestEnv; TestEnv . activate (); using ReTestItems;
# Assuming you are in the main directory of Lux
ReTestItems . runtests ( " tests/ " ; name = " NAME OF THE TEST " )
Pour les tests SkipConnection
, ce serait :
ReTestItems . runtests ( " tests/ " ; name = " SkipConnection " )