gpt4 book ai didi

python - 在Python中的神经网络中训练数据时出现断言错误?

转载 作者:行者123 更新时间:2023-12-01 03:09:08 25 4
gpt4 key购买 nike

我有一个包含数据的文件BCICIV1bAF3.dat。文件大小为20x1

这是我的代码...

在 newff 函数中,我根据最小/最大决定范围,但我不知道如何决定其他参数。我想要多少隐藏层等等。

import numpy as np
import neurolab as nl

input_data = np.fromfile('BCICIV1bAF3.dat' ,dtype=float)

print(len(input_data))
transformed_input_data = [[x] for x in input_data] # added
print(len(transformed_input_data))
output_data = np.fromfile('test.dat',dtype=float)

transformed_output_data = [[x] for x in output_data] # added

net = nl.net.newff([[-21, -10.5]], [1020, 1])
error = net.train(transformed_input_data, transformed_output_data)
predicted_output = net.sim(input_data)

输入数据:

-10.5-91.7-219.8-227-190.8-218.7-208.2-205-214.3-202-211.5-211.1-208.2-212.4-206-206.7-211.5-210.7-212-215.1

输出数据:

-5.2-45.6-108.6-112-94.5-106.7-99.6-98.5-105.4-101.2-106.4-106.5-102.4-105.7-104-97.9-99.5-101.3-100.6-103.7

错误:

Traceback (most recent call last):
File "NNwork2.py", line 15, in <module>

error = net.train(transformed_input_data, transformed_output_data)
File "C:\Python34\lib\site-packages\neurolab\core.py", line 328, in __call__
assert target.shape[0] == input.shape[0]
AssertionError

我该如何训练?并模拟input_data?

如果有人可以指导...我将非常感激。谢谢

最佳答案

您尝试过其他训练方法吗?我在其他答案中看到它有帮助,因为库中存在错误。可用方法: train_gd、train_gdm、train_gda、train_gdx、train_rprop、train_bfgs(默认)、train_cg

您可以通过调用来更改它:

net.trainf = nl.train.train_gd

如果您可以提供输入数据(即使值已更改),那就太好了。

我尝试以以下形式调用火车方法进行输入:[0,1,2,3...18,19]但失败了 - 我必须将输入(和目标)更改为[[0],[1],...[18],[19]]

编辑:

您的数据格式错误,您应该将其转换为列表列表。我的机器上没有 scipy,但请尝试以下操作:

import numpy as np
import neurolab as nl

input_data = np.fromfile('BCICIV1bAF3.dat' ,dtype=float)
transformed_input_data = [[x] for x in input_data] # added

print(len(transformed_input_data)) # changed
net = nl.net.newff([[-215.1, -10.5]], [20, 1])
error = net.train(transformed_input_data, transformed_input_data, epochs=500) # changed

编辑2:

我不会解释什么是神经网络(我已经有一段时间没有使用它们了),但是当我们想要使用 1 个隐藏层将 3D 输入转换为 2D 输出时,它应该看起来像这样:

INPUT [3D] | HIDDEN LAYER | OUTPUT [2D]
----
| H1 |
----
----
| X1 |
----
---- ----
| H2 | | Y1 |
---- ----


----
| X2 |
----

---- ----
| H3 | | Y2 |
---- ----
----
| X3 |
----
----
| H4 |
----

将每个 X 乘以每个 H,然后我们计算输出。我们如何获得这些 H 值?它们是在神经网络训练期间通过算法计算的。我们指定需要多少个隐藏层,并通过反复试验得出满意的解决方案。非常重要 - 我们应该使用不同的数据来训练和检查神经网络的输出。

我们什么时候可以使用这个特定的网络?例如。根据客户的年龄、工资和特定餐厅的位置来计算人们在麦当劳订购了多少巨无霸和薯条。它看起来像这样:

    -----
| AGE |
-----
---- ----------
| H2 | | BIG MACS |
---- ----------


--------
| SALARY |
--------

---- -----------
| H3 | | FRIES |
---- -----------
-------
| PLACE |
-------
----
| H4 |
----

所以我们可以说转换看起来像这样 f([Age, Salary, Place]) = [Big Macs, Fries]。我们可能有数百万个由员工收集的输入和输出数据记录来训练我们的网络,因此翻译成 python 它将是输入(3D)的列表,我们期望列表输出(2D)。例如。 f([[A_1, S_1, P_1], [A_2, S_2, P_2], ... , [A_N, S_N, P_N]]) -> [[BM_1, F_1], [BM_2, F_2], ...,[BM_N,F_N]]

我们希望您的数据具有相同的功能,但我们希望输入和输出都是一维的,因此我们必须将 list 的每个元素“包装”到另一个 list。输出和模拟输入也是如此 - 你忘了这一点。

predicted_output = net.sim(input_data) # 这不起作用!你应该把它包装起来

但是在训练数据上测试神经网络是错误的 - 你不应该这样做

关于python - 在Python中的神经网络中训练数据时出现断言错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43045240/

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