【发布时间】:2013-04-14 19:01:40
【问题描述】:
您好,我正在用 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];
}
din 表示我的输入层中的神经元数量。 dhid 表示我的隐藏层中的神经元数量。 dout 代表我的输出层中的神经元数量。 我没有费心展示我的隐藏层的初始化,因为它并不重要 谢谢
我在根据我的 IDE(netbeans) 显示错误的行上写了 //ERROR
【问题讨论】:
-
问题是什么?
-
您认为您编写的代码有什么问题?它确实存在一些问题,但如果您解释自己而不是我们猜测,它会有所帮助。
-
如果你使用
new而不是malloc,在内存分配后会调用构造方法。构造函数是你应该初始化对象的地方。 -
main.cpp:138:50: error: expected primary-expression before ')' token 这是我得到的错误,它指的是我使用 malloc 的方式,这让我觉得我我没有正确使用 malloc
-
另一种方法是使用
std::vector并在vector的构建过程中复制项目。
标签: c++ machine-learning backpropagation