def get_parser()

in sing/parser.py [0:0]


def get_parser():
    """
    Returns:
        argparse.ArgumentParser: parser with all the options
            for the training of a SING model.
    """
    parser = argparse.ArgumentParser(
        "sing.train",
        description="Train a SING model on the NSynth dataset",
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)

    # Datasets arguments
    parser.add_argument(
        "--data",
        default="data/nsynth-train",
        type=Path,
        help="path to the dataset, e.g. .../nsynth-train")
    parser.add_argument(
        "--pad",
        type=int,
        default=2304,
        help="Extra padding added to the waveforms",
    )

    # Loss arguments
    parser.add_argument("--wav", action="store_true", help="Use a Wav loss")
    parser.add_argument(
        "--epsilon",
        default=1,
        type=float,
        help="Offset for power spectrum before taking the log")
    parser.add_argument(
        "--l1",
        action="store_true",
        help="Use L1 loss instead of mse",
    )

    # Misc arguments
    parser.add_argument("--cuda", action="store_true", help="Use cuda")
    parser.add_argument(
        "--parallel", action="store_true", help="Use multiple gpus")
    parser.add_argument(
        "--checkpoint",
        type=Path,
        default=None,
        help="Path to the checkpoint folder")
    parser.add_argument(
        "--output",
        type=Path,
        default="models/sing.th",
        help="Path to output final SING model")
    parser.add_argument(
        "-d", "--debug", action="store_true", help="Debug flag")
    parser.add_argument(
        "-f", "--debug-fast", action="store_true", help="Debug fast flag")

    # Common arguments
    parser.add_argument(
        "--lr", type=float, default=0.0003, help="Learning rate for Adam")
    parser.add_argument(
        "--batch-size", type=int, default=64, help="Batch size")

    # Autoencoder arguments
    parser.add_argument(
        "--ae-epochs",
        type=int,
        default=50,
        help="Number of epochs for the autoencoder")

    parser.add_argument(
        "--ae-channels",
        type=int,
        default=4096,
        help="Number of channels in the autoencoder")
    parser.add_argument(
        "--ae-stride", type=int, default=256, help="Stride of the autoencoder")
    parser.add_argument(
        "--ae-dimension",
        type=int,
        default=128,
        help="Dimension of the autoencoder embedding")
    parser.add_argument(
        "--ae-kernel",
        type=int,
        default=1024,
        help="Kernel size of the autoencoder")
    parser.add_argument(
        "--ae-rewrite",
        type=int,
        default=2,
        help="Number of rewrite layers in the autoencoder")
    parser.add_argument(
        "--ae-context",
        type=int,
        default=9,
        help="Context size of the decoder")
    parser.add_argument(
        "--ae-window",
        default="hann",
        help="Window to use to smooth convolutions. Default to 'hann'. "
        "To deactivate, use --ae-no-window")
    parser.add_argument(
        "--ae-no-window", dest="ae_window", action="store_const", const=None)
    parser.add_argument(
        "--ae-squared-window",
        action="store_true",
        default=True,
        help="Square the window used to smooth convolutions. "
        "To deactivate, use --ae-no-squared-window.")
    parser.add_argument(
        "--ae-no-squared-window",
        action="store_false",
        dest="ae_squared_window")

    # Sequence generator arguments
    parser.add_argument(
        "--seq-hidden-size",
        type=int,
        default=1024,
        help="Size of the LSTM hidden layers")
    parser.add_argument(
        "--seq-layers",
        type=int,
        default=3,
        help="Number of layers in the LSTM")
    parser.add_argument(
        "--seq-epochs",
        type=int,
        default=50,
        help="Number of epochs for the sequence generator")
    parser.add_argument(
        "--seq-truncated",
        type=int,
        default=32,
        help="Truncated gradient for the sequence generator. "
        "0 means using the full sequence.")
    parser.add_argument(
        "--sing-epochs",
        type=int,
        default=20,
        help="Number of fine tuning epochs for the full SING model")

    # Lookup tables arguments
    parser.add_argument(
        "--time-dim",
        type=int,
        default=4,
        help="Dimension of the time step lookup table")
    parser.add_argument(
        "--instrument-dim",
        type=int,
        default=16,
        help="Dimension of the instrument embedding")
    parser.add_argument(
        "--pitch-dim",
        type=int,
        default=8,
        help="Dimension of the pitch embedding")
    parser.add_argument(
        "--velocity-dim",
        type=int,
        default=2,
        help="Dimension of the velocity embedding")
    return parser