问题标签 [pybrain]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
18683 浏览

python - 使用 PyBrain 进行神经网络训练不会收敛

我有以下代码,来自 PyBrain 教程:

然而,结果是一个没有经过良好训练的神经网络。在查看错误输出时,网络得到了正确的训练,但是它使用 'continueEpochs' 参数来训练更多,并且网络再次表现更差。所以网络正在收敛,但没有办法得到最好的训练网络。PyBrain 的文档暗示返回的是经过最佳训练的网络,但是它返回了一个错误元组。

当将 continueEpochs 设置为 0 时出现错误(ValueError: max() arg 是一个空序列),因此 continueEpochs 必须大于 0。

PyBrain 是否真的被维护了,因为文档和代码似乎有很大的不同。

0 投票
0 回答
696 浏览

python - 神经网络训练图像以便将其 unicode 作为输出 - python

我有一个角色的形象。我想制作一个神经网络,以便将像素的线性数组作为输入并生成字符的 Unicode,以便我可以将它与该字符的实际 Unicode 进行比较。我使用 pybrain 进行了尝试,但无法编写可以生成 Unicode 的代码。这些是我将用于神经网络的参数:

• 学习率 = 150

• S 形斜率 = 0.026

• 权重偏差 = 30

• 时期数 = 300(最大值)

• 平均误差阈值 = 0.0002

我正在考虑以下算法:

  1. 根据指定的拓扑参数组成网络
  2. 在指定的 ± 权重偏差值内使用随机值初始化权重。 [7]
  3. 加载训练集文件(输入图像和所需的输出文本)
  4. 分析输入图像并将所有检测到的符号映射到线性阵列中
  5. 从文件中读取所需的输出文本并将每个字符转换为二进制 Unicode 值以单独存储
  6. 对于每个字符:计算前馈网络的输出 b. 与对应于符号的期望输出进行比较并计算误差 c。在每个链接上反向传播误差以调整权重
  7. 移动到下一个字符并重复步骤 6,直到所有字符都被访问
  8. 计算所有字符的平均误差
  9. 重复第 6 步和第 8 步,直到指定的 epoch 数 是否达到错误阈值?如果是,则中止迭代 b。如果不继续迭代

我无法在第 6 步生成 unicode 作为神经网络的输出。请帮助

0 投票
1 回答
2281 浏览

python - activation values for all nodes in a PyBrain network

I feel like this should be trivial, but I've struggled to find anything useful in the PyBrain documentation, on here, or elsewhere.

The problem is this :

I have a three layer (input, hidden, output) feedforward network built and trained in PyBrain. Each layer has three nodes. I want to activate the network with novel inputs and store the resultant activation values of the nodes at the hidden layer. As far as I can tell, net.activate() and net.activateOnDataset() will only return the activation values of output layer nodes and are the only ways to activate a network.

How do I get at the hidden layer activations of a PyBrain network?

I'm not sure example code will help that much in this case, but here's some anyway (with a cut-down training set) :

In this case, desired functionality is to print a list of the hidden layer's activation values.

0 投票
1 回答
556 浏览

neural-network - Pybrain 中的词分类:输入向量中不同数量的序列

我正在尝试使用 PyBrain 实现一个简单的单个数字分类器。我有许多记录的数字 0 到 9 示例的训练数据,并编写了一个脚本来为每个示例提取 MFCC。为了简单起见(目前),我只计算 13 个系数,并且每 10 毫秒对音频文件进行一次采样。由于每个记录的训练示例都具有不同的持续时间,例如,所有“零”集合的样本数量会根据音频的长度而变化。因此,对于“零”的一些示例,我有一个形状为 (67,13) 的 MFCC 训练向量,而对于其他人,它可能是 (44, 13)。

问题是在 PyBrain 中创建数据集时,输入向量的维度必须是统一的,并且应该包含与列相同的行数。

是否有某种方法可以定义数据集,以便输入向量具有固定数量的列(13 个 MFCC)但可变的行数(取决于从信号中获取的样本数量)?还是我这样做完全错了?

我已经在网上和 Stack Overflow 上进行了搜索和搜索,但无法找到答案。我可以遵循并实现教程中的 Pybrain 示例。

0 投票
1 回答
4694 浏览

machine-learning - 在神经网络开始在训练数据上表现可接受之前的隐藏层数、隐藏层中的单元数和历元数

我正在尝试使用神经网络解决这个Kaggle 问题。我正在使用 Pybrain Python 库。

这是一个经典的监督学习问题。在以下代码中:“数据”变量是 numpy 数组(892*8)。7 个字段是我的特征,1 个字段是我的输出值,可以是“0”或“1”。

在训练我的神经网络之后,当我在训练数据上对其进行测试时,它总是为所有输入提供一个输出。喜欢:

我尝试更改 learningRate、weightDecay、动量、隐藏单元数、隐藏层数、隐藏层类、输出层类以解决它,但在每种情况下,如果输入来自训练,它会为每个输入提供相同的输出数据。

