Python 使用PYLERN2创建单层神经网络

Python 使用PYLERN2创建单层神经网络,python,machine-learning,neural-network,pylearn,Python,Machine Learning,Neural Network,Pylearn,PYLERN2通常被建议作为神经网络的python资源 我想创建一个单隐层神经网络,并用反向传播算法对其进行训练 这应该是一些基本的东西,但我不明白如何使用pylearn2。我找到了关于多层感知器的教程,但尽管如此,我还是迷路了。() 我想创建一个具有40个隐藏节点和sigmoid激活函数的单层神经网络 有人能帮我吗 编辑: 我已经能够编写这段代码,但它仍然不起作用 ds = DenseDesignMatrix(X=X, y=y) hidden_layer = mlp.Sigmoid(laye

PYLERN2通常被建议作为神经网络的python资源

我想创建一个单隐层神经网络,并用反向传播算法对其进行训练

这应该是一些基本的东西,但我不明白如何使用pylearn2。我找到了关于多层感知器的教程,但尽管如此,我还是迷路了。()

我想创建一个具有40个隐藏节点和sigmoid激活函数的单层神经网络

有人能帮我吗

编辑:

我已经能够编写这段代码,但它仍然不起作用

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

可以通过实例化对象并像通常一样使用它们,或者通过配置Yaml文件定义网络拓扑和参数,并让pylearn2处理其余部分,来使用pylearn2。了解事物如何工作的一个好方法是查看执行的操作。另外,在
pylern2/train.py
(我猜名称的选择很不幸)中,您会发现“train对象”包含了关于培训的所有信息。基本上,当您使用配置文件时,yaml解析器将使用配置文件中的信息构建一个train对象,然后开始训练。
2/scripts/papers
中有很多例子,如果您愿意,可以看一下

我还建议您阅读本文,以便更好地理解pylearn2的工作原理:


最后,你可能还想看看,一个新的神经网络框架正在开发的同一个实验室作为PYLERN2。它正处于非常积极的开发中,功能比Pyrearn2少,但您可能会更喜欢它,尤其是如果您对Theano有所了解。

这是我目前的解决方案:

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

谢谢你的回答。我从一个在线示例中获取了代码。在这个例子中,他们用4行代码做了一个神经网络。我假设对于回归问题也是如此。你知道我该怎么做,或者为什么我的代码是错误的吗?你能提供更多关于这个问题的信息吗?您是否遇到错误,或者它正在运行但未学习?另外,能否提供包含所有导入的完整脚本以及运行脚本所需的任何内容?我已经有一段时间没有使用pylearn2了,所以我不确定我能帮到你,但我会尽力的。
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()