gpt4 book ai didi

tensorflow - 有没有办法使用 Tensorflow(使用 Keras)或 PyTorch 删除 NN 层之间的 1-2(或更多)特定神经元连接?

转载 作者:行者123 更新时间:2023-11-30 09:59:06 25 4
gpt4 key购买 nike

我正在制作一个 GUI 来创建不同的独特神经网络。我不喜欢使用 TensorFlow 2.0(带有 Keras API)或 PyTorch 作为后端。但我缺乏有关这些主题的信息,如果有人能回答这些问题,我将非常感激:

语言:Python

1) 如何使用这些框架删除 NN 层之间的特定神经元连接?2)如何为层中的部分神经元设置具体的学习规则?3)如何设置该层部分神经元的具体激活函数?

非常感谢,请随时回答,任何信息都是有用的。

附注如果有人想为这个项目做出贡献,那就太棒了。 Screenshot of the GUI functionality I want to add

最佳答案

这些库的工作方式是将层的连接/权重表示为“张量”(即多维数组或矩阵)。这使得层的应用表现为线性代数运算(矩阵乘法)。 PyTorch/Tensorflow 并未将各个神经连接表示为代码中的不同对象,因此将它们视为要单独操作或删除的对象是有意义的。

1) How to remove specific neuron connections between the layers in NN using any of these frameworks?

您可以将其中一个权重设置为零,即layer.weights[x, y]=0,尽管这实际上并没有“删除”它或阻止它以后被更改为非零。

也许您可以使用稀疏张量而不是密集张量,密集张量是包含所有非零索引和值的列表的坐标格式。只有当非零值百分比较低时,稀疏才会更有效。

2) How to set the specific learning rule for some of the neurons in the layer?

学习规则是指优化器吗?您可以找到有关多个优化器的其他帖子,其结果可能类似于下面的 (3)。例如

https://discuss.pytorch.org/t/two-optimizers-for-one-model/11085

3) How to set the specific activating function for some of the neurons in the layer?

运算符和激活函数通常被实现为对完整张量进行有效操作。您可以将一个层拆分为两个独立的较小层,然后将它们相邻运行(在网络中的同一级别)。

例如如果你有

layer1=torch.nn.Linear(10, 10)

但不仅仅是 torch.relu(layer1(input)) 您想要将 relu 应用于某些输出,例如 sigmoid对于其他人,您可以:

layer1a = torch.nn.Linear(10, 5)
layer2b = torch.nn.Linear(10, 5)

然后

torch.cat( (torch.relu(layer1a(x)), torch.sigmoid(layer1b(x)) ), 0)

类似地,您可以将任何张量分成几部分,将各种函数应用于不同的范围/值,然后使用 torch.cat 将结果拼接在一起。

关于tensorflow - 有没有办法使用 Tensorflow(使用 Keras)或 PyTorch 删除 NN 层之间的 1-2(或更多)特定神经元连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59763208/

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