Metadata-Version: 2.1
Name: fastxtend
Version: 0.0.9
Summary: A collection of extensions and addons for fastai
Home-page: https://github.com/warner-benjamin/fastxtend/tree/main/
Author: Benjamin Warner
Author-email: me@benjaminwarner.dev
License: MIT License
Keywords: fastai pytorch extensions
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pip
Requires-Dist: packaging
Requires-Dist: pandas (>=1.2)
Requires-Dist: fastai (>=2.5.1)
Requires-Dist: fastcore (>=1.3.26)
Provides-Extra: all
Requires-Dist: timm (>=0.5.4) ; extra == 'all'
Requires-Dist: kornia (>=0.6.4) ; extra == 'all'
Requires-Dist: librosa (>=0.9) ; extra == 'all'
Requires-Dist: torchaudio (>=0.10) ; extra == 'all'
Requires-Dist: primePy (>=1.3) ; extra == 'all'
Requires-Dist: colorednoise (>=2.0) ; extra == 'all'
Requires-Dist: soundfile (>=0.10.3) ; extra == 'all'
Requires-Dist: wandb (>=0.12.18) ; extra == 'all'
Provides-Extra: audio
Requires-Dist: librosa (>=0.9) ; extra == 'audio'
Requires-Dist: torchaudio (>=0.10) ; extra == 'audio'
Requires-Dist: primePy (>=1.3) ; extra == 'audio'
Requires-Dist: colorednoise (>=2.0) ; extra == 'audio'
Requires-Dist: soundfile (>=0.10.3) ; extra == 'audio'
Provides-Extra: dev
Requires-Dist: timm (>=0.5.4) ; extra == 'dev'
Requires-Dist: kornia (>=0.6.4) ; extra == 'dev'
Requires-Dist: librosa (>=0.9) ; extra == 'dev'
Requires-Dist: torchaudio (>=0.10) ; extra == 'dev'
Requires-Dist: primePy (>=1.3) ; extra == 'dev'
Requires-Dist: colorednoise (>=2.0) ; extra == 'dev'
Requires-Dist: soundfile (>=0.10.3) ; extra == 'dev'
Requires-Dist: wandb (>=0.12.18) ; extra == 'dev'
Requires-Dist: nbdev (<2,>=1.2.8) ; extra == 'dev'
Provides-Extra: vision
Requires-Dist: timm (>=0.5.4) ; extra == 'vision'
Requires-Dist: kornia (>=0.6.4) ; extra == 'vision'

# fastxtend
> fastxtend (fastai extended) is a collection of tools, extensions, and addons for fastai


## Documentation
https://fastxtend.benjaminwarner.dev

## Feature overview

**General Features**

* Flexible metrics which can log on train, valid, or both. Backwards compatible with fastai metrics.
* Easily use multiple losses and log each individual loss on train and valid.
* A simple profiler for profiling fastai training.

**Vision**

* Increase training speed using `ProgressiveResize` to automaticly apply progressive resizing.
* Apply `MixUp`, `CutMix`, or Augmentations with `CutMixUp` or `CutMixUpAugment`.
* Additional image augmentations
* Support for running fastai batch transforms on CPU.
* More attention modules
* A flexible implementation of fastai’s xresnet.

**Audio**

* `TensorAudio`, `TensorSpec`, `TensorMelSpec` objects which maintain metadata and support plotting themselves using librosa.
* A selection of performant audio augmentations inspired by fastaudio and torch-audiomentations.
* Uses TorchAudio to quickly convert `TensorAudio` waveforms into `TensorSpec` spectrograms or `TensorMelSpec` mel spectrograms using the GPU.
* Out of the box support for converting one `TensorAudio` to one or multiple `TensorSpec` or `TensorMelSpec` objects from the Datablock api.
* Audio MixUp and CutMix Callbacks.
* `audio_learner` which merges multiple `TensorSpec` or `TensorMelSpec` objects before passing to the model.

Check out the documentation for additional splitters, callbacks, schedulers, utilities, and more.

## Install

To install, run:
```
pip install fastxtend
```

To install with dependencies for vision, audio, or all tasks run one of:
```
pip install fastxtend[vision]

pip install fastxtend[audio]

pip install fastxtend[all]
```

Or to create an editable install:
```
git clone https://github.com/warner-benjamin/fastxtend.git
cd fastxtend
pip install -e ".[dev]"
```

## Usage
Like fastai, fastxtend provides safe wildcard imports using python’s `__all__`. 
```python
from fastai.vision.all import *
from fastxtend.vision.all import *
```
In general, import fastxtend after all fastai imports, as fastxtend modifies fastai. Any method modified by fastxtend is backwards compatible with the original fastai code.

## Examples
Log an accuracy metric on the training set as a smoothed metric and validation set like normal:
```python
Learner(..., metrics=[Accuracy(log_metric=LogMetric.Train, metric_type=MetricType.Smooth),
                      Accuracy()])
```

Log multiple losses as individual metrics on train and valid:
```python
mloss = MultiLoss(loss_funcs=[nn.MSELoss, nn.L1Loss], 
                  weights=[1, 3.5], loss_names=['mse_loss', 'l1_loss'])

Learner(..., loss_func=mloss, metrics=RMSE(), cbs=MultiLossCallback)
```

Apply MixUp, CutMix, or Augmentation while training:
```python
Learner(..., cbs=CutMixUpAugment)
```

Profile a fastai training loop:
```python
from fastxtend.callback import simpleprofiler

learn = Learner(...).profile()
learn.fit_one_cycle(2, 3e-3)
```

Train in channels last format:
```python
Learner(...).to_channelslast()
```

## Requirements

fastxtend requires fastai to be installed. See http://docs.fast.ai/ for installation instructions.


