name: "PNet"
layer
{
   name: "data"
   type: "Input"
   top:  "data"
   input_param{shape:{dim:1 dim:3 dim:12 dim:12}}
}

layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  convolution_param {
    num_output: 10
    kernel_size: 3
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layer {
  name: "ReLU1"
  type: "ReLU"
  bottom: "conv1"
  top: "conv1_1"
}

layer {
	name: "scale1_1"
	bottom: "conv1"
	top: "conv1_2"
	type: "Scale"
	scale_param {
		axis: 1
		bias_term:false
	}
}
layer {
  name: "ReLU1_2"
  type: "ReLU"
  bottom: "conv1_2"
  top: "conv1_2"
}
layer {
	name: "scale1_2"
	bottom: "conv1_2"
	top: "conv1_2"
	type: "Scale"
	scale_param {
		axis: 1
		bias_term:false

	}
}
layer {
  name: "eltwise-sum1"
  type: "Eltwise"
  bottom: "conv1_1"
  bottom: "conv1_2"
  top: "conv1_3"
  eltwise_param { operation: SUM }
}
layer {
  name: "pool1"
  type: "Pooling"
  bottom: "conv1_3"
  top: "pool1"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}

layer {
  name: "conv2"
  type: "Convolution"
  bottom: "pool1"
  top: "conv2"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  convolution_param {
    num_output: 16
    kernel_size: 3
    stride: 1
     weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}
layer {
  name: "ReLU2"
  type: "ReLU"
  bottom: "conv2"
  top: "conv2_1"
}

layer {
	name: "scale2_1"
	bottom: "conv2"
	top: "conv2_2"
	type: "Scale"
	scale_param {
		axis: 1
		bias_term:false

	}
}
layer {
  name: "ReLU2_2"
  type: "ReLU"
  bottom: "conv2_2"
  top: "conv2_2"
}
layer {
	name: "scale2_2"
	bottom: "conv2_2"
	top: "conv2_2"
	type: "Scale"
	scale_param {
		axis: 1
		bias_term:false
	}
}
layer {
  name: "eltwise-sum2"
  type: "Eltwise"
  bottom: "conv2_1"
  bottom: "conv2_2"
  top: "conv2_3"
  eltwise_param { operation: SUM }
}


layer {
  name: "conv3"
  type: "Convolution"
  bottom: "conv2_3"
  top: "conv3"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  convolution_param {
    num_output: 32
    kernel_size: 3
    stride: 1
     weight_filler {
      type: "xavier"
    }
    bias_filler {
	  type: "constant"
    }
  }
}
layer {
  name: "ReLU3"
  type: "ReLU"
  bottom: "conv3"
  top: "conv3_1"
}
layer {
	name: "scale3_1"
	bottom: "conv3"
	top: "conv3_2"
	type: "Scale"
	scale_param {
		axis: 1
		bias_term:false
	}
}
layer {
  name: "ReLU3_2"
  type: "ReLU"
  bottom: "conv3_2"
  top: "conv3_2"
}
layer {
	name: "scale3_2"
	bottom: "conv3_2"
	top: "conv3_2"
	type: "Scale"
	scale_param {
		axis: 1
		bias_term:false
	}
}
layer {
  name: "eltwise-sum3"
  type: "Eltwise"
  bottom: "conv3_1"
  bottom: "conv3_2"
  top: "conv3_3"
  eltwise_param { operation: SUM }
}

layer {
  name: "conv4-1"
  type: "Convolution"
  bottom: "conv3_3"
  top: "conv4-1"
  param {
    lr_mult: 1
    decay_mult: 1
  }
  param {
    lr_mult: 2
  }
  convolution_param {
    num_output: 2
    kernel_size: 1
    stride: 1
     weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
    }
  }
}

layer {
  name: "conv4-2"
  type: "Convolution"
  bottom: "conv3_3"
  top: "conv4-2"
  param {
    lr_mult: 1
  }
  param {
    lr_mult: 2
  }
  convolution_param {
    num_output: 4
    kernel_size: 1
    stride: 1
     weight_filler {
      type: "xavier"
	}
    bias_filler {
      type: "constant"
    }
  }
}
layer {
  name: "prob1"
  type: "Softmax"
  bottom: "conv4-1"
  top: "prob1"
}