我认为我应该运行它超过 8000 次,因为当我为“XOR”构建神经网络时,它至少需要 700 次迭代才能开始给出纳米级的错误。'XOR' 上的训练数据大小仅为 4,而在本例中为 892。所以我在 10% 的原始数据上运行了 8000 次迭代(现在训练数据的大小为 89),即使这样它为每个输入提供相同的输出在训练数据中。由于我想将输入分类为“0”或“1”,如果我使用输出层的类作为 Softmax,那么它总是给出“1”作为输出。

无论我在“异或”中使用哪种配置(隐藏单元的数量、输出层的类别、学习率、隐藏层的类别、动量),它在每种情况下都或多或少地开始收敛。

有可能有一些配置最终会产生较低的错误率。至少进行一些配置,以便它不会为训练数据中的所有输入提供相同的输出。

我运行了 80,000 次迭代(训练数据大小为 89)。输出样本:

平均误差:0.112558819082

('最大误差:',0.21803000849096299,'中值误差:',0.096632332865968451)

它提供范围内的所有输出(0.33、0.5)。

0 投票
1 回答
304 浏览

python - 神经网络对不同的激活报告相同的响应

我写了这个 Pybrain 神经网络的简单测试,但它并没有像我期望的那样运行。我们的想法是在最多 4095 个数字的数据集上对其进行训练,其中包含素数和非素数类。

忽略(请)这是否可能的问题,我的问题是测试 7、6 和 100 是否为素数的最后三个打印语句都返回相同的结果:

(或类似的东西)我解释这些结果的方式是神经网络以 65% 的把握预测这些数字的每一个都是质数。我的神经网络是否学会了对所有输入都一视同仁,还是我做错了什么?

0 投票
1 回答
756 浏览

python - 为什么在尝试读取 MNIST 数据时出现 EOFError 错误?

运行此代码时出现此错误:

0 投票
1 回答
5440 浏览

python - pybrain 结果不佳

我想知道我是否做错了什么,或者结果是否真的那么差。让我们假设文档中显示的最简单的 NN 示例:

例如

预期为 0。我知道我显然可以四舍五入,但对于这样一个简单的示例,我仍然希望网络更加精确。它可以在这里被称为“工作”,但我怀疑我遗漏了一些重要的东西,因为这非常不可用......

问题是,如果你设置verbose=True为你的教练,你会看到非常小的错误(比如总错误:0.0532936260399)

我会假设网络的错误是 5%,那么在那之后激活功能怎么能这么多呢?

我显然将 pybrain 用于更复杂的事情,但我有同样的问题。即使网络说错误约为 0.09 左右,我也有大约 50% 的测试样本出错。

有什么帮助吗?

0 投票
1 回答
2397 浏览

python - 如何为经过训练和测试的 PyBrain 网络提供输入以及如何获得结果

我正在预测一个值,我有 2 个输入层和一个输出层。这是我的代码,我在其中训练了一个 PyBrain 网络,然后对其进行了测试,我错过了如何向网络提供一组输入以及如何获得结果。请帮助我继续前进。

接下来我应该做什么来提供输入并预测输入,如何获得该组输入的结果。谢谢!!

0 投票
0 回答
1614 浏览

python - pybrain 神经网络不学习

我正在使用 pybrain 构建一个学习趋化性的代理(根据化学信号向食物移动)。代理由一个神经网络表示,它应该根据它与食物的距离来调整它的权重。输入是两个传感器神经元,输出是移动代理的两个运动神经元。因此,我有连续的状态和动作。奖励是与食物距离的倒数。

这是我的主循环的本质:

我尝试过的方法是:

  • 用 Q 进行实验(因为我有连续的状态/动作,所以不起作用)
  • 使用 Reinforce/ENAC 进行实验(梯度下降计算没有变化)
  • 使用 Reinforce/ENAC 进行连续实验(见上文)
  • 使用 HillClimber 进行 EpisodicExperiment(网络权重不变)

我决定尝试使用 EpisodicExperiment,因为它似乎最适合我的实验。

我终于可以看到网络权重发生了变化,但随着时间的推移,我的平均适应度并没有增加。我可能做错了什么?

这是我所有代码的 Gist 存储库https ://gist.github.com/4477624

这是 pybrain 文档:http ://pybrain.org/docs/index.html 学习者文档(例如 Q、Reinforce、HillClimber)位于http://pybrain.org/docs/api/rl/learners.html

代码本身位于https://github.com/pybrain/pybrain。学习者在https://github.com/pybrain/pybrain/tree/master/pybrain/rl/learners,实验在https://github.com/pybrain/pybrain/tree/master/pybrain/rl/实验

但是,我正在使用带有 EpisodicExperiment 的优化学习器;这些位于https://github.com/pybrain/pybrain/tree/master/pybrain/optimization

我相信您可以从那里找到通过文档和代码的方式。我正在使用的其他所有内容都在https://github.com/pybrain/pybrain/tree/master/pybrain/rl中。