optimizer.proto 3.25 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
syntax = "proto2";

package object_detection.protos;

// Messages for configuring the optimizing strategy for training object
// detection models.

// Top level optimizer message.
message Optimizer {
  oneof optimizer {
    RMSPropOptimizer rms_prop_optimizer = 1;
    MomentumOptimizer momentum_optimizer = 2;
    AdamOptimizer adam_optimizer = 3;
  }
Vivek Rathod's avatar
Vivek Rathod committed
15
16
  optional bool use_moving_average = 4 [default = true];
  optional float moving_average_decay = 5 [default = 0.9999];
17
18
19
20
21
22
}

// Configuration message for the RMSPropOptimizer
// See: https://www.tensorflow.org/api_docs/python/tf/train/RMSPropOptimizer
message RMSPropOptimizer {
  optional LearningRate learning_rate = 1;
Vivek Rathod's avatar
Vivek Rathod committed
23
24
25
  optional float momentum_optimizer_value = 2 [default = 0.9];
  optional float decay = 3 [default = 0.9];
  optional float epsilon = 4 [default = 1.0];
26
27
28
29
30
31
}

// Configuration message for the MomentumOptimizer
// See: https://www.tensorflow.org/api_docs/python/tf/train/MomentumOptimizer
message MomentumOptimizer {
  optional LearningRate learning_rate = 1;
Vivek Rathod's avatar
Vivek Rathod committed
32
  optional float momentum_optimizer_value = 2 [default = 0.9];
33
34
35
36
37
38
39
40
}

// Configuration message for the AdamOptimizer
// See: https://www.tensorflow.org/api_docs/python/tf/train/AdamOptimizer
message AdamOptimizer {
  optional LearningRate learning_rate = 1;
}

41

42
43
44
45
46
47
// Configuration message for optimizer learning rate.
message LearningRate {
  oneof learning_rate {
    ConstantLearningRate constant_learning_rate = 1;
    ExponentialDecayLearningRate exponential_decay_learning_rate = 2;
    ManualStepLearningRate manual_step_learning_rate = 3;
Vivek Rathod's avatar
Vivek Rathod committed
48
    CosineDecayLearningRate cosine_decay_learning_rate = 4;
49
50
51
52
53
  }
}

// Configuration message for a constant learning rate.
message ConstantLearningRate {
Vivek Rathod's avatar
Vivek Rathod committed
54
  optional float learning_rate = 1 [default = 0.002];
55
56
57
58
59
60
}

// Configuration message for an exponentially decaying learning rate.
// See https://www.tensorflow.org/versions/master/api_docs/python/train/ \
//     decaying_the_learning_rate#exponential_decay
message ExponentialDecayLearningRate {
Vivek Rathod's avatar
Vivek Rathod committed
61
62
63
64
  optional float initial_learning_rate = 1 [default = 0.002];
  optional uint32 decay_steps = 2 [default = 4000000];
  optional float decay_factor = 3 [default = 0.95];
  optional bool staircase = 4 [default = true];
65
66
67
  optional float burnin_learning_rate = 5 [default = 0.0];
  optional uint32 burnin_steps =  6 [default = 0];
  optional float min_learning_rate =  7 [default = 0.0];
68
69
70
71
}

// Configuration message for a manually defined learning rate schedule.
message ManualStepLearningRate {
Vivek Rathod's avatar
Vivek Rathod committed
72
  optional float initial_learning_rate = 1 [default = 0.002];
73
74
  message LearningRateSchedule {
    optional uint32 step = 1;
Vivek Rathod's avatar
Vivek Rathod committed
75
    optional float learning_rate = 2 [default = 0.002];
76
77
  }
  repeated LearningRateSchedule schedule = 2;
78
79
80
81

  // Whether to linearly interpolate learning rates for steps in
  // [0, schedule[0].step].
  optional bool warmup = 3 [default = false];
82
}
Vivek Rathod's avatar
Vivek Rathod committed
83
84
85
86
87
88
89
90

// Configuration message for a cosine decaying learning rate as defined in
// object_detection/utils/learning_schedules.py
message CosineDecayLearningRate {
  optional float learning_rate_base = 1 [default = 0.002];
  optional uint32 total_steps = 2 [default = 4000000];
  optional float warmup_learning_rate = 3 [default = 0.0002];
  optional uint32 warmup_steps = 4 [default = 10000];
91
  optional uint32 hold_base_rate_steps = 5 [default = 0];
Vivek Rathod's avatar
Vivek Rathod committed
92
}