FluxML / FastAI.jl

Repository of best practices for deep learning in Julia, inspired by fastai
https://fluxml.ai/FastAI.jl
MIT License
587 stars 51 forks source link

fastai parity #259

Open lorenzoh opened 3 years ago

lorenzoh commented 3 years ago

This issue tracks the progress on fastai parity.

Last updated 2021/08/11

Datasets

Data pipelines

Models

Training

Applications

lorenzoh commented 3 years ago

Updated the list with pointers to existing implementations

ToucheSir commented 3 years ago

I vote for reviving MLMetrics instead of rolling them into FluxTraining. I'm sure there would be many base Flux, Knet and other library users who could make use of them. Currently everybody has a incomplete subset of metrics with incompatible APIs (e.g. Avalon.jl). I would hope that we could get rid of those for a "NNlib of metrics" instead.

DoktorMike commented 3 years ago

I vote for reviving MLMetrics instead of rolling them into FluxTraining. I'm sure there would be many base Flux, Knet and other library users who could make use of them. Currently everybody has a incomplete subset of metrics with incompatible APIs (e.g. Avalon.jl). I would hope that we could get rid of those for a "NNlib of metrics" instead.

Since most of these metrics are really distances in one form or another wouldn't it be natural to use the existing implementation in Distances.jl ? But maybe I'm missing something.

darsnack commented 3 years ago

Yeah I think implementing the distance part of it in Distances.jl makes a lot of sense.

ToucheSir commented 3 years ago

I think there's still a need for a metrics package because most of the classification metrics don't make sense in Distances.jl. There's also the case of domain-specific metrics like Dice score(edit: potentially general enough to go in something like Distances) and BLEU.

CarloLucibello commented 3 years ago

there should be some distinction between losses and metrics?

ToucheSir commented 3 years ago

At the very least, the metrics package/namespace could reexport losses that are also metrics.

darsnack commented 3 years ago

Yeah I think the hierarchy would be Distances -> Metrics -> Losses. There will be losses that are not metrics (i.e. defined completely in a loss package), and losses that just reexport a metric. Similarly there will be metrics that are completely defined the metrics package, but many will reexport or build upon standard distances.

To that end, I agree that we should make use of Distances.jl as much as possible. And if there is a metric that generalizes to a distance, then we can submit a PR to Distances.jl.

lorenzoh commented 3 years ago

I agree with @darsnack! Every loss can be a metric (not in a strict mathematical sense but as a measure of model performance), but not the reverse.

lorenzoh commented 3 years ago

Also, if MLMetrics.jl is revived, FluxTraining.jl should depend on it.

lorenzoh commented 3 years ago

Updated the list

darsnack commented 2 years ago

@lorenzoh do you want to transfer stuff from here to FastAI.jl issues?

lorenzoh commented 2 years ago

I went ahead and transferred the issue to the FastAI.jl repo which should make it easier to track 👍