簡體   English   中英

用pylearn2創建一個單層神經網絡

[英]create a single layer neural network with pylearn2

通常建議將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個隱藏節點和S型激活函數的單層神經網絡。

有人能幫我嗎?

編輯:

我已經可以編寫此代碼,但仍無法正常工作

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

這是我目前的解決方案:

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()

可以通過實例化對象並像平常一樣使用它們來使用pylearn2,或者通過配置Yaml文件定義網絡的拓撲和參數並讓pylearn2負責其余工作,來使用pylearn2。 了解事情如何工作的一個好方法是查看pylearn2/scripts/train.py來查看執行的操作。 另外,在pylearn2/train.py (我想很不幸地選擇名稱)中,您會找到“ train object”,其中包含有關訓練的所有信息。 基本上,當您使用配置文件時,yaml解析器將使用來自配置文件的信息來構建訓練對象,然后開始訓練。 pylearn2/scripts/papers中有很多示例,您可以根據需要查看。

我還建議您閱讀這篇文章,以更好地理解pylearn2的工作原理: Pylearn2中的模型

最后,您可能還想查看Blocks ,它是由pylearn2所在的同一實驗室開發的神經網絡新框架。 它的開發非常活躍,功能不如pylearn2,但是您可能會更喜歡它,特別是如果您了解Theano的話。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM