import Pkg
Pkg . add ( " Lux " )
เคล็ดลับ
หากคุณใช้ Lux.jl เวอร์ชันก่อน v1 โปรดดูส่วนการอัปเดตเป็น v1 เพื่อดูคำแนะนำเกี่ยวกับวิธีการอัปเดต
แพ็คเกจ | เวอร์ชันเสถียร | ดาวน์โหลดรายเดือน | ยอดดาวน์โหลดทั้งหมด | สถานะการสร้าง |
---|---|---|---|---|
- 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)
ดูในไดเร็กทอรีตัวอย่างเพื่อดูตัวอย่างการใช้งานในตัวเอง เอกสารประกอบมีตัวอย่างที่จัดเรียงตามหมวดหมู่ที่เหมาะสม
สำหรับคำถามที่เกี่ยวข้องกับการใช้งาน โปรดใช้การสนทนา Github ซึ่งอนุญาตให้จัดทำดัชนีคำถามและคำตอบ หากต้องการรายงานจุดบกพร่อง ให้ใช้ปัญหา GitHub หรือส่งคำขอดึงจะดีกว่า
หากคุณพบว่าห้องสมุดนี้มีประโยชน์ในงานวิชาการ กรุณาอ้างอิง:
@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 }
}
ลองพิจารณานำแสดงโดย repo github ของเราด้วย
ส่วนนี้ค่อนข้างไม่สมบูรณ์ คุณสามารถมีส่วนร่วมโดยมีส่วนทำให้ส่วนนี้เสร็จสิ้นหรือไม่
การทดสอบ Lux.jl
แบบสมบูรณ์ใช้เวลานาน ต่อไปนี้คือวิธีทดสอบโค้ดบางส่วน
สำหรับแต่ละ @testitem
จะมี tags
ที่เกี่ยวข้อง ตัวอย่างเช่น:
@testitem " SkipConnection " setup = [SharedTestSetup] tags = [ :core_layers ]
ตัวอย่างเช่น ลองพิจารณาการทดสอบสำหรับ SkipConnection
:
@testitem " SkipConnection " setup = [SharedTestSetup] tags = [ :core_layers ] begin
...
end
เราสามารถทดสอบกลุ่มที่ SkipConnection
อยู่ได้โดยการทดสอบ core_layers
โดยตั้งค่าตัวแปรสภาพแวดล้อม LUX_TEST_GROUP
หรือเปลี่ยนชื่อแท็กเพื่อจำกัดขอบเขตการทดสอบให้แคบลง:
export LUX_TEST_GROUP= " core_layers "
หรือแก้ไขแท็กทดสอบเริ่มต้นโดยตรงใน 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 " ))
แต่ต้องแน่ใจว่าได้คืนค่าเริ่มต้นเป็น "ทั้งหมด" ก่อนส่งรหัส
นอกจากนี้ หากคุณต้องการรันการทดสอบเฉพาะตามชื่อของชุดทดสอบ คุณสามารถใช้ TestEnv.jl ได้ดังต่อไปนี้ เริ่มต้นด้วยการเปิดใช้งานสภาพแวดล้อม Lux จากนั้นรันสิ่งต่อไปนี้:
using TestEnv; TestEnv . activate (); using ReTestItems;
# Assuming you are in the main directory of Lux
ReTestItems . runtests ( " tests/ " ; name = " NAME OF THE TEST " )
สำหรับการทดสอบ SkipConnection
จะเป็น:
ReTestItems . runtests ( " tests/ " ; name = " SkipConnection " )