# Copyright (c) 2016 PaddlePaddle Authors. All Rights Reserved
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


################################### Data Configuration ###################
TrainData(PyData(type="py", 
            files = "./gserver/tests/pyDataProvider/pyDataProviderList", 
            load_data_module="pyDataProvider", 
            load_data_object="SimpleDataProvider"))

################################### Algorithm Configuration #############
Settings(
    learning_rate_decay_a = 1e-05,
    learning_rate_decay_b = 1e-06,
    learning_rate = 0.001,
    batch_size = 1,
    algorithm = 'sgd',
    num_batches_per_send_parameter = 1,
    num_batches_per_get_parameter = 1,
)

################################### Network Configuration ###############
Layer(type = "data", name = "input1", size = 3)
Layer(type = "data", name = "input2", size = 7)

Layer(inputs = [Input("input1", 
                      decay_rate = 0.12, 
                      initial_std = 0.02, 
                      parameter_name = "_layer1_1.w"), 
                Input("input2", 
                      decay_rate = 0.12, 
                      initial_std = 0.02, 
                      parameter_name = "_layer1_2.w"),
               ], 
      name = "layer1", 
      bias = Bias(parameter_name = "_layer1.bias"), 
      active_type = "sigmoid", 
      type = "fc", 
      size = 100)
Layer(inputs = [Input("layer1", 
                      decay_rate = 0.06, 
                      initial_std = 0.02, 
                      parameter_name = "_layer2.w")], 
      name = "layer2", 
      bias = Bias(parameter_name = "_layer2.bias"), 
      active_type = "sigmoid", 
      type = "fc", 
      size = 100)
Layer(inputs = [Input("layer2", 
                      decay_rate = 0.02, 
                      initial_std = 0.02, 
                      parameter_name = "_layer_output.w")], 
      name = "output", 
      bias = Bias(parameter_name = "_layer_output.bias"), 
      active_type = "softmax", 
      type = "fc", 
      size = 10)

Layer(type = "data", name = "label", size = 1)
Layer(inputs = [Input("output"), Input("label")], 
      type = "multi-class-cross-entropy", 
      name = "cost")
Inputs("input1", "input2", "label")
Outputs("cost")
