我在python中使用以下神经网络分类器
from sknn.mlp import Layer,Classifier
nn = mlp.Classifier(
layers=[
mlp.Layer("Tanh", units=n_feat/8),
mlp.Layer("Sigmoid", units=n_feat/16),
mlp.Layer("Softmax", units=n_targets)],
n_iter=50,
n_stable=10,
batch_size=25,
learning_rate=0.002,
learning_rule="momentum",
valid_size=0.1,
verbose=1)
工作得很好。我的问题是,如果我需要100,200或500个隐藏图层,如何继续?我是否必须手动指定每一层,或者有人在MLP中为MLP指定更好的想法?
答案 0 :(得分:1)
您可以创建一些基于循环的机制来构建我想要的层列表,但这里存在更大的问题。具有数百个层的标准MLP可能在训练方面非常昂贵 - 无论是在计算速度还是在内存使用方面。 MLP通常只有一个或两个隐藏层,或者偶尔会有一些隐藏层。但是对于能够真正受益于更多隐藏层的问题,将deep learning领域的一些经验教训纳入其中变得非常重要。例如,对于图像上的对象分类,使用所有完全连接的图层是非常低效的,因为您对识别空间局部图案感兴趣,因此空间距离像素或区域之间的相互作用主要是噪声。 (这是使用深度卷积神经网络的完美案例。)
尽管已经创建了一些非常深度网络,但值得指出的是,即使是谷歌非常强大的Inception-v3模型也只有42层深度。无论如何,如果您对建立深度模型感兴趣,我建议您阅读此Deep Learning book。从我所读到的内容来看,它似乎是一个非常好的介绍。希望有所帮助!