Hello,
I am an undergraduate researcher at Iowa State and I am getting into machine learning for my research. I have been learning on Caffe for a while now and have been working on a problem involving multi-label accuracy for images. The problem I have run into is that although my neural net shows loss is decreasing (I.e. appears to train fine), When I test any image on it I receive the same output prediction.
A little more detail on my network: I am using a convolutional network with two convolution layers and two pooling layers. I also have one fully connected layer then one output layer (Very similar structure to LeNet):
Data --> Conv1 --> Pool1 --> Conv2 --> Pool2 --> IP1 --> Softmax --> output --> Euclidean Loss
N-Dimensional Label --> Softmax --> Euclidean Loss
I have tried two different methods of reading in label data: the first was writing the labels into a separate database then having a separate data input layer for them.
After seeing no success with that I modified Caffe to accept multiple labels (A small hack of the code base to change datum to hold a string of bytes instead of a single value). After testing to make sure my modifications correctly read in data for each image I tested my net and am still seeing the same results (All predictions are the same).
In both cases I use a Euclidean Loss layer to provide a euclidean distance between the output my net produces and the desired output label, and as I previously mentioned, during the training process the loss does appropriately decrease.
My question to you (the community) is: is there something I am not doing correctly? Or do you have any suggestions I could try to see some different results?
Please keep in mind I am still on the learning curve for Machine Learning and Caffe, so I don't pretend to know all the things that could be causing this. I appreciate your feedback!
Thanks,
Mike