python中的深层神经网络库
pydnn的Python项目详细描述
pydnn是一个使用Theano(符号数学和优化编译器包)用python编写的深层神经网络库。我在2015年3月参加Kaggle’s National Data Science Bowl比赛时将其作为一个学习项目编写(在那里它在top 6%中完成了一个条目),并计划通过添加对最重要的深度学习技术(包括rnn)的支持来继续开发它。
设计目标
- 简单性
- 尽可能简化代码,使其成为底层深度学习算法的清晰表达。最小化认知开销,以便完成deeplearning.net tutorials的人很容易在下一步中获取此库,并轻松开始学习、使用和编码更高级的技术。
- 完整性
- 包括有效深入学习的所有重要且流行的技巧,以及not具有更多边际或模糊益处的技巧。
- 易用性
- 准备一个数据集,建立一个模型,并只训练几行代码,让用户能够使用numpy而不是theano。
- 易用性
- 性能
- 应该与其他的theano神经网络库大致相当,因此pydnn是计算密集型深度学习的可行选择。
功能
- 高性能GPU培训(由Theano提供)
- 快速入门工具,用于立即开始有关inexpensiveamazon ec2 gpu实例的培训。
- 文献中最近报道的重要新技术的实现:
- 标准深度学习技术的实施:
- 具有动量的随机梯度下降
- 辍学
- 使用重叠窗口的最大池卷积
- relu/tanh/sigmoid激活功能
- 等
用法
首先从某个地方下载并解压缩原始图像数据(例如kaggle)。然后:
import pydnn import numpy as np rng = np.random.RandomState(e.rng_seed) # build data, split into training/validation sets, preprocess train_dir = 'home\ubuntu\train' data = pydnn.data.DirectoryLabeledImageSet(train_dir).build() data = pydnn.preprocess.split_training_data(data, 64, 80, 15, 5) resizer = pydnn.preprocess.StretchResizer() pre = pydnn.preprocess.Rotator360(data, (64, 64), resizer, rng) # build the neural network net = pydnn.nn.NN(pre, 'images', 121, 64, rng, pydnn.nn.relu) net.add_convolution(72, (7, 7), (2, 2)) net.add_dropout() net.add_convolution(128, (5, 5), (2, 2)) net.add_dropout() net.add_convolution(128, (3, 3), (2, 2)) net.add_dropout() net.add_hidden(3072) net.add_dropout() net.add_hidden(3072) net.add_dropout() net.add_logistic() # train the network lr = pydnn.nn.Adam(learning_rate=pydnn.nn.LearningRateDecay( learning_rate=0.006, decay=.1)) net.train(lr)
从原始数据到训练网络(包括指定 网络架构)25行代码。
短期目标
- 实现流行的rnn技术。
- 与amazon ec2集群软件(如StarCluster)集成。
- 与超参数优化框架(如Spearmint和hyperopt)集成。