2

Pylearn2 は通常、ニューラル ネットワークの Python リソースとして提案されています。

単一の隠れ層ニューラル ネットワークを作成し、バックプロパゲーション アルゴリズムでトレーニングしたいと考えています。

これは基本的なことのはずですが、pylearn2 でそれを行う方法がわかりません。多層パーセプトロンに関するこのチュートリアルを見つけましたが、それでもまだ迷っています。( http://nbviewer.ipython.org/github/lisa-lab/pylearn2/blob/master/pylearn2/scripts/tutorials/multilayer_perceptron/multilayer_perceptron.ipynb )

n = 200
p = 20
X = np.random.normal(0, 1, (n, p))
y = X[:,0]* X[:, 1] + np.random.normal(0, .1, n)

40 個の隠しノードとシグモイド活性化関数を備えた単層ニューラル ネットワークを作成したいと考えています。

誰かが私を助けることができますか?

編集:

私はこのコードを書くことができましたが、まだ機能していません

ds = DenseDesignMatrix(X=X, y=y)

hidden_layer = mlp.Sigmoid(layer_name='hidden', dim=10, irange=.1, init_bias=1.)
output_layer = mlp.Linear(1, 'output', irange=.1)
trainer = sgd.SGD(learning_rate=.05, batch_size=10, 
                  termination_criterion=EpochCounter(200))

layers = [hidden_layer, output_layer]
ann = mlp.MLP(layers, nvis=1)
trainer.setup(ann, ds)

while True:
    trainer.train(dataset=ds)
    ann.monitor.report_epoch()
    ann.monitor()
    if not trainer.continue_learning(ann):
        break
4

2 に答える 2

3

これは私の現在の解決策です:

n = 200
p = 2
X = np.random.normal(0, 1, (n, p))
y = X[:,0]* X[:, 1] + np.random.normal(0, .1, n)
y.shape = (n, 1)

ds = DenseDesignMatrix(X=X, y=y)


hidden_layer = mlp.Sigmoid(layer_name='hidden', dim=10, irange=.1, init_bias=1.)
output_layer = mlp.Linear(dim=1, layer_name='y', irange=.1)
trainer = sgd.SGD(learning_rate=.05, batch_size=10, 
                  termination_criterion=EpochCounter(200))
layers = [hidden_layer, output_layer]
ann = mlp.MLP(layers, nvis=2)
trainer.setup(ann, ds)

while True:
    trainer.train(dataset=ds)
    ann.monitor.report_epoch()
    ann.monitor()
    if not trainer.continue_learning(ann):
        break

inputs = X 
y_est = ann.fprop(theano.shared(inputs, name='inputs')).eval()
于 2015-04-03T11:46:00.770 に答える
0

pylearn2 は、オブジェクトをインスタンス化して通常どおりに使用するか、構成 Yaml ファイルを使用してネットワークのトポロジとパラメーターを定義し、pylearn2 に残りを処理させることによって使用できます。物事がどのように機能するかを理解する良い方法はpylearn2/scripts/train.py、実行される操作を調べることです。また、pylearn2/train.py(名前の残念な選択だと思います) には、トレーニングに関するすべての情報を含む「train オブジェクト」があります。基本的に、構成ファイルを使用すると、yaml パーサーは構成ファイルからの情報を使用してトレーニング オブジェクトを構築し、トレーニングを開始します。たくさんの例があり、pylearn2/scripts/papers必要に応じて見ることができます。

また、pylearn2 がどのように機能するかをよりよく理解するために、この記事を読むことをお勧めします: Pylearn2 のモデル

最後に、Pylearn2 と同じラボで開発されているニューラル ネットワークの新しいフレームワークであるBlocksも確認してください。これは非常に活発に開発されており、pylearn2 よりも機能が少ないですが、特に Theano について少し知っている場合は、より気に入るかもしれません。

于 2015-04-02T16:40:16.417 に答える