gpt4 book ai didi

python - 在神经网络中实现稀疏连接(Theano)

转载 作者:IT老高 更新时间:2023-10-28 20:48:48 26 4
gpt4 key购买 nike

神经网络的一些用例要求并非所有神经元都连接在两个连续的层之间。对于我的神经网络架构,我需要有一个层,其中每个神经元只与前一层中的一些预先指定的神经元有连接(在有些随意的地方,而不是像卷积层这样的模式)。为了在特定图表上对数据进行建模,这是必需的。我需要在 Theano 中实现这个“稀疏”层,但我不习惯 Theano 的编程方式。

似乎在 Theano 中编程稀疏连接的最有效方法是使用 theano.tensor.nnet.blocksparse.SparseBlockGemv .另一种方法是进行矩阵乘法,其中许多权重设置为 0(= 无连接),但这与 SparseBlockGemv 相比效率非常低,因为每个神经元仅连接到 2-6 个神经元大约 100000 个神经元中的前一层。此外,100000x100000 的权重矩阵不适合我的 RAM/GPU。因此,有人可以提供一个示例,说明如何使用 SparseBlockGemv 方法或其他计算效率高的方法来实现稀疏连接?

一个完美的例子是扩展 MLP Theano Tutorial在隐藏层之后(并且在 softmax 之前)有一个额外的层,其中每个神经元只与前一层中的一个神经元子集有连接。但是,也非常欢迎其他示例!

编辑:请注意,该层必须在 Theano 中实现,因为它只是较大架构的一小部分。

最佳答案

全连接层的输出由输入的点积和该层的权重给出。在 theano 或 numpy 中你可以使用 dot 方法。

y = x.dot(w)

如果您只与前一层中的某些神经元有连接,并且这些连接是预定义的,您可以执行以下操作:

y = [x[edges[i]].dot(w[i])) for i in neurons]

其中 edges[i] 包含连接到神经元 i 的神经元的索引,而 w[i] 包含此连接的权重。

请注意,theano 不知道层或其他高级细节。

关于python - 在神经网络中实现稀疏连接(Theano),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36437989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com