Я пишу некоторые базовые инструменты нейронной сети для более масштабного проекта, над которым я работаю.
Сама нейронная сеть состоит из векторов различных структур, и для одной функции я хочу ее удалитьнейрон из указанного слоя.Всякий раз, когда я использую функцию, она работает правильно, пока не уберет край нейрона, который идет к нейронам, в следующий слой (слой + 1), который вызывает ошибку сегмента.
void NeuralNetwork::deleteNeuron(int t_layer, int t_neuronToDelete){
if(t_layer < 0 || t_layer >= neuralNetwork.size())
throw LayerDoesNotExistException();
int numOfNeurons = neuralNetwork[t_layer].neurons.size();
if(t_neuronToDelete < 0 || t_neuronToDelete >= numOfNeurons)
throw NeuronDoesNotExistException();
//delete neuron
//removes neuron
neuralNetwork[t_layer].neurons.erase(neuralNetwork[t_layer].neurons.begin() + t_neuronToDelete);
//remove its edge from neurons to the right
if(t_layer != neuralNetwork.size())//doesnt let it remove edges if its the output layer
for(int i=0; i < neuralNetwork[t_layer+1].neurons.size(); i++){
std::vector<double*>::iterator it = neuralNetwork[t_layer+1].neurons[i].pWeights.begin() + t_neuronToDelete;
//this line segfaults
neuralNetwork[t_layer+1].neurons[i].pWeights.erase(it);
}
}