I am confused about changing the parameters for training a net in caffe based on our own data. 
- Which layers of net we should pay attention more to train the net on our own data? For example, the number of outputs based on the number of classes.
 
I tried to train FCN32 for semantic segmentation. I changed the number of outputs in Deconvolution layer (i.e.,upscore_sign) to the number of classes in my data, but it is giving an error.  
- We have different outputs in different convolutional layers. How can I detect different outputs from each other and which one should I change?
 - The next question is what is the difference between 
deploy.prototxtandtrain_val.prototxt. - And what is the application of deploy.prototxt? Should I change the
layers in 
deploy.prototxtbased on the train_val.prototxt? 
I really appreciate if someone knows, please share your knowledge.
Thanks