Taggable functors
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- julia
- Ambito
- machine-learning
Direzione di ricerca
Inizia leggendo l’issue di Flux.jl indicata e il comportamento di attraversamento di @functor e fmap descritto qui. Confronta il modo in cui trainable e pruneable sono attualmente definiti in Flux e FluxPrune.jl. Per considerarlo completato sarebbe necessario concordare un design per i children con tag e per l’estensione dinamica dei tag, seguito da un piano di implementazione e da test; questa issue non identifica ancora file o test.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
In Flux, we have trainable to designate a subset of leaves as nodes to walk when updating parameters for training. In FluxPrune.jl, I defined pruneable to designate a subset of leaves for pruning (note that these cannot be the same as the trainable nodes).
Right now this creates an unfortunate circumstance as discussed in https://github.com/FluxML/Flux.jl/issues/1946. Users need to @functor their types, remember to define trainable if necessary. Potentially, to use FluxPrune.jl, they might want to remember to define pruneable. On the developer side of things, we can use the walk keyword of fmap to walk the differently labeled leaf nodes. But this usually requires defining a separate walk function based on the subset that you are hoping to target.
An alternative would be to build this information directly into what @functor defines. Right now, each child of a functor has a name and a value. I propose adding "tags" which would be a tuple of symbols. Then we could do something like
@functor Conv trainable=(weight, bias) pruneable=(weight,)
Ideally, this mechanism should be dynamic, meaning that if Flux.jl already defines the trainable leaves of a type, then another package like FluxPrune.jl should be able to add a pruneable tag on top of that.
My hope is that we make it easier on users by only having one line for making your type Flux-compatible. And we make it easier on developers by making it easy to filter nodes when walking by tag. I haven't spent a lot of time on the implementation aspect, but I just wanted to float the notion of tags first and get some feedback.
- Lingua principale
- Julia
- Stelle
- 123
- Fork
- 18
- Merge medio
- 11h 21m
- PR unite (30g)
- 2
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di FluxML/Functors.jl
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
FluxML/Functors.jl#111 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 45/100
FluxML/Functors.jl#81 ·
-
breaking
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
FluxML/Functors.jl#77 · 1 commento · 1 reazione ·
-
`@functor` is confused about properties vs fieldsForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 35/100
FluxML/Functors.jl#46 · 5 commenti · 3 reazioni ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
FluxML/Functors.jl#40 · 5 commenti ·
Tutte le issue di FluxML/Functors.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
MagneticResonanceImaging/MRIReco.jl#366 ·
I maintainer di solito rispondono entro 3 giorni
-
`AdamW` gives `NaN` for zero-gradient entries of `Float16` parameters (epsilon underflows to 0)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
FluxML/Optimisers.jl#253 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
JuliaGraphs/GraphNeuralNetworks.jl#736 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
`poissonians` is not public, unlike `brownians` and `jumps`Forse già presa @isaacsas l’ha presa oggi. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
SciML/ModelingToolkit.jl#5389 ·
I maintainer di solito rispondono entro 2 giorni