Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Have `train!` record, for inclusion in output, a history of the public state of every control

Abierto
#64 0 comentarios 0 reacciones 1 asignado Ver en GitHub

@ablaom ya está trabajando en esto.

Desde el 7/10/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

I propose some enhancements to address two main shortcomings of IterationControl.jl, mostly based on working on tutorials for MLJIteration.jl (which wraps MLJ models in the controls provided by IterationControl.jl):

  • While possible in practice, it is rather complicated to do things like: (i) Get a history of losses (or training losses) for training over multiple iterations (see #47); and (i) Set up a callback to record, say, evolution of some learned parameters. In both cases, you have to define and initialise containers to store the relevant trace, and also to arrange the relevant callback control to write to that container as training proceeds. When you repeat the experiment, you may need to flush the trace containers. This is inconvenient.

  • The internal state of a control is currently considered private API and the only interface point is for accessing what, from the final state, is returned in the "report" output by "train!". This seems unnecessarily opaque.

  • The "report" returned by "train!" is quite hard to grok, without delving into docs or scratching your head.

I propose:

  • Introduce a new method public_state(control, state) that exposes everything about state that might be useful to know at every control cycle, in a human readable form (named tuple, say)

  • By default, have train! record a complete history of the public state of each control, exposed in the report, with a compact=true option to just record final state (for the atypical case fallbacks are exposing large objects as part of state)

  • Make improvements to the structure and display of the report to make access more intuitive.

Among other things, these changes would likely address #62 and #47.

These changes would be necessarily breaking, although the logic of controls themselves would not change much, if at all.

Some steps required are:

  • Introduce public_state the more primitive level of EarlyStopping.jl (a dep of IterationControl.jl).
Lenguaje dominante
Julia
Estrellas
25
Forks
1
Merge medio
35 min
PR fusionados (30 d)
1

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de JuliaAI/IterationControl.jl

Todos los issues de JuliaAI/IterationControl.jl

Issues similares

Más issues de Julia

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.