Как DiffEqFlux.sciml_train работает для нейронных ODE в Юлии? - PullRequest
1 голос
/ 19 февраля 2020

У меня общий вопрос о том, как обучаются нейронные сети ODE в Юлии. Выбираются ли точки данных из tspan, в котором определен Nural ODE, и на них вычисляются обновления параметров? Другими словами, происходит ли некоторая перестановка и пакетирование во время тренировки или потери вычисляются по всем точкам данных в tspan?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Я нашел ответ о том, что Джулия делает здесь: https://github.com/JuliaDiffEq/DiffEqFlux.jl/blob/master/src/train.jl.

    "Optimizes the `loss(θ,curdata...)` function with respect to the parameter vector
`θ` iterating over the `data`. By default the data iterator is empty, i.e.
`loss(θ)` is used. The first output of the loss function is considered the loss.
Extra outputs are passed to the callback."

Я думаю, что для пакетной обработки необходимо сэмплировать точки данных и затем запустить Flux.train для них в al oop, выдавая в качестве входных данных точки пакетной обработки.

0 голосов
/ 20 февраля 2020

параметры оптимизируются в соответствии с минимизацией функции потерь. Так что вам решать, как происходит выборка в функции потерь. Обычно можно сравнить выходные данные с дискретными точками данных, в случае, если они становятся вашими дискретными точками.

Но neuralODE не обрабатывает это - вы. Это функция потерь

...