Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add classy OSS CIFAR #206

Closed
wants to merge 242 commits into from
Closed

Conversation

aadcock
Copy link

@aadcock aadcock commented Nov 12, 2019

Summary:
OSS Classy CIFAR. Simple wrapper around torchvision dataset. The classy dataset wrapper provides batching, transforms, shuffling, and restricting the size of the dataset.

Side-effects: Changed the name of the fb internal classy vision dataset to fb_cifar* and changed all naming schemes to match this.

I also added a unittest that relies on some of the torchvision testing utilities which are not packaged with torchvision...as such, I did this via a fbcode import.

Differential Revision: D18429440

fbshipit-source-id: b4001a6fb460b8b35bc862a5564fad55d86f5bc3
Summary:
Pull Request resolved: fairinternal/ClassyVision#1

Pull Request resolved: facebookresearch/ClassyVision#1

We got approved for MIT license.

Reviewed By: mannatsingh

Differential Revision: D17453010

fbshipit-source-id: d6b29db5c142b9a905e821864b8fc15597f134a6
Summary:
Add template files usually available in our OSS releases. Will work on
updating the content from them as we go.

Reviewed By: mannatsingh

Differential Revision: D17454683

fbshipit-source-id: c8ea8f9b3a7f0746d73c1f2062114623d0fc2c88
Summary:
Created a `multi_output_sum_loss`. It takes a registered loss's config as input and applies it to all the outputs. See the associated test for usage.

This loss is supposed to replace the "sum" functionality of `sum_bce_with_logits_loss` and `sum_cross_entropy_loss` so that we don't have code duplication. The updates to these two losses will happen in a follow up diff.

Reviewed By: aadcock, vreis

Differential Revision: D17438898

fbshipit-source-id: 20434cfc340a29a5058b2fdd51f067aa77cb82c9
Summary:
`build_criterion` now searches for a criterion in `torch.nn.modules.loss` if it is not found in the registry. This is similar to the logic used for transforms.
- We don't need `sum_bce_with_logits`, `sum_cross_entropy` anymore - users can use `BCEWithLogitsLoss` and `CrossEntropyLoss` in combination with `multi_output_sum_loss` (D17438898) to get the same functionality
- There was a bug wherein passing `weights` wouldn't work to the losses since `weights` is expected to be a tensor, not a list. `weights` is now updated to a tensor inside `build_criterion`
- `criterions_test.py` is no longer a misnomer - it tests that `build_criterion` can build a criterion from torch correctly
- Changed `sum_cross_entropy` to `CrossEntropyLoss` in all the configs I found using fbgs

Reviewed By: aadcock, vreis

Differential Revision: D17439082

fbshipit-source-id: b075fdbdbbc879a04fea397628385fdb0a3af5a1
Summary:
Use `DataloaderLimitWrapper` in the koski on box datasets as well (`on_box_uru` and `multimodal_video`)
- Instead of having Koski apply a limit, the wrapper does that for us. This will make sure we wrap around if one of the instances runs out of samples before others and the code will not stay hung
- `ClassyState.num_batches_per_phase` doesn't have a special branch for these datasets anymore
- The datasets use `num_samples` instead of `max_samples` like the other streaming datasets
- Updated `DataloaderLimitWrapper` to pass all `getattr` / `setattr` calls to the wrapped data loader
- Got rid of all the unused special methods in the datasets to simplify the code

Reviewed By: aadcock

Differential Revision: D17372111

fbshipit-source-id: d3e3a634eb20eb82db3dc587fab576c5cc596d30
Summary:
Add basic support for packaging the project. This will be used to run ours tests with pip as well.
Pull Request resolved: facebookresearch/ClassyVision#2

Test Plan: python3 setup.py sdist bdist_wheel

Differential Revision: D17490325

Pulled By: vreis

fbshipit-source-id: a3fe2a4cfe8b943bfc0922b1ad1eb2daa5802584
Summary:
Add a configuration file for CircleCI. Not all tests are passing yet, but I'll work on fixing that in follow-up diffs.
Pull Request resolved: facebookresearch/ClassyVision#3

Differential Revision: D17494024

Pulled By: vreis

fbshipit-source-id: 53951f3e853c0c4ca48d3301ec9064142674f9f1
Summary:
Pull Request resolved: facebookresearch/ClassyVision#4

Needed for the OSS release

Reviewed By: mannatsingh

Differential Revision: D17504533

