我目前正在尝试设置一个用于信息提取的神经网络,我对神经网络的(基础)概念相当熟悉,除了一个让我感到困惑的问题。这可能很明显,但我似乎找不到相关的资料。
神经网络在哪里/如何存储它们的内存?(/机器学习)
网上有很多关于神经网络和机器学习的信息,但它们似乎都略过了内存存储。例如,在重新启动程序后,它从哪里找到内存来继续学习/预测?在线的许多例子似乎都没有“保留”内存,但我无法想象这对于真实/大规模部署是“安全”的。
我很难表达我的问题,所以如果我需要进一步说明,请告诉我。谢谢,
编辑:- 跟进下面的回答
每个神经网络都会有与之相关的边权重。这些边权重在神经网络的训练过程中被调整。
这正是我所挣扎的地方,我应该如何设想这种二级内存?这就像RAM吗?这似乎不合逻辑…我问这个问题的原因是因为我在网上没有遇到过定义或指定这种二级内存的例子(例如在更具体的东西中,如XML文件,或者甚至是一个巨大的数组)。
回答:
内存存储是特定于实现的,并不属于算法本身。可能更有用的是考虑你需要存储什么,而不是如何存储它。
考虑一个具有3层多层感知器(完全连接),输入层、隐藏层和输出层分别有3、8和5个节点(在这个讨论中,我们可以忽略偏置输入)。那么,一个合理且高效的表示所需权重的方法是使用两个矩阵:一个3x8
的矩阵用于输入层和隐藏层之间的权重,一个8x5
的矩阵用于隐藏层和输出层之间的权重。
对于这个例子,你需要存储权重和网络形状(每层的节点数)。有很多方法可以存储这些信息。可以是XML文件或用户定义的二进制文件。如果你使用的是Python,你可以将这两个矩阵保存到一个二进制的.npy
文件中,并在文件名中编码网络形状。如果你实现了算法,如何存储持久数据取决于你。另一方面,如果你使用的是现有的机器学习软件包,它可能有自己的I/O功能来存储和加载训练好的网络。