m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff

Deep Neural Networks, Homework 1

Recognizing and counting shapes.

Running experiments

python src/run.py configuration.yaml

Configuration

We can specify various training scenarios via YAML files. This allows us to experiment with different network architectures and hyperparameters.

The configuration should have the following fields:

  • type: one of classification, counting-small, counting-large, depending on which problem we're attempting to train for. This controls:
    • the size of the final output layer
    • final transformation applied to output layer
    • transformations applied to targets, if necessary
    • the loss function used
    • the accuracy metric used
  • batch_norm (defaults to false)
  • dropout (defaults to false): false or p parameter for dropout layers
  • lr
  • epochs
  • batch_size
  • augmentations: list of augmentation specifications to expand the dataset with:
    • rotation (defaults to 0): integer 0-3 specifying number of 90° rotations to apply
    • vflip (defaults to false)
    • hflip (defaults to false)
  • convolutions: a list of convolution layer specifications:
    • in_channels
    • out_channels
    • size (defaults to 3)
    • stride (defaults to 1)
    • padding (defaults to 1)
    • max_pool (defaults to false): whether to apply a 2x2 max pool layer
  • linears: a list of desnse layer specifications:
    • in_features
    • out_features

Results

For each run, a timestamped directory is created under outputs/ with:

  • A copy of the used configuration file
  • A CSV file with train set losses, test set losses, and test set accuracies, for each epoch
  • losses.png: a plot of the losses
  • accuracies.png: a plot of the accuracies
  • net.pt: weights of the trained model