私はフィードフォワードネットワークで回帰問題を解決する必要があります。私はPyBrainを使用してそれを実行しようとしています。パイブレインの参考文献には回帰の例はないので、代わりに回帰の分類例を適用しようとしましたが、成功しませんでした(分類例はhttp://pybrain.org/docs/tutorial/fnn.htmlです)。以下は私のコードです:pybrainを使用したニューラルネットワークの回帰
この最初の関数は、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
次に、回帰を実行する関数です。私が使用しようとした私は解像度を印刷するとき
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
は、すべてのそれの値は0である:train_dataとtrain_valuesは列車の特徴ベクトルとその予想される出力、TEST_DATAとtest_valuesは、テスト特徴ベクトルとその期待出力されていますbuildNetworkはネットワークを構築するためのショートカットとして機能しますが、うまく機能しませんでした。私はまた、隠れたレイヤーで異なる種類のレイヤーと異なる数のノードを試しました。運がありません。
誰かが私が間違っていることを知っていますか?また、いくつかのパイブレーン回帰の例が本当に助けになるでしょう!私は見たときに何も見つけられませんでした。事前に
おかげ
ニューラルネットワークに興味がある場合は、機械学習サイトに参加することを検討してください。http://area51.stackexchange.com/proposals/41738/machine-learning – travisbartley
出力層を線形にしたい回帰---あなたはおそらくS字状/灰色の隠しユニット –
を厳密には必ずしも線形ではないが、出力が '0..1'のような範囲に限定された活性化ではないことを望むでしょう。また、線形の隠れ層の目的が(コードのように)どんなものであるのかよくわからないので、これは通常、次の層の重みに吸収されます。 –