m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: c36dbdce8cb3ee697b4ceb5dfbcd703e075f6406 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 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