Это код обратного распространения, посмотрите, пожалуйста
Это то, что он выводит, посмотрите на прогнозы
// это всего лишь его часть с прямой связью
template <typename T>
T Run_Network(int Class_Neurons_size,std::vector<std::vector<T> >Input,std::vector<std::vector<T> >Weight_Store,std::vector<std::vector<T> >Weight_Store_2,std::vector<std::vector<T> >Weight_Store_3){
NEX_MATRIX::Math Operations;
//start with the first layer
for(int i=0;i<3;i++){
float activation= Hidden_Biases[i];
for(std::vector<std::vector<float> >::size_type j=0;j<Input.size();j++){
for(std::vector<float>::size_type k=0;k<Input[j].size();k++){
activation+= Weight_Store[j][k]*Input[j][k];
}
}
Hidden_Neurons.push_back(Operations.Sigmoid(activation));
}
Hidden_Neurons_Store[0]=Hidden_Neurons[0];
Hidden_Neurons_Store[1]=Hidden_Neurons[1];
Hidden_Neurons_Store[2]=Hidden_Neurons[2];
//H2 Layer
for(int j=0;j<3;j++){
float activation= Hidden_Biases_2[j];
for(int k=0;k<3;k++){
activation+= Hidden_Neurons[k]*Weight_Store_2[j][k];
}
Hidden_Neurons_2.push_back(Operations.Sigmoid(activation));
}
while (Hidden_Neurons.size()!=0){
Hidden_Neurons.pop_back();
}
//H3 Layer
for(int j=0;j<2;j++){
float activation= Hidden_Biases_3[j];
for(int k=0;k<Output_Biases.size();k++){
activation+= Hidden_Neurons_2[k]*Weight_Store_3[j][k];
}
Hidden_Neurons_3.push_back(Operations.Sigmoid(activation));
}
while(Hidden_Neurons_2.size()!=0){
Hidden_Neurons_2.pop_back();
}
//Output Layer with all Current Classes
//problem is here\n;
for(int j=0;j<Output_Biases.size();j++){
float activation= Output_Biases[j];
for(int i=0;i<Output_Weight_Store.size();i++){
for(int k=0;k<3;k++){
activation+= Hidden_Neurons_3[k]*Output_Weight_Store[i][k];
}
}
Output_Neuron.push_back(Operations.Sigmoid(activation));
}
while(Hidden_Neurons_3.size()!=0){
Hidden_Neurons_3.pop_back();
}
Output_Neuron= SoftMax(Output_Neuron);
std::cout<<"\n";
for(int j=0;j<Output_Neuron.size();j++){
std::cout<<Output_Neuron[j]<<"\n";
}
std::cout<<"\n";
return MaxPool(Output_Neuron);
}
Кажется, я не могу понять, как решить эту проблему или даже как к ней подойти, использую ли я неправильную архитектуру или у меня просто есть небольшая вычислительная проблема, которая где-то незаметна? Я хотел бы помочь, спасибо.