Здравствуйте, я пишу алгоритм для обратного распространения в C++, он состоит из 1 скрытого слоя слоя 1 и 1 выходного слоя. Мне любопытно, как инициализировать мой входной, скрытый и выходной слои.Как инициализировать массив структур с помощью другого элемента?
Это то, что я получил:
struct Neuron {
double activation;
double bias;
double *incomingWeights;
};
struct Network {
double *targetLayer;
Neuron *inputLayer;
Neuron *hiddenLayer;
Neuron *outputLayer;
};
ann.inputLayer = malloc(din * sizeof * Neuron); //ERROR
for (int i = 0; i < din; i++) {
ann.inputLayer[i].activation = 0;
ann.inputLayer[i].bias = 0;
ann.inputLayer[i].incomingWeights = NULL;
}
ann.outputLayer = malloc(dout * sizeof * Neuron); //ERROR
for (int i = 0; i < dout; i++) {
ann.outputLayer[i].activation = 0;
ann.outputLayer[i].bias = 0;
ann.outputLayer[i].incomingWeights = new double[dhid];
}
дин представляет число нейронов в моем входном слое. dhid представляет количество нейронов в моем скрытом слое. dout repreesnts количество нейронов в моем выходном слое. я не утруждать показывает инициализацию моего скрытого слоя причиной его не важно спасибо
я написал // ERROR на линиях, где ошибки показаны в соответствии с моей IDE (NetBeans)
В чем вопрос? –
Что вы думаете о неправильном написании кода? У него есть некоторые проблемы, но это помогает, если вы объясняете себя, а не догадываетесь. – john
Если вы используете 'new' вместо' malloc', метод конструктора будет вызываться после выделения памяти. Конструктор - это то, где вы должны инициализировать объекты. –