-
Notifications
You must be signed in to change notification settings - Fork 11
Write a new Experiments scenario with MNIST/Tensorflow #60
Comments
The structure of the project will be similar to the current The usual way of distributing MNIST dataset (in LeCun's website and deep.ai) is in a format not directly usable by Python. Our The data will be kept in the The There will be a The training will also receive various loss and optimizer parameters. The evaluation will use |
A preliminary prepare:
seed: 20210428
remix: True
remix_split: 0.20
preprocess:
seed: 20210428
normalize: True
shuffle: False
add_noise: False
noise_amount: 0.0004
noise_s_vs_p: 0.5
train:
seed: 20210428
validation_split: 0.2
model: "mlp"
optimizer: "Adam"
loss: "SparseCategoricalCrossentropy"
epochs: 10
batch_size: 128
model_mlp:
units: 128
activation: "relu"
model_cnn:
dense_units: 128
conv_kernel_size: 3
conv_units: 32
dropout: 0.5 There may be some others, I think the more parameters we have, the more freedom to experiment we can have while writing the documentation. |
The project is in https://github.com/iesahin/example-get-started-mnist/ You can install the requirements and run with The params file contains various parameters to test with I'm preparing a Docker container for this project and provide it along with a Katacoda scenario tomorrow. I can integrate checkpoints examples to this project, WDYT @dberenbaum ? |
@iesahin does it have checkpoints now? can we follow the same pattern as we do in the regular get started and keep introducing things per commit? it means that we'll have tags to refer to. also, we need to codify the project also, @dberenbaum and @flippedcoder have beeb discussing how to make it more realistic (use drop-in dataset replacement). Have you beed able to solve this problem here? |
It has the implicit checkpoints, as all pipelines, e.g.,
When the end project seems OK, I'll begin to write the script to produce that. But I plan to maintain the code in another (possibly private) repository, not to download from S3.
codify?
We can use Fashion-MNIST as a drop-in replacement. It has the same structure with the standard MNIST. I can look for other MNIST-like (28x28 images) datasets, I remember I saw something about letters recently. The project is general enough to be used with any image set actually, we can just use some image processing to reduce the size of images. But if you would like to go more realistic, we can build a model zoo and try different models to test transfer learning. I can build something about face recognition that uses various models like VGG, Inception, etc. These won't work on Katacoda and probably need GPU for a decent performance but it may be better to show "replaceable parts" in pipelines. "Here you change this parameter in |
You can use Katacoda seems to have some issues. It doesn't even start the containers I set up two weeks ago and this doesn't work there either. Looking into it. |
Thanks, @iesahin! IMO having more realistic models is not that important for getting started as long as there are ways to tune it and see noticeable performance improvements. I would vote to err on the side of simplicity in terms of models, parameters, etc. Checkpoints are still an immature feature IMO, and I agree that they may have some different requirements that make it hard to integrate with the current get started scenario and may not be compatible with other features. Issues that come to mind:
|
Thank you @dberenbaum I agree with your points. For the GS pages, it's a bit overwhelming to talk about checkpoints in complete detail. Instead I plan to tell For an advanced Experiments tutorial, I plan to show
These are effectively the same, but users may have different requirements and having options to use For the complexity, you're right. For more than one parameter, it becomes increasingly difficult to track the changes but we can compare it with the manual (non-DVC) setups. Hyperparameter search is always tricky and one can drown in quickly. IMHO we have some tools to manage this complexity and we want the users to know these, but these tools may become a hindrance if not used correctly, like Git, for example. |
BTW, Katacoda issues seem to be solved. Even the CNN version of the project runs fine. It looks we have achieved single get-started project to run on all platforms with modest requirements goal. I'll update the scenario text tomorrow for the new project. You can see the container here: https://www.katacoda.com/iex/courses/get-started/experiments Just issue a |
I think we should keep parameter tuning and checkpoints separate. An advanced section combining them makes sense, but there are still plenty of people who will only want to use one or the other. As far as complexity of params, I think it quickly becomes hard for users to follow and hard to visualize in |
The current experiments scenario uses example-get-started project for presenting the Experiments. However most of the
train.py
commands fail due to out-of-memory errors in Katacoda.We need a new way to present experiments concepts:
It should depend on MNIST. In our previous discussion in mnist tutorial failing #15, I tested Tensorflow/MNIST example and it worked on Docker on Katacoda. This is a good way to build and test the new example dataset.
Although there are other (and possibly more interesting) datasets like the [Fashion MNIST][fashion] or [Credit Card Fraud Detection][ccfraud], their requirements may be above what can be provided by Katacoda. Hence using the standard MNIST is preferable than venturing into these.
Related to epic iterative/dvc.org#1400
This is also related to #55
The text was updated successfully, but these errors were encountered: