syntax = "proto3";

package second.protos;

import "second/protos/optimizer.proto";
import "second/protos/preprocess.proto";

message Regularizer {
    oneof regularizer_oneof {
      L1Regularizer l1_regularizer = 1;
      L2Regularizer l2_regularizer = 2;
    }
  }
  
  // Configuration proto for L1 Regularizer.
  // See https://www.tensorflow.org/api_docs/python/tf/contrib/layers/l1_regularizer
message L1Regularizer {
    float weight = 1;
}

// Configuration proto for L2 Regularizer.
// See https://www.tensorflow.org/api_docs/python/tf/contrib/layers/l2_regularizer
message L2Regularizer {
    float weight = 1;
}


message TrainConfig{
    Optimizer optimizer = 1;
    // repeated PreprocessingStep data_augmentation_options = 2;
    uint32 inter_op_parallelism_threads = 3;
    uint32 intra_op_parallelism_threads = 4;
    uint32 steps = 5;
    uint32 steps_per_eval = 6;
    uint32 save_checkpoints_secs = 7;
    uint32 save_summary_steps = 8;
    bool enable_mixed_precision = 9;
    float loss_scale_factor = 10;
    bool clear_metrics_every_epoch = 11;

    // Regularizer regularizer = 2; 
}