c++ - 堆栈溢出多层感知器

标签 c++ neural-network stack-overflow perceptron

我正在尝试使用 visual studio 2013 在 c++ 中构建一个多层感知器网络。首先,我为第一层的中子创建了一个结构,但是当我运行它时,出现了堆栈溢出错误。这是我的代码:

#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <fstream>
#include <vector>

// Number of Neurons
#define INPUTS 784
#define INPNEUR 784
#define HIDNEUR 500
#define OUTNEUR 10

struct inpneuron {
int number;
double weights[INPUTS];
double bias;
double inputs[INPUTS];
double output;
double delta;
};

typedef struct inpneuron InpNeuron;

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int i, j, x[INPUTS];

InpNeuron InputLayer[INPNEUR];

system("PAUSE");

return 0;
}

它给出的异常是:多层感知器 MNIST.exe 中 0x00302CB7 处未处理的异常:0xC00000FD:堆栈溢出(参数:0x00000000、0x00522000)。

我在编程方面经验很少,但我认为这是一个内存问题,因为当我减少神经元或输入的数量时,它会起作用。有什么方法可以让它与这么多的神经元和输入一起工作吗?

最佳答案

这一行

 InpNeuron InputLayer[INPNEUR];

在堆栈上分配大量内存,超过默认可用的内存。您应该改用 std::vector:

 std::vector<InpNeuron> InputLayer(INPNEUR);

从堆中安全地分配必要的内存。

关于c++ - 堆栈溢出多层感知器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29194318/

相关文章:

artificial-intelligence - 连接 4 与神经网络 : evaluation of draft + further steps

java - 如果递归函数不在循环中,则当索引大于某个数字时获取 StackOverflowError

java - 简单的 JDialog 导致堆栈溢出

c++ - 这个 C++ 代码片段如何将任意类型转换为唯一整数?

machine-learning - 添加一项功能后,我的 cnn 准确性下降了

machine-learning - 分类中如何选择正确的类别编码方法

java - StackOverflowError when running my "Knight' s Tour”(否则就差不多完成了)

c++ - 有点迂腐的问题: which is more efficient?

c++ - 为什么 C++ 不对指针数据强制执行 const?

c++ - 为什么我不能通过在 cpp 中使用新运算符传递指针来更改值?