Skip to content

Latest commit

 

History

History
1006 lines (629 loc) · 32.8 KB

CHANGES.md

File metadata and controls

1006 lines (629 loc) · 32.8 KB

Changes

Most recent releases are shown at the top. Each release shows:

  • New: New classes, methods, functions, etc
  • Changed: Additional parameters, changes to inputs or outputs, etc
  • Fixed: Bug fixes that don't change documented behaviour

Note that the top-most release changes in the unreleased master branch on Github. Parentheses after an item show the name or github id of the contributor of that change.

1.0.62.dev0 (Work In Progress)

New:

Changed:

Fixed:

1.0.61.dev0 (Work In Progress)

New:

Changed:

Fixed:

1.0.60 (2019-12-28)

New:

Changed:

Fixed:

1.0.59 (2019-10-26)

New:

Changed:

Fixed:

Learner.get_preds and Learner.TTA now work in FP16

1.0.58 (2019-09-29)

New:

Changed:

  • MultiLabelFbeta isn't a LearnerCallback anymore and can be passed as a metric.

Fixed:

  • typing removed as a dep since it's done nothing since py34 and we require py35+.

1.0.57 (2019-08-09)

New:

Changed:

Fixed:

1.0.56 (2019-08-06)

New:

  • QRNNs now work in mixed precision and can be twice as fast on a modern GPU (if all dims are multiples of 8)

Changed:

Fixed:

1.0.55 (2019-07-11)

New:

Changed:

Fixed:

1.0.54 (2019-06-19)

New:

  • torch_core.Module is a replacement for nn.Module that doesn't require calling super().__init__
  • torch_core.Module is implemented using new metaclass PrePostInit which will call optional __pre_init__ and __post_init__ methods

1.0.53 (2019-06-10)

Breaking changes:

  • In the AWD-LSTM default config, the default embedding size is now 1152, for faster fp16 training. New pretrained models have been released accordingly, the old pretrained model (with embedding size of 1150) is still available at https://s3.amazonaws.com/fast-ai-modelzoo/wt103-1.tgz

New:

  • sentencepiece tokenizer in fastai.text via SPProcessor
  • a backward pretrained model for NLP (automatically used if the databunch was created via the datablock API using backwards=True)
  • bunzip(fn:PathOrStr): bunzip a file
  • working_directory: context manager to change to a directory and return to original directory when done
  • np_func: decorator for creating metrics from numpy functions

Changed:

  • a Vocab is either exactly of size max_vocab or a size that is a multiple of 8. This coupled with the breaking change of embedding size 1152 (also a multiple of 8) allows a speed-up of 2 to 3 when training a language model in mixed precision.

Fixed:

  • get_language_model: pretrained_fnames no longer requires pretrained be False

1.0.52 (2019-04-26)

New:

  • added defaults.silent that controls whether fit calls print out any output.

Changed:

  • added support for defaults.extra_callback_fns

Fixed:

  • StopAfterNBatches and TerminateOnNaNCallback fixed not to run validation

1.0.51 (2019-04-01)

Breaking changes:

  • Loading and saving. Added option to save/load from streams (buffers or file pointers). Note In all save/load related functions (Learn.save, Learn.export, load_learner, DataBunch.save, load_data), the parameter name fname was renamed to file.

New:

Changed:

Fixed:

  • Default to using training set for batch_stats instead of validation
  • Bug in averaging the losses in Mixup

1.0.50 (2019-03-19)

New:

Changed:

Fixed:

1.0.49 (2019-03-15)

New:

Changed:

  • MixedPrecisionCallback: dynamic now defaults to True
  • fit now takes a BasicLearner

Fixed:

  • bug in DataBunch.export or Learner.export in object detection
  • TextClassificationInterpretation now works again (thanks to code from mikonapoli)
  • create_cnn hangs on Windows with PyTorch 1.0.1

1.0.48 (2019-03-09)

