import Pkg
Pkg . add ( " Lux " )
Tipp
Wenn Sie eine Version vor Version 1 von Lux.jl verwenden, lesen Sie bitte den Abschnitt „Aktualisierung auf Version 1“, um Anweisungen zum Aktualisieren zu erhalten.
Pakete | Stabile Version | Monatliche Downloads | Gesamtzahl der Downloads | Build-Status |
---|---|---|---|---|
? 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)
Suchen Sie im Beispielverzeichnis nach eigenständigen Anwendungsbeispielen. Die Dokumentation enthält Beispiele, die in geeignete Kategorien sortiert sind.
Für nutzungsbezogene Fragen nutzen Sie bitte Github Discussions, das die Indexierung von Fragen und Antworten ermöglicht. Um Fehler zu melden, verwenden Sie Github Issues oder senden Sie noch besser eine Pull-Anfrage.
Wenn Sie diese Bibliothek für Ihre wissenschaftliche Arbeit als nützlich erachten, geben Sie bitte Folgendes an:
@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 }
}
Erwägen Sie auch, unser Github-Repo als Star zu verwenden.
Dieser Abschnitt ist etwas unvollständig. Sie können einen Beitrag leisten, indem Sie zur Fertigstellung dieses Abschnitts beitragen?
Der vollständige Test von Lux.jl
dauert lange. Hier erfahren Sie, wie Sie einen Teil des Codes testen.
Für jedes @testitem
gibt es entsprechende tags
, zum Beispiel:
@testitem " SkipConnection " setup = [SharedTestSetup] tags = [ :core_layers ]
Betrachten wir zum Beispiel die Tests für SkipConnection
:
@testitem " SkipConnection " setup = [SharedTestSetup] tags = [ :core_layers ] begin
...
end
Wir können die Gruppe testen, zu der SkipConnection
gehört, indem wir core_layers
testen. Legen Sie dazu die Umgebungsvariable LUX_TEST_GROUP
fest oder benennen Sie das Tag um, um den Testumfang weiter einzuschränken:
export LUX_TEST_GROUP= " core_layers "
Oder ändern Sie direkt das Standardtest-Tag in 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 " ))
Stellen Sie jedoch sicher, dass Sie den Standardwert „all“ wiederherstellen, bevor Sie den Code senden.
Wenn Sie außerdem einen bestimmten Test basierend auf dem Namen des Testsatzes ausführen möchten, können Sie TestEnv.jl wie folgt verwenden. Beginnen Sie mit der Aktivierung der Lux-Umgebung und führen Sie dann Folgendes aus:
using TestEnv; TestEnv . activate (); using ReTestItems;
# Assuming you are in the main directory of Lux
ReTestItems . runtests ( " tests/ " ; name = " NAME OF THE TEST " )
Für die SkipConnection
-Tests wäre das:
ReTestItems . runtests ( " tests/ " ; name = " SkipConnection " )