I set my own data set for training and testing but it can't work correctly on the workbench .
I'v created a image data set that format like "CIFAR10" but whit 4 bytes label because it more than 9 categories. and then i'v changed the data set parsing method for adapting new format.it passed the pack and unpack test .
I have set a new NuralNetwor instance and disabled others and add some new layers on it,my image's size is 65*53 rather than 32*32 .
I know that the parameter's passed in 'AddLayer 'mothod must be calculated , but i'v no idea about that, because i cannot find document's or manual in the solution files.I was confused when i was setting.
Anothor problem is the size of the bool array maps, what's that and what size is the correct one?
After these changes The app can not work because the exceptions about 'index out of range '.
I konw that because the AddLayer method not passed correct params ,the next layer is depend on the above one.but I do not know how to set it correctly.
Can i get some help about the 'bool array maps' and some directions on setting the parameter's of add each layer.
NeuralNetwork network = new NeuralNetwork(DataProvider, "TencentCaptcha CNN", 10, 1D, LossFunctions.CrossEntropy, DataProviderSets.TencentCaptcha, TrainingStrategy.SGDLevenbergMarquardt);
network.AddLayer(LayerTypes.Input, 3, 65, 53);
bool[] maps = new bool[3 * 64]
{
true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true,
false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true,
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true
};
network.AddLayer(LayerTypes.Convolutional, ActivationFunctions.ReLU, 64, 66, 14, 10, 10, 1, 1, 0, 0, new Mappings(maps));
network.AddLayer(LayerTypes.StochasticPooling, ActivationFunctions.Ident, 64, 32, 33, 5, 5, 2, 2);
network.AddLayer(LayerTypes.Convolutional, ActivationFunctions.ReLU, 64, 28, 30, 5, 4, 1, 1, 0, 0, new Mappings(64, 64, 66, 1));
network.AddLayer(LayerTypes.StochasticPooling, ActivationFunctions.Ident, 64, 14, 15, 3, 3, 2, 2);
network.AddLayer(LayerTypes.Local, ActivationFunctions.Logistic, 384, 1, 1, 5, 5, 1, 1, 0, 0, 50);
network.AddLayer(LayerTypes.FullyConnected, ActivationFunctions.SoftMax, 2704);
network.InitializeWeights();
update:
i found the logic and fixed the bugs.it works with no exceptions now but i'm not sure if the setting is correct.
NeuralNetwork network = new NeuralNetwork(DataProvider, "TencentCaptcha CNN", 10, 1D, LossFunctions.CrossEntropy, DataProviderSets.TencentCaptcha, TrainingStrategy.SGDLevenbergMarquardt);
network.AddLayer(LayerTypes.Input, 3, 65, 53);
bool[] maps = new bool[3 * 64]
{
true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true,
false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true,
false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true,false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true
};
network.AddLayer(LayerTypes.Convolutional, ActivationFunctions.ReLU, 64, 56, 44, 10, 10, 1, 1, 0, 0, new Mappings(maps));
network.AddLayer(LayerTypes.StochasticPooling, ActivationFunctions.Ident, 64, 28, 22, 5, 5, 2, 2);
network.AddLayer(LayerTypes.Convolutional, ActivationFunctions.ReLU, 64, 24, 18, 5, 5, 1, 1, 0, 0, new Mappings(64, 64, 66, 1));
network.AddLayer(LayerTypes.StochasticPooling, ActivationFunctions.Ident, 64, 12, 8, 3, 3, 2, 2);
network.AddLayer(LayerTypes.Convolutional, ActivationFunctions.ReLU, 64, 8, 4, 4, 4, 1, 1, 0, 0, new Mappings(64, 64, 66, 1));
network.AddLayer(LayerTypes.StochasticPooling, ActivationFunctions.Ident, 64, 4, 2, 2, 2, 2, 2);
network.AddLayer(LayerTypes.Local, ActivationFunctions.Logistic, 384, 1, 1, 1, 1, 1, 1, 0, 0, 50);
network.AddLayer(LayerTypes.FullyConnected, ActivationFunctions.SoftMax, 2704);
network.InitializeWeights();
modified 31Jul14 23:44pm.