fbshipit-source-id: ea2d9c9579623bc8776f89493aaaad2542351802
Summary:
Pull Request resolved: facebookresearch/ClassyVision#6

I missed the test directory and files in the root directory :(

Reviewed By: mannatsingh

Differential Revision: D17507489

fbshipit-source-id: 0564ffa81df35443f89422fe1813d68c8682652a
Summary:
In D17349805 we had introduced `DataloaderLimitWrapper`, but I forgot to scale the limit by the world size.

- Added a comment about `getattr` in the `Dataset` class (it's easy to miss that there's a `__getattr__` defined which passes on the search to `self.dataset`)
- Added `get_batchsize_per_replica()` and `get_global_batchsize()` to  `ClassyDataset` and updated `ClassyState.get_batchsize_per_replica()` to use the dataset function
- The `multimodal_video` dataset used inconsistent names for the batch size in the config and in the class which has been fixed

Reviewed By: vreis

Differential Revision: D17481832

fbshipit-source-id: 5642799d3b708cc0aa58d9b0279cb49590b01e88
Summary: add an utility function `is_pos_int_list`

Reviewed By: mannatsingh

Differential Revision: D17496207

fbshipit-source-id: 8c3e22e290fc85728208bca55dd0b1cbe0aa29c1
Reviewed By: vreis

Differential Revision: D17472655

fbshipit-source-id: 087f2a3a7e66efa76723109eb41097c13ea8ef1b
Summary:
Pull Request resolved: facebookresearch/ClassyVision#5

Three fixes:
1) Some tests require external dependencies (progressbar, visdom, tensorboard).
For now let's just test them on the FB environment.

2) Some tests had a wrong relative imports (.generic);

3) One test was checking the exact package name of the test class. That's
pretty fragile and I don't see the need for it.

Reviewed By: mannatsingh

Differential Revision: D17506164

fbshipit-source-id: 4e35a4c3860321d778434049cc03c28fe30e0c2d
Summary:
Pull Request resolved: facebookresearch/ClassyVision#7

While moving everything to the classy_vision module I missed this file. It
doesn't make sense to have it in the root directory, move it where it belongs.

Reviewed By: mannatsingh

Differential Revision: D17515540

fbshipit-source-id: b33ae5a04d199cbddb64838dd071ae383090d8bc
Summary:
Pull Request resolved: facebookresearch/ClassyVision#8

This will make more sense after you review D17515697: I'm hiding ClassyState
from the public API, but in some cases we access state.optimizer, state.model
etc. This diff adds these members to ClassyTask so it can replace the state.
Eventually I want to move these from the state to the task, but for now we
need them in both.

Reviewed By: mannatsingh

Differential Revision: D17515732

fbshipit-source-id: e00820cf608dfc86a658e293e8446b6ae10b36a0
Summary:
Pull Request resolved: facebookresearch/ClassyVision#9

Move things around a bit more to get closer to our goal. Introduce a
ClassyTrainer.train method, which only takes a task in. The state is hidden
from the public API that way. Other parameters are passed in the constructor
instead.

Reviewed By: mannatsingh

Differential Revision: D17515697

fbshipit-source-id: 1d4163f1c49a0a29c5bbf8fc01eda88e810dbed3
Summary:
Pull Request resolved: facebookresearch/ClassyVision#10

The name "optimizer_config" is confusing since it does not come from the
config used to build the optimizer. I think parameters makes that purpose
more clear.

Reviewed By: mannatsingh

Differential Revision: D17517990

fbshipit-source-id: f2906668a9ea571bc00497b5f898d14755066bd8
Summary:
Pull Request resolved: facebookresearch/ClassyVision#11

We want to be able to instantiate classy abstractions without a configuration
file. Instead of taking a config in the constructor for the param schedulers,
make a static method to instantiate a scheduler from a config.

Reviewed By: mannatsingh

Differential Revision: D17518149

fbshipit-source-id: 84f8f0d4cf4fe0249c14895debf4d93d9b35b5ec
Summary:
Pull Request resolved: facebookresearch/ClassyVision#12

Create a .from_config method to instantiate a criterion from a configuration
dictionary. That means we can have actual arguments in the constructors,
instead of passing a single config blob.

Reviewed By: mannatsingh

Differential Revision: D17528154

fbshipit-source-id: dd94002069d56c9933e3fb361a89b6ebcb6b9967
Summary:
Pull Request resolved: facebookresearch/ClassyVision#13

