syntax = "proto2";
package oneflow;

message ConstantInitializerConf {
  optional float value = 1 [default = 0];
}

message ConstantIntInitializerConf {
  optional int64 value = 1 [default = 0];
}

message RandomNormalInitializerConf {
  optional float mean = 1 [default = 0];
  optional float std = 2 [default = 1];
}

//output[D_0 ... D_(axis - 1) i D_(axis + 1) ... D_n] = start + i * stride
message RangeInitializerConf {
  optional double start = 1 [default = 0];
  optional double stride = 2 [default = 1];
  optional int64 axis = 3 [default = -1];
}

message IntRangeInitializerConf {
  optional int64 start = 1 [default = 0];
  optional int64 stride = 2 [default = 1];
  optional int64 axis = 3 [default = -1];
}

message EmptyInitializerConf {
}

message InitializerConf {
  oneof type {
    ConstantInitializerConf constant_conf = 1;
    ConstantIntInitializerConf constant_int_conf = 2;
    RandomNormalInitializerConf random_normal_conf = 3;
    RangeInitializerConf range_conf = 4;
    IntRangeInitializerConf int_range_conf = 5;
    EmptyInitializerConf empty_conf = 6;
  }
}

message InitializeWithSnapshotConf {
  required string path = 1;
  optional string key = 2;
}
