runtime:
  distribution_strategy: 'mirrored'
  mixed_precision_dtype: 'float32'
  loss_scale: 'dynamic'
  num_gpus: 1
task:
  init_checkpoint: Null
  model:
    num_classes: 80
    input_size: [640, 640, 3]
    min_level: 3
    max_level: 7
  losses:
    l2_weight_decay: 0.0001
  train_data:
    input_path: Null
    tfds_name: 'coco/2017'
    tfds_split: 'train'
    tfds_download: True
    is_training: True
    global_batch_size: 2
    dtype: 'float16'
    cycle_length: 5
    decoder:
      type: tfds_decoder
    shuffle_buffer_size: 2
  validation_data:
    input_path: Null
    tfds_name: 'coco/2017'
    tfds_split: 'validation'
    tfds_download: True
    # tfds_skip_decoding_feature: source_id,image,height,width,groundtruth_classes,groundtruth_is_crowd,groundtruth_area,groundtruth_boxes
    is_training: False
    global_batch_size: 2
    dtype: 'float16'
    cycle_length: 10
    decoder:
      type: tfds_decoder
    shuffle_buffer_size: 2
trainer:
  train_steps: 4257792
  validation_steps: 2500
  validation_interval: 5000
  steps_per_loop: 100 #59136
  summary_interval: 100 #59136
  checkpoint_interval: 59136
  optimizer_config:
    optimizer:
      type: 'sgd'
      sgd:
        momentum: 0.9
        #    learning_rate:
        #      type: 'cosine'
        #      cosine:
        #        initial_learning_rate: 0.0021875
        #        decay_steps: 4257792
        #        alpha: 0.01
# Stepwise version
    learning_rate:
      type: 'stepwise'
      stepwise:
        # boundaries: [26334, 30954]
        boundaries: [3370752, 3962112]
        # values: [0.28, 0.028, 0.0028]
        values: [0.0021875, 0.00021875, 0.000021875]
    warmup:
      type: 'linear'
      linear:
        warmup_steps: 64000
        warmup_learning_rate: 0.0000523
