在python中训练神经网络时遇到断言错误?

2024-10-01 15:46:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这是我的密码。。。在

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

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节

错误:

^{pr2}$

我怎么训练?并模拟输入的数据?在

如果有人愿意…我会很感激的。谢谢


Tags: 数据importinputoutputdatanetasnl
1条回答
网友
1楼 · 发布于 2024-10-01 15:46:29

你试过其他的训练方法吗?我在另一个答案中看到了它的帮助,因为在图书馆的一个错误。 可用方法: train_gd, train_gdm, train_gda, train_gdx, train_rprop, train_bfgs (DEFAULT), train_cg

您可以通过拨打:

net.trainf = nl.train.train_gd

如果你能提供输入数据(即使是改变了值),那就太好了。在

我试着调用train方法来输入:[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输出时,它应该是这样的:

^{pr2}$

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

我们什么时候可以使用这个特殊的网络?E、 在计算麦当劳的巨无霸和薯条数量时,要根据顾客的年龄、薪水和特定餐厅的位置来计算。它看起来像这样:

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


                      
  | SALARY |                      
                             

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

所以我们可以说转换看起来像这样f([Age, Salary, Place]) = [Big Macs, Fries]。 我们可能有数百万的输入和输出数据记录,由员工收集来训练我们的网络,所以翻译成python时,它将是list的输入(3D),而我们期望{}的输出(2D)。E、 g.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]]

我们希望对您的数据进行同样的处理,但是我们希望输入和输出都是1D,因此我们必须将list的每个元素“包装”到另一个list中。输出和模拟输入是一样的-你忘了。在

predicted_output = net.sim(input_data) # this won't work! You should wrap it

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

相关问题 更多 >

    热门问题