Breaking changes:

  • Learner.distributed is now called Learner.to_distributed

New:

  • Learner.to_parallel: callback wraps in nn.DataParallel during train and unwraps at end
  • Initial work to provide a GeneralOptimizer that keeps track and update given Statistic then perform the step you want.

Fixed:

  • A few Callbacks didn't have proper return

1.0.47 (2019-03-06)

Breaking changes:

  • create_cnn becomes cnn_learner
  • random_split_by_pct becomes split_by_rand_pct
  • no_split becomes split_none

New:

  • tensorboard callback to use Tensorboard (requires installing tensorboardx)
  • LabelLists.pre_transform: call transforms on PIL.Image, before converting to float tensor
  • LabelLists.presize: standard Imagenet image resizing/cropping using pre_transform
  • compose: compose a list of functions
  • Added functional [test] links to docs.fast.ai
  • TrackEpochCallback: Store completed epoch number in learn.model_dir/name
  • rank_distrib: get rank of distributed process

Changed:

  • Change flip_lr to use much faster method
  • In text_classifier_learner the outputs of the encoder corresponding to pad indices are ignored in the poolings
  • Default number of OpenMP threads to 2 (previously 4), due to observed performance benefits
  • purge now relies on a writable learn.model_dir, which can be set to a full writable path in case learn.path is not writable (kaggle, et al)
  • In any event of a Callback returning a dictionary will update the state of the CallbackHandler
  • When creating a custom metric in a Callback, instead of storing the result in self.metric, you should add it to last_metrics using the method above (see https://docs.fast.ai/metrics.html#Creating-your-own-metric).

Fixed:

  • Do nothing if Image.resize called with image already at required size
  • Lighting transforms moved to later in pipeline to avoid redundant computation

1.0.46 (2019-02-25)

Breaking change:

  • In CollabDataBunch, pct_val is renamed valid_pct for consistency
  • ImageItemList becomes ImageList for consistency with TextList and TabularList
  • load_learner will fail for exported (pickled) models with error "AttributeError: Can't get attribute 'ImageItemList' on module 'fastai.vision.data'". You will need to re-export with version 1.0.46 or use 1.0.44

New:

  • Learner.destroy: completely free up learn, leaving an empty shell
  • added NVML query support on OSX via pynvx in addition to pynvml (Windows/Linux)
  • Added XResNet, which is ResNet plus tricks from Bag of Tricks for Image Classification. Note pretrained models not available yet for this architecture.
  • TextClassificationInterpretation, which computes intrinsic attention to give some interpretation of classification results in text (thanks to herrmann)
  • add_cyclical_datepart, which add the dateparts as cosine embeddings in tabular data (thanks to herrmann)
  • MixedItemList two mix several kinds of ItemList together

Changed:

  • revamped Learner.purge to reclaim more RAM
  • clearer error messages when using the data block API in the wrong order
  • ItemList.label_from_list becomes private to avoid confusion
  • recurse parameter for verify_images

Fixed:

  • various memory usage improvements
  • verify_images fixes channels even if no new size is passed

1.0.45

Not Released

1.0.44 (2019-02-13)

New:

  • DataBunch.save now works on every application, load the data back with load_data.
  • TextDataBunch.load is kept for now to let people use it for loading old serialized text data, but is deprecated.

Changed:

Fixed:

  • extensions are checked with a case-insensitive match.

1.0.43 (2019-02-11)

Breaking change:

  • language_model_learnerand text_classifier_learner have a different syntax: (data, arch, pretrained=True,...) to mimic the behaivor of create_cnn

New:

  • More models supported by create_cnn (densenet121, densenet169, densenet201, densenet161, vgg16_bn, vgg19_bn, alexnet) thanks to PPPW
  • Backward option in text_classifier_learner (thanks to tpietruszka)
  • Automate custom dependency groups installation via extending distutils
  • Transformer and TransformerXL architectures
  • Add val_bs parameter to all DataBunch creation methods
  • LanguageLearner.beam_search to make text generation using beam search
  • Dynamic loss scaling (with to_fp16(dynamic=True)), thanks to flpeters
  • Learner.purge to purge the Learner of needless objects that may take GPU memory

Changed:

  • ClassificationInterpration.plot_multi_top_losses supports one-hot encoded labels (thanks to terriblissimo)
  • model_summary only supports Learner now
  • Learner.bn_wd controls if we apply weight decay to all layer classes in bn_types and all bias parameter of layers classes in bias_types

Fixed:

  • Fixed argument name in ImageDataBunch.single_from_classes.
  • Bud in bb_pad_colalte when no bboxes where left due to data augmentation (thanks to pouannes)
  • fix the conda package dependency for py36
  • Bugs in ForgetMult and check cuda version are consistent (thanks to mkardas)
  • Bug label_empty got an unexpected keyword argument 'label_cls'
  • For a language model predict is now way faster and more accurate

1.0.42 (2019-01-24)

New:

  • gpu_mem_restore decorator - Reclaim GPU RAM if CUDA out of memory happened, or execution was interrupted
  • gpu_mem_restore_ctx context manager - same functionality as gpu_mem_restore
  • PeakMemMetric callback to profile general and GPU RAM used and peaked by epoch
  • ClassificationInterpration.plot_multi_top_losses (thanks to terriblissimo)
  • Learner.export serializes the model on the CPU to avoid loading on the GPU when there are none (thanks to pouannes)

Changed:

Fixed:

  • any fastai function that internally uses fit will no longer suffer from unrecoverable 'CUDA out of memory error' unless overridden by the FASTAI_TB_CLEAR_FRAMES environment variable, which also allows extending this protection to all other exceptions.
  • DataBunch.show_batch and Learner.show_results show at maximum batch_size elements
  • DataBunch.show_batch and Learner.show_results handle rows=1 (thanks to xnutsive)
  • LanguageModelPreLoader is way faster (thanks to kasparlund)

1.0.41 (2019-01-22)

Breaking change:

  • sep (in ImageDataBunch factory methods) is now called label_delim

New:

Changed:

  • Clearer representation of FlattenedLoss

Fixed:

  • Bug when loading text data in multi-classification with TextDataBunch.load
  • Wrong values for metrics like MSE due to broadcasting errors
  • ImageDataBunch doesn't shuffle the validation labels anymore

1.0.40 (2019-01-17)

New:

  • ImageDownloader widget for quick image datasets research
  • Learner.export to export the state of a Learner for inference (with Callback.get_state to get the state of a callback behind the scenes)
  • load_learner to load a Learner from an exported state (with load_callback to load the state of a callback behind the scenes)
  • A dataset can also be a Callback if we want to apply changes at the beginning of every epoch

Changed:

  • If no label is provided, the test set has EmptyLabel for every item
  • LanguageModelLoader becomes LanguageModelPreLoader and is a dataset to wrap in a pytorch DataLoader

Fixed:

  • Avoid bugs in tabular by copying the dataframe in TabularList.from_df
  • Can properly change the batch size even if the DataLoader is an LanguageDataLoader
  • Bug in ImageBBox when all the targets had the same number of bboxes
  • Default metric in RNNLearner is accuracy only for language models or classification tasks
  • Throws a clear error message when trying to use databunch on not-split data
  • Fix flatten_model that removed parameters not registered in modules
  • Fix behavior of apply_tfms with mult and output size.
  • Fix bug in DataBunch.one_item when doing object detection

1.0.39 (2018-12-28)

Breaking changes:

  • Fbeta_binary is now FBeta

New:

  • Learner.to_fp32 to go back to FP32 precision mode
  • cont_cat_split function to automatically get categorical/continuous variables (thanks to RealLankinen)
  • Lots of new metrics thanks to Sven Becker: mse/mean_squared_error, mae/mean_absolute_error, rmse/root_mean_squared_error, msle/ mean_squared_logarithmic_error, explained_variance, r2_score, top_k_accuracy, KappaScore, MatthewsCorreff, Precision, Recall, FBeta
  • BatchNorm1dFlat for using batchnorm in sequence models (e.g. RNNs, and their inputs and outputs)

Changed:

  • The data block API has additional checks with assertions (NaNs in columns used for inputs/labels in dataframes, empty items)
  • kwargs are checked in the data block API
  • model_summary now returns summary instead of printing it

Fixed:

  • Predictions now work in FP16 mode
  • Model is unwrapped at the end of a distributed training (thanks to mgrankin)
  • DataBunch.export works for multi-classification problems where one_hot=True
  • Fix bug in DatasetFormatter
  • Fix LanguageLearner.predict

1.0.38 (2018-12-18)

Breaking changes:

  • If you want to import basic fastai functionality without an application, you should now use from fastai.basics import * instead of from fastai import *. (However note that you now don't need either, when using an application, as mentioned in Changed below)
  • In fastai.text batch is now the first dimension

New:

  • fastai.script module contains a simple decorator for quickly creating CLIs
  • setup_distrib does all setup required for distributed training for you
  • Sample training scripts for MNIST sample (single GPU) and CIFAR10 (multi-GPU fp16) in examples
  • fastai.launch module for simplified single-machine multi-GPU training
  • check_perf - performance improvement recommendations
  • distributed module with helper functions to quickly launch a distributed training
  • temptative use of JIT C++ extensions to code the QRNN with batch_first argument, it needs a proper installation of cuda to be compiled at execution time

Changed:

  • When importing an application such as from fastai.vision import * you no longer need to also from fastai import *

1.0.37 (2018-12-13)

New:

  • SequentialEx, MergeLayer, and res_block to more easily create resnet and densenet architectures
  • no_split method in the data block API
  • sigmoid_range function to scale sigmoid to given range, along with SigmoidRange layer
  • DataBunch performs a sanity check after its initialization and will throw a warning if something is wrong with the data.
  • More GAN stuff: gan_critic, AdaptiveLoss, accuracy_thresh_expand, and GANDiscriminativeLR
  • Support for one-hot encoded labels in multiclassification problems
  • Add Dataset.Fix (same as train but with shuffle=False, drop_last=False and valid transforms)

Changed:

  • Experimental cross-connection from raw input plus extra resblock at end of unet
  • Add an execution-time check for a specific version of fastprogress (git pull fastai updates)
  • DataBunch.export now serializes everything (transforms and normalization included)
  • DataBunch now has fix_dl attr, which is same data as train_dl but without shuffle or train tfms
  • pred_batch now has reconstruct param, which will reconstruct each prediction into an object
  • Learner.show_results gives a better output for image classification tasks

Fixed:

  • Windows fixes, including:
    • Most transforms can now be used in Windows with num_workers>0
    • Avoid recursion error with data blocks API
    • Try to avoid default np.int32 creation where possible
  • y_range for unet output activation
  • Image.apply_tfms doesn't accept any kwargs anymore
  • split_from_files works with from_df/from_csv

1.0.36 (2018-12-08)

New:

  • LabelLists.load_empty (most useful for adding test sets for inference)

1.0.35 (2018-12-08)

Changed:

  • Update deps to release version of pytorch v1

1.0.34 (2018-12-06)

Fixed:

  • pypi wheel dataclasses dependency for py3.6 is there again

1.0.33 (2018-12-05)

New:

  • Learner.interpret is a shortcut to ClassificationLearner.from_learner.

Changed:

  • Language models now use flattened loss, instead of flattening y in data loader
  • ItemList.from_folder now has an include parameter to only include certain folders

Fixed:

  • Learner.load won't throw an error when trying to load an optimizer state of the wrong size, and silently ignore that optimizer state loading

1.0.32 (2018-12-02)

Changed:

  • TabularDatBunch.from_df accepts a test_df argument

Fixed:

  • LanguageLearner.predict now returns better text predictions
  • Unfreezing layers didn't create a new optimizer so the unfrozen layers weren't training
  • Bug in TextDataBunch with a mismatched test set was causing problems on the validation set

1.0.31 (2018-12-01)

New:

  • ImageCleaner with duplicates=True to use as a duplicate detector
  • DatasetFormatter.from_similars to feed the most similar indexes into ImageCleaner
  • chunks to separate a Collection into smaller iterables
  • batchnorm_2d wrapper for batchnorm with init

Changed:

  • Learner.load and Learner.save will also load/save the optimizer state
  • ImageItemList now takes optional convert_mode
  • Image.show now uses defaults.cmap if no cmap passed
  • bn param in conv_layer replaced by norm_type which takes NormType enum
  • unet kwargs are passed down to conv_layer
  • Learner.fit no longer creates a new optimizer at each call
  • Add batchnorm to end of unet
  • Restore ImageDataBunch.single_from_classes
  • ItemList.set_item is now a context manager, so you don't need to call clear_item
  • Removed ItemList.clear_item
  • Init torch.set_num_threads(4) to avoid OpenMP process creation overhead

Fixed:

  • Tokenizer wasn't using >1 thread

1.0.30 (2018-11-28)

New:

  • Learner.summary
  • add_datepart
  • DeviceDataLoader.new method to get a copy of a DeviceDataLoader while changing an attribute
  • DataBunch.batch_size allows to change the batch size of all the dataloaders

1.0.29 (2018-11-27)

Breaking changes:

  • ImageDataBunch.single_from_classes has been removed
  • Learner.create_unet is now called unet_learner

New:

  • Every type of items now has a reconstruct method that does the opposite of ItemBase.data: taking the tensor data and creating the object back
  • Learner.show_results now works across applications
  • DataBunch.export: saves the internal information (classes, vocab in text, processors in tabular etc) need for inference in a file named 'export.pkl'. You can then create an empty_data object by using DataBunch.load_empty(path) (where path points to where this 'export.pkl' file is). This also works across applications
  • GAN and CycleGAN
  • parallel: Run a function on every element of an array, using multiple processes
  • icnr initializes a weight matrix with ICNR
  • PixelShuffle_ICNR layer that combines PixelShuffle, a suitable conv2d, plus optional weightnorm and (scale,scale) blurring
  • Learner.clip_grad convenience function for GradientClipping callback
  • plot_flat, plot_multi, show_multi, show_all: simple functions for showing images on subplots
  • ItemList.to_text to save items to a text file
  • ItemList.filter_by_rand to randomly sample items
  • LabelList.transform_y to use different transformation params for y (thanks for Fred Monroe)
  • LabelList.{to_df,to_csv} to save items including labels
  • DataBunch convenience properties: test_ds and single_ds
  • DataBunch.single_item to convert an ItemBase in to a batch (tensor + dummy y)
  • Learner.pred_batch can now take an optional batch to predict, rather than grabbing its own
  • introduce EmptyLabel and EmptyLabelList

Changed:

  • lr_range now divides non-final layer LRs by 10, instead of 3, when called with slice(lr)
  • Learner.load now has a strict argument like Pytorch's load_state_dict
  • 1cycle training now uses cosine reverse annealing instead of linear
  • conv2d and conv_linear now initialize weights/bias by default
  • core.to_detach now moves data to CPU
  • vision.models.unet now uses PixelShuffle_ICNR for upsampling, with optional weightnorm and blurring
  • vision.models.unet final layer now has twice as many activations
  • one_batch moved to DataBunch, and can detach and denorm if requested
  • Hooks and Hook can now be used as context managers
  • Moved some non-image-specific functions from vision.image to torch_core
  • Change grid_sample to downsample smoothly
  • Reduce the number of hooked modules to just those required in vision.models.unet
  • hook_output(s) can also hook the backward/grad now
  • bn_final param in TabularModel and create_cnn to add batchnorm after final affine layer

Fixed:

  • factory methods of TextDataBunch accept max_vocab (thanks to jfilter)
  • vision.models.unet now uses eval correctly when building model
  • classes are sorted when created to avoid having them change when restarting the notebook
  • fix loading issues with the test set in TextDataBunch
  • fix random bug in TextDataBunch.from_ids (thanks to PiotrCzapla)

1.0.28 (2018-11-19)

Breaking changes:

  • get_files and get_image_files now return Paths relative to path, instead of relative to .
  • ItemList.items are also relative to path where relevant, since get_files is called internally
  • create_func is removed in the data API; subclass and change the get method instead (in vision, you can subclass the open method if you want to change how the images are opened)

New:

  • Vocab and TabularTransform can now be saved
  • Each application has its method to create an inference learner
  • model_summary function for standard models (thanks to @noklam)
  • Added pca to torch.Tensor
  • Add methods to get embeddings from CollabLearner

Fixed:

  • verify_image - now fixes files with corrupt EXIF data

1.0.27 (2018-11-17)

New:

  • We can add transform to y in the data block API
  • metric fbeta for single classification (thanks to wy-q)

Changed:

  • ItemLists can now set self.filter_missing_y to automatically remove items from LabelLists training set that can't be labeled
  • revert xxmaj token and deal_caps rule

Fixed:

1.0.26 (2018-11-16)

New:

  • xxmaj token and new deal_caps rule

Changed:

  • Tokenizer has pre_rules and post_rules now (for before and after tokenization)
  • mark_fields is now default to False

1.0.25 (2018-11-16)

New:

  • FloatList to do regression
  • Use of real neural nets in collab

Changed:

  • Remove TextFilesList as you can now use TextList instead
  • Consistent use of cols / col in the data block API depending on if you can pass multiple columns or not
  • Collab is refactored with the data block API behind the scene
  • get_collab_learner and get_tabular_learner become collab_learner and tabular_learner for name harmonization accross applications
  • get_embedding becomes embedding
  • ImageDeleter and ImageRelabeler are merged into ImageCleaner

Fixed:

  • show_batch works with rows=1
  • Pretrained language models are saved in the correct folder (.fastai/models/)
  • Splitting too slow in the data block API
  • Mixup losses work with predict and TTA (thanks to bharadwaj6)
  • Wrong size for the added test set in the data block API (thanks to wdhorton)
  • Fix to the QRNN (thanks to PiotrCzapla)

1.0.24 (2018-11-13)

  • No changes

1.0.23 (2018-11-13)

New:

  • Learner.predict works across applications
  • Learner.show_batch works across applications

Changed:

  • tools/build-docs and tools/update-nbs scripts combined into one script
  • Big refactor of the data block API

Fixed:

  • download_images works with different kind of suffixes (thanks to fpingham)

1.0.22 (2018-11-09)

Breaking changes:

  • We no longer import submodule names automatically with import *
  • Callbacks are now inside the callbacks namespace if you from fastai import *

Changed:

  • All the DataBunch factory method use the data block API, the factory method of Datasets are deprecated and will be removed in a future version

Fixed:

  • learn.predict fixed
  • wrong dimension in dice (thanks to noklam)

1.0.21 (2018-11-08)

New:

  • CSVLogger callback (thanks to devorfu)
  • Initial support for image regression problems
  • If a dataset class has learner_type then create_cnn uses that type to create the Learner
  • Introduce TaskType in DatasetBase to deal with single/multi-class or regression problems across applications

Changed:

  • datasets now can automatically figure out what class to use in many situations
  • download_images now saves images with their original extensions

1.0.20 (2018-11-07)

New:

  • DataBunch.dl replaces the various holdout, is_test, and is_train approaches with a single consistent enum
  • fastai.text is fully compatible with the data block API

Changed:

  • download_url reads the get request with iter_content which is robust to 'content-length' errors. (thanks to Francisco Ingham and Zach Caceres)
  • download_url has a timeout

Fixed:

  • create_cnn correctly calculates # features in body correctly for more architectures
  • TextDataset has now two subclasses for the preprocessing steps and doesn't do that preprocesing automatically
  • TextDataBunch doesn't save the result of preprocessing automatically, you have to use TextDataBunch.save
  • RNNLearner.classifier is now text_classifier_learner and RNN_Learner.language_model is now language_model_learner
  • pil2tensor is faster and works on more image types (thanks to kasparlund)
  • Imports in the file picker widget (thanks to Hiromi)
  • Batches of size 1 will be removed during training because of the issue with BatchNorm1d
  • Confusion matrix show ints if normalize=False (default)
  • RNNLearner.get_preds return the preds in the right order (thanks to StatisticDean)
  • num_features_model now works with any model
  • resize_method wasn't properly set when passed to ImageDataBunch
  • reset the RNNs at the beginning of each epoch in RNNTrainer

1.0.19 (2018-11-03)

New:

  • add an argument resize_method that tells apply_tfms how to resize the image to the desired size (crop, pad, squish or no)
  • all the image dataset have an image_opener attribute (default open_image) that can be changed. The SegmentationDataset has a mask_opener attribute
  • add_test and add_test_folder in data block API

Changed:

  • jupyter et al no longer forced dependencies
  • verify_images can now resize images on top of checking they're not broken
  • LR finder plot now uses python scientific notation instead of math superset notation

Fixed:

  • ImageDataBunch.from_df doesn't change the dataframe

1.0.18 (2018-10-30)

Fixed:

  • Fix jupyter dep version

1.0.17 (2018-10-30)

New:

  • Add tiny datasets

Changed:

  • remove wrong Fbeta

Fixed:

  • fix implementation of fbeta

1.0.16 (2018-10-30)

New:

  • ImageDataBunch.single_from_classes to allow single image predictions
  • DatasetBase has set_item and clear_item to force it to always return item
  • DatasetBase uses abstract _get_x and _get_y
  • batch_size property in DeviceDataLoader
  • ClassificationLearner.predict to get prediction on a single item
  • Monkey-patched torch.Tensor so matplotlib works
  • Learner.create_unet
  • Data block API

Changed:

  • validate now takes optional n_batch
  • create_cnn now returns a ClassificationLearner
  • return_path flag to Learner.save
  • ImageDataBunch.show_batch now works for every type of dataset, removes show_images and show_xy_images as a result
  • Monkey-patched torch.utils.data.dataloader.DataLoader to create a passthrough to the dataset
  • max_workers for download_images
  • Change the arguments of ObjectDetectDataset to make it consistent with the rest of the API, changes the return of get_annotations to go with it

Fixed:

  • remove empty classes in ImageDataBunch.from_folder

1.0.15 (2018-10-28)

Breaking changes:

  • ConvLearner ctor is replaced by a function called create_cnn

New:

  • Learner objects now determine from the loss function if there is something to add on top of the models to get the true predictions

Changed:

  • Add recurse flag to get_image_files
  • show_xy_images takes tensors instead of Image
  • Add classes to SegmentationDataset
  • get_preds now return the true probabilities
  • TTA averages the probabilities and not the last activations of the model
  • ClassificationInterpretation has been changed accordingly and the sigmoid argument has been deprecated

Fixed:

  • Make pred_batch faster and remove redundent *
  • Bug in Learner.pred_batch
  • Bug in model_sizes (thanks to dienhoa)
  • Bug in RNNLearner.classifier when used on a multilabel dataset

1.0.14 (2018-10-25)

New:

  • download_images: multi-process download of a file or URLs
  • verify_images: multi-process verification of directory of images with optional deletion

Changed:

  • ImageDataBunch.from_folder now takes valid_pct
  • master bar support in download_url
  • various fixes to support the latest of fastprogress
  • Learner.normalize (without args) stores calculated stats in Learner.stats
  • pred_batch moved to basic_train and fixed for multiple inputs
  • lr_find prints the next step to type when completed
  • New version of fastprogress used; doesn't require ipywidgets
  • Removed cifar_norm,cifar_denorm,imagenet_norm,imagenet_denorm

Fixed:

1.0.13 (2018-10-24)

New:

  • pretrained language model is now downloaded directly in the .fastai/models/ folder. Use pretrained_model=URLs.WT103
  • add an argument stop_div to Learner.lr_find to prevent early stopping, useful for negative losses
  • add an argument convert_mode to open_mask and SegmentationDataset to choose the PIL conversion mode of the masks

Changed:

  • URLs.download_wt103 has been removed

1.0.12 (2018-10-23)

Fixed:

  • change TextDataBunchClass method [from_ids_files, from_tokens, from_df, from_csv, from_folder] so that classes argument is passed to the call to TextDataset
  • Strip space from file name when CSV has spaces
  • Handle missing loss_func attr
  • Pass on the use_bn parameter in get_tabular_learner
  • Bad handling when final batch has size of 1
  • rolled back numpy dependency to >=1.12 (anaconda package has a upper pin on it) and to pip>=9.0.1, the old version are buggy but should be ok for fastai

1.0.11 (2018-10-20)

Fixed:

  • Added missing pyyaml dependency to conda too

Changed:

  • Use spacy.blank instead of spacy.load to avoid having to download english model

1.0.10 (2018-10-20)

Fixed:

  • Added missing pyyaml dependency

1.0.9 (2018-10-20)

New:

  • EarlyStoppingCallback, SaveModelCallback, TerminateOnNaNCallback (initial draft: fredguth)
  • datapath4file(filename) returns suitable path to store or find data file called filename, using config file ~/.fastai/config.yml, and default data directory ~/.fastai/data, unless ./data exists and contains that file
  • MSELossFlat loss function
  • Simple integration tests for all applications

Changed:

  • data is now called basic_data to avoid weird conflicts when naming our data objects data
  • datasets.untar_data and datasets.download_data will now download to fastai home directory ~/.fastai/data if the dataset does not already exist locally ./data

Fixed:

  • add dep_var column in test_df if it doesn't exists (Kevin Bird)
  • backwards=True when creating a LanguageModelLoader (mboyanov)

1.0.8 (2018-10-20)

  • Not released

1.0.7 (2018-10-19)

New:

  • New class ImagePoints for targets that are a set of point coordinates
  • New function Image.predict(learn:Learner) to get the activations of the model in Learner for an image
  • New function Learner.validate to validate on a given dl (default valid_dl), with maybe new metrics or callbacks
  • New function error_rate which is just 1-accuracy

Changed:

  • All vision models are now in the models module, including torchvision models (where tested and supported). So use models instead of tvm now. If your preferred torchvision model isn't imported, feel free to test it out and tell us on the forum if it works. And if it doesn't, a PR with a test and a fix would be appreciated!
  • ImageBBox is now a subclass of ImagePoints
  • All metrics are now Callback. You can pass a regular function like accuracy that will get averaged over batch or a full Callback that can do more complex things
  • All datasets convenience functions and paths are inside the URLs class
  • URLs that are a sample have name now suffixed with _SAMPLE

Fixed:

  • Fix WeightDropout in RNNs when p=0
  • pad_collate gets its kwargs from TextClasDataBunch
  • Add small eps to std in TabularDataset to avoid division by zero
  • fit_one_cycle doesn't take other callbacks
  • Many broken docs links fixed

1.0.6 (2018-10-01)

  • Last release without CHANGES updates