【问题标题】:How to load training data in PyBrain?如何在 PyBrain 中加载训练数据?
【发布时间】:2011-11-15 16:39:15
【问题描述】:

我正在尝试使用 PyBrain 进行一些简单的 NN 训练。我不知道该怎么做是从文件中加载训练数据。他们的网站上的任何地方都没有解释。我不关心格式,因为我现在可以构建它,但是我需要在文件中完成它而不是手动逐行添加,因为我将有数百行。

【问题讨论】:

  • 几百行意味着你有一个非常小的集合,不应该关心性能。但是 PyBrain 不只接受 NumPy 数组吗?
  • 我不知道,我刚开始使用它,但他们没有说如何将 NumPy 数组与他们的 NN 一起使用:/

标签: python neural-network pybrain


【解决方案1】:

我是这样做的:

ds = 监督数据集(6,3) tf = open('mycsvfile.csv','r') 对于 tf.readlines() 中的行: data = [float(x) for x in line.strip().split(',') if x != ''] indata = 元组(数据[:6]) outdata = 元组(数据[6:]) ds.addSample(输入数据,输出数据) n = buildNetwork(ds.indim,8,8,ds.outdim,recurrent=True) t = BackpropTrainer(n,learningrate=0.01,momentum=0.5,verbose=True) t.trainOnDataset(ds,1000) t.testOnData(详细=真)

在这种情况下,神经网络有 6 个输入和 3 个输出。 csv 文件每行有 9 个值,以逗号分隔。前 6 个值是输入值,后三个是输出值。

【讨论】:

  • 太好了,非常感谢。你知道如何获取每个神经元的权重值吗?
  • 您可以像这样访问各个层:n['in'] 用于输入层,n['out'] 用于输出或 n['hidden0'] 用于第一个隐藏层。我不知道,但我猜你可以以某种方式访问​​该层的节点。 dir(n['in']) 应该会提示您可以做什么
  • 我找不到怎么做。我会提出一个新问题。感谢您的帮助。
  • @DrSokoban 检查我的答案。再简单不过了。
【解决方案2】:

您只需以这种方式使用 pandas DataFrame

import pandas as pd

dataset = SupervisedDataSet(6,3)

df = pd.read_csv('mycsvfile.csv')

dataset.setField('input', df.values[:,:6]) # this sets the features

y=[[x] for x in df.values[:,:6])] # Do this to avoid IndexError: tuple index out of range
                                  # as the target field should be a list of lists, 
                                  # even if its shape is 1

dataset.setField('target', y)     # this set the target[s] field[s]
del df,y

你可以走了。

【讨论】:

    猜你喜欢
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 2017-09-19
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    相关资源
    最近更新 更多