フィードフォワードネットワークで回帰問題を解決する必要があり、PyBrain を使用してそれを実行しようとしています。pybrain のリファレンスには回帰の例がないため、代わりに回帰の分類例を適応させようとしましたが、成功しませんでした (分類例はここにあります: http://pybrain.org/docs/tutorial/fnn.html)。以下は私のコードです:
この最初の関数は、numpy 配列形式のデータを pybrain SupervisedDataset に変換します。pybrain のリファレンスによると、問題が回帰である場合に使用するデータセットであるため、SupervisedDataset を使用します。パラメーターは、特徴ベクトル (データ) とその期待される出力 (値) を含む配列です。
def convertDataNeuralNetwork(data, values):
fulldata = SupervisedDataSet(data.shape[1], 1)
for d, v in zip(data, values):
fulldata.addSample(d, v)
return fulldata
次に、回帰を実行する関数です。train_data と train_values はトレーニング特徴ベクトルとその期待される出力、test_data と test_values はテスト特徴ベクトルとその期待される出力です。
regressionTrain = convertDataNeuralNetwork(train_data, train_values)
regressionTest = convertDataNeuralNetwork(test_data, test_values)
fnn = FeedForwardNetwork()
inLayer = LinearLayer(regressionTrain.indim)
hiddenLayer = LinearLayer(5)
outLayer = GaussianLayer(regressionTrain.outdim)
fnn.addInputModule(inLayer)
fnn.addModule(hiddenLayer)
fnn.addOutputModule(outLayer)
in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)
fnn.addConnection(in_to_hidden)
fnn.addConnection(hidden_to_out)
fnn.sortModules()
trainer = BackpropTrainer(fnn, dataset=regressionTrain, momentum=0.1, verbose=True, weightdecay=0.01)
for i in range(10):
trainer.trainEpochs(5)
res = trainer.testOnClassData(dataset=regressionTest )
print res
res を出力すると、すべての値が 0 になります。ネットワークを構築するためのショートカットとして buildNetwork 関数を使用しようとしましたが、うまくいきませんでした。また、隠れ層でさまざまな種類のレイヤーとさまざまな数のノードを試しましたが、うまくいきませんでした。
誰かが私が間違っていることを知っていますか? また、いくつかの pybrain 回帰の例が本当に役に立ちます! 私が見たときは何も見つかりませんでした。
前もって感謝します