Two changes:
1) Create a .from_config method to instantiate a meter from a configuration
dictionary.
2) Change the build_meter API to be consistent with the other build_* APIs.
That means taking a single config argument (instead of name, config);

Reviewed By: mannatsingh

Differential Revision: D17531961

fbshipit-source-id: 3e511615343061d7a06c1acce980c401d49c9553
Summary: we need to transfer the tensors to GPU and back when using NCCL backend.

Reviewed By: mannatsingh

Differential Revision: D17473796

fbshipit-source-id: d066aa79e32cb2c91927121e3e8049c53b15c4fb
Summary:
Pull Request resolved: facebookresearch/ClassyVision#15

That is not being used AFAICT and it's polluting the API.

Reviewed By: mannatsingh

Differential Revision: D17547887

fbshipit-source-id: c5ebde37932429801f7034635dd73ee85c16a292
Summary:
Pull Request resolved: facebookresearch/ClassyVision#17

The compute approximate PR curve utility in classy vision was created for a mAP meter which pre-existed classy vision. Zheng wants to reimplement the mAP meter but he found that our PR curve was different from other definitions in SKLearn in that it computed the convex hull of the PR curve (which is fine if you are choosing a threshold but not the standard for mAP).

This diff converts it to use the standard PR curve (i.e. no convex hull).

Reviewed By: vreis, zhengshou

Differential Revision: D17584834

fbshipit-source-id: ca99ad257e82c5a0fc490d7cdec2d7ff0f5af1cd
Summary:
Pull Request resolved: facebookresearch/ClassyVision#18

I was originally against a ClassyTransform abstraction, but I've come around.
All other Classy things implement a from_config method, so we need a
ClassyTransform as well. That gives us the flexibility of implementing
transforms where the dictionary can't be mapped directly to arguments in the
constructor.

Reviewed By: mannatsingh

Differential Revision: D17578366

fbshipit-source-id: 7cd4addc7cba79054364939947bd34f3325efc02
Summary:
Pull Request resolved: facebookresearch/ClassyVision#21

In preparation to switch datasets to a .from_config constructor, make sure no
datasets store the config itself as a member of the class. This makes things
easier later.

Reviewed By: aadcock

Differential Revision: D17578858

fbshipit-source-id: 33137eee8b90e47b0bcd2a0d060ae24e927087cb
Summary:
Pull Request resolved: facebookresearch/ClassyVision#22

`DenseNet.input_shape` calls `self.small_input`, which isn't defined currently.

Reviewed By: vreis

Differential Revision: D17628854

fbshipit-source-id: fff8b4e138ea68b2dc50ac60572dadc60b935ce2
Summary:
Pull Request resolved: facebookresearch/ClassyVision#20

Implemented fine-tuning for loading state from checkpoint state and tests for it

Reviewed By: mannatsingh

Differential Revision: D17481209

fbshipit-source-id: 288e597f42453afd7a50ebf5e4d0508402b8ee69
Summary:
Pull Request resolved: facebookresearch/ClassyVision#23

Pull Request resolved: facebookresearch/ClassyVision#16

Pull Request resolved: fairinternal/ClassyVision#2

As I tried to work on the downstream diffs some of the internal datasets which have sample fetch failures had a different API and this was causing me headaches. In particular, most of the dataset API is reimplemented for the everstore dataset (particularly the batching and transformation logic). This made the downstream work to refactor and ultimately delete this logic twice as complicated since I effectively had to do it twice (one for canonical datasets and once for the everstore datasets).

This diff migrates the API for those datasets to fetch single samples and use the dataset wrappers like all of the other Classy datasets (so future migrations happen only once). This has performance implications since the original goal of separate batching logic was to issue multiple everstore requests simultaneously, so I also had to make a change to prefetch the upcoming samples to make sure performance was still good.

This involved:

1. Everstore batching / transformation logic dealt with missing samples (None's), so I had to move some of that logic to the "is_not_none" filter function and add a ignore none's option to the transforms.
2. Modifying all downstream datasets (e.g. the visual relevance team's datasets, also made max_samples -> num_samples to match all other datasets)
3. Adding prefetching to the Everstore dataset for performance.
4. Found some small CLI changes to the internal benchmark to make it easier to use by displaying samples when needed.

I then verified that performance was fine. The performance turned out to be faster than I measured on the previous benchmark, I'm still not sure why this is, but I added functionality to the benchmark to print out a tensor for visual inspection and the data appears to be fine.

As a note, I was trying to figure out if we can switch to spawn here and ran into a host of problems which was what was blocking this work, so I will save that for a later diff.

Reviewed By: vreis

Differential Revision: D17266435

fbshipit-source-id: 337e8dcd4558d58fc28c5c47f99ff681addccc8b
Summary:
Pull Request resolved: facebookresearch/ClassyVision#25

Remove criterion_config from ClassyTask constructor. Instead, use a set_criterion method
and instantiate the criterion from the config. This looks weird now cause I haven't migrated
the other modules, but eventually ClassyTask will take no arguments in the constructor and
this will look like n128788. It needs to get worse before it gets better though.

Reviewed By: mannatsingh

Differential Revision: D17581037

fbshipit-source-id: 87c6ae9b07f3cf03b71180e0fcd56b660036948d
vreis and others added 23 commits November 15, 2019 14:40
Summary:
The docs name is used by GitHub pages
Pull Request resolved: facebookresearch/ClassyVision#222

Test Plan:
cd sphinx
make html
open _build/html/index.html

Differential Revision: D18538460

Pulled By: vreis

fbshipit-source-id: 6f2e4b52ee111c765ebfa3730ae758dafaea19a6
….advance_to_next_phase (#223)

Summary:
Pull Request resolved: facebookresearch/ClassyVision#223

Fixes the following error:

```
Traceback (most recent call last):
  File "/mnt/xarfuse/uid-30088/06c5bf86-seed-e9bf7d05-40b3-4736-ab2b-d32e3cfe3a16-ns-4026533627/torch/multiprocessing/spawn.py", line 19, in _wrap
    fn(i, *args)
  File "/mnt/xarfuse/uid-30088/06c5bf86-seed-e9bf7d05-40b3-4736-ab2b-d32e3cfe3a16-ns-4026533627/fblearner/flow/projects/vision/classy_vision/train_elastic.py", line 294, in flow_trainer_entry
    run(local_rank, *args, **kwargs)
  File "/mnt/xarfuse/uid-30088/06c5bf86-seed-e9bf7d05-40b3-4736-ab2b-d32e3cfe3a16-ns-4026533627/fblearner/flow/projects/vision/classy_vision/train_elastic.py", line 254, in run
    trainer.train(task)
  File "/mnt/xarfuse/uid-30088/06c5bf86-seed-e9bf7d05-40b3-4736-ab2b-d32e3cfe3a16-ns-4026533627/classy_vision/trainer/elastic_trainer.py", line 86, in train
    torchelastic.train(self.elastic_coordinator, elastic_train_step, state)
  File "/mnt/xarfuse/uid-30088/06c5bf86-seed-e9bf7d05-40b3-4736-ab2b-d32e3cfe3a16-ns-4026533627/torchelastic/train_loop.py", line 108, in train
    state, worker_stats = train_step(state)
  File "/mnt/xarfuse/uid-30088/06c5bf86-seed-e9bf7d05-40b3-4736-ab2b-d32e3cfe3a16-ns-4026533627/classy_vision/trainer/elastic_trainer.py", line 82, in elastic_train_step
    return self._run_step(orig_state, local_variables, self.use_gpu)
  File "/mnt/xarfuse/uid-30088/06c5bf86-seed-e9bf7d05-40b3-4736-ab2b-d32e3cfe3a16-ns-4026533627/classy_vision/trainer/elastic_trainer.py", line 92, in _run_step
    if state.task.done_training() and state.task.advance_to_next_phase:
AttributeError: 'ClassyUruTask' object has no attribute 'advance_to_next_phase'

Semantic Traceback (most recent call last):
  File "fblearner/flow/projects/vision/classy_vision/train_elastic.py", line 395, in main
    return plugin_main(params, None)
  File "fblearner/flow/projects/vision/classy_vision/train_elastic.py", line 450, in plugin_main
    register_plugins=register_plugins,
  File "fblearner/flow/projects/vision/classy_vision/train_elastic.py", line 373, in launch_one_node
    raise e
  File "/mnt/xarfuse/uid-30088/06c5bf86-seed-e9bf7d05-40b3-4736-ab2b-d32e3cfe3a16-ns-4026533627/torch/multiprocessing/spawn.py", line 171, in spawn
    while not spawn_context.join():
  File "/mnt/xarfuse/uid-30088/06c5bf86-seed-e9bf7d05-40b3-4736-ab2b-d32e3cfe3a16-ns-4026533627/torch/multiprocessing/spawn.py", line 118, in join
    raise Exception(msg)
```

Reviewed By: isunjin

Differential Revision: D18540804

fbshipit-source-id: 3da034c4e002307253f85b71da37a5749a4dc49a
Summary: Pull Request resolved: facebookresearch/ClassyVision#224

Differential Revision: D18543396

Pulled By: vreis

fbshipit-source-id: 0949a260c5913b21b08a39e91506f54c09862f92
Summary: Pull Request resolved: facebookresearch/ClassyVision#221

Test Plan: .

Differential Revision: D18533056

Pulled By: vreis

fbshipit-source-id: 889d0cc6b0c99f17d11a7b38391fb99754e4dc4a
Summary: Pull Request resolved: facebookresearch/ClassyVision#225

Differential Revision: D18555420

Pulled By: vreis

fbshipit-source-id: b2cf28174c0cead83c7fab757b195e100bea2c05
Summary: Pull Request resolved: facebookresearch/ClassyVision#226

Differential Revision: D18556697

Pulled By: vreis

fbshipit-source-id: cc4751be0ef64b96c414dc326a20ff041f7a7024
Summary:
This makes the tutorials nicer to write.
Pull Request resolved: facebookresearch/ClassyVision#227

Differential Revision: D18558000

Pulled By: vreis

fbshipit-source-id: ed9ed53feb25504224d9f8f1cf82489c6382e830
Summary:
Pull Request resolved: facebookresearch/ClassyVision#211

Pull Request resolved: fairinternal/ClassyVision#38

Docs for our Classy OSS Trainers, also added type hints

Reviewed By: vreis

Differential Revision: D18496512

fbshipit-source-id: 40095abfc9db54b0c129de9dff585cbe68fd5d3e
Summary:
Fixes a few small issues I found while invoking classy_train.py manually.
The --config_file and --device arguments were required, but gave cryptic error messages
when they were missing. Mark config_file as required and add good defaults
for device.

Pull Request resolved: facebookresearch/ClassyVision#184

Test Plan: .

Reviewed By: aadcock

Differential Revision: D18364662

Pulled By: vreis

fbshipit-source-id: 735f4156553754ac5bb9705084184fb8fe116724
Summary:
Pull Request resolved: facebookresearch/ClassyVision#214

Hooks should capture LR `on_update` to ensure correct LR is logged.

Reviewed By: vreis

Differential Revision: D18509631

fbshipit-source-id: 19af9e292d0171501c20eeb12cc09338262e9898
Summary:
Pull Request resolved: facebookresearch/ClassyVision#218

`num_samples` argument is useful to limit the number of training samples we use from the dataset. But it is not effective for current video datasets such as `UCF101Dataset`.

We extend TorchVision `RandomClipSampler` and `UniformClipSampler` to support `num_samples` argument.

Reviewed By: aadcock

Differential Revision: D18523531

fbshipit-source-id: 39bd64762c6029ad84569d0b77d89460eb064837
Summary:
Pull Request resolved: facebookresearch/ClassyVision#219

Docs for OSS `ClassyTransform` class and other related classes.

Reviewed By: aadcock

Differential Revision: D18525226

fbshipit-source-id: 82181dfd761d8c7634f4961f1e7b7402c9f17ea2
Summary:
Pull Request resolved: facebookresearch/ClassyVision#231

Docs for OSS `ClassyHook` class and other related classes.

Reviewed By: vreis

Differential Revision: D18574268

fbshipit-source-id: 85ec8cd96a6868244ca082e1c7a192cd6f130878
Summary:
This ipython notebook presents a tutorial on how to train a video classification model from scratch.
It focuses on demonstrating how to build various components in ClassyVision, such as dataset, model, and optimizer.
It trains a R3D-18 model on UCF-101 dataset for a short time.

Tutorial style has been made to be consistent with existing `fine_tuning.ipynb` tutorial.

Reviewed By: vreis

Differential Revision: D18524154

fbshipit-source-id: 27446166ee89fed9e8f05c01c51dc445c7d0815a
Summary:
Pull Request resolved: facebookresearch/ClassyVision#228

Pull Request resolved: fairinternal/ClassyVision#39

Docs for classification task

Reviewed By: vreis

Differential Revision: D18567786

fbshipit-source-id: 006e3e5ef17bc5fea8c0e575960f9ba27a31e59f
Summary:
The existing code was too slow to train on CPUs. Make a trivial linear
model instead.
Pull Request resolved: facebookresearch/ClassyVision#233

Differential Revision: D18583148

Pulled By: vreis

fbshipit-source-id: 43b14c5eb8eadebe1d90f03909d0e44e2c713956
Summary:
Pull Request resolved: facebookresearch/ClassyVision#232

Added .rst for transforms and param_schedulers to sphinx

Reviewed By: vreis

Differential Revision: D18578973

fbshipit-source-id: b03f1d79f1b0e3a9ec806d1c316702ab5fb51cf0
Summary:
Pull Request resolved: facebookresearch/ClassyVision#236

1. Make `__init__` visible for all classes
2. Fix Small bugs in docs for dataset

Reviewed By: vreis

Differential Revision: D18608520

fbshipit-source-id: 3c23c4a28091076d9805cf2099d7988055fd0a10
Summary:
The video tutorial was using an internal kernel, which can't be
converted to HTML -- update it to a regular Jupyter notebook instead.

Also add the tutorial to the json file so that it gets converted by the
script that generates the website.
Pull Request resolved: facebookresearch/ClassyVision#237

Differential Revision: D18610984

Pulled By: vreis

fbshipit-source-id: 8b90bcc06c7bbe964c72c0c06c49e5ccb855fe97
Summary:
Adds an API to load a model from a checkpoint. This will make the
tutorials nicer/cleaner.
Pull Request resolved: facebookresearch/ClassyVision#235

Test Plan: New unit test

Differential Revision: D18609462

Pulled By: vreis

fbshipit-source-id: 9a498495fbe1eeef500f79525979c7c959e0a319
Summary:
I'm hitting hangs on my mac when launch classy_train.py lots of times.
Sometimes it also fails to allocate a port, which is completely
pointless since I'm not doing distributed training. Allow users to
control what trainer to use via command line flag.
Pull Request resolved: facebookresearch/ClassyVision#238

Differential Revision: D18620410

Pulled By: vreis

fbshipit-source-id: f71671dda33bec1c3ce9b44f86897a128d62975a
Differential Revision: D18403673

fbshipit-source-id: 5b99eeed56b354fb8697dcf5eb23fdcb20a7dba6
Summary:
Pull Request resolved: fairinternal/ClassyVision#35

Pull Request resolved: facebookresearch/ClassyVision#206

OSS Classy CIFAR. Simple wrapper around torchvision dataset. The classy dataset wrapper provides batching, transforms, shuffling, and restricting the size of the dataset.

Side-effects: Changed the name of the fb internal classy vision dataset to fb_cifar* and changed all naming schemes to match this.

I also added a unittest that relies on some of the torchvision testing utilities which are not packaged with torchvision...as such, I did this via a fbcode import.

Differential Revision: D18429440

fbshipit-source-id: f2a0bfbec7671c415871e40a18c8187aaf5251e8
@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D18429440

@facebook-github-bot
Copy link
Contributor

This pull request was exported from Phabricator. Differential Revision: D18429440

facebook-github-bot pushed a commit that referenced this pull request Nov 22, 2019
Summary:
Pull Request resolved: fairinternal/ClassyVision#35

Pull Request resolved: #206

OSS Classy CIFAR. Simple wrapper around torchvision dataset. The classy dataset wrapper provides batching, transforms, shuffling, and restricting the size of the dataset.

Side-effects: Changed the name of the fb internal classy vision dataset to fb_cifar* and changed all naming schemes to match this.

I also added a unittest that relies on some of the torchvision testing utilities which are not packaged with torchvision...as such, I did this via a fbcode import.

Reviewed By: vreis

Differential Revision: D18429440

fbshipit-source-id: 3ecf2ba19760e88841b08d15b121cf51444f7cb1
facebook-github-bot pushed a commit that referenced this pull request Nov 22, 2019
Summary:
Pull Request resolved: fairinternal/ClassyVision#35

Pull Request resolved: #206

OSS Classy CIFAR. Simple wrapper around torchvision dataset. The classy dataset wrapper provides batching, transforms, shuffling, and restricting the size of the dataset.

Side-effects: Changed the name of the fb internal classy vision dataset to fb_cifar* and changed all naming schemes to match this.

I also added a unittest that relies on some of the torchvision testing utilities which are not packaged with torchvision...as such, I did this via a fbcode import.

Reviewed By: vreis

Differential Revision: D18429440

fbshipit-source-id: 6dbe0e8b5a6f02426599f6c7f2da25bdb881686e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. fb-exported
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet