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)集成。
  • 与超参数优化框架(如Spearminthyperopt)集成。

作者

艾萨克·克里格曼

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Kafka producer大量内存使用(泄漏?)   java NullPointerException。。。正在插入数据但无法检索数据[Mysql DB]   java spring+jpa+hibernate=没有可用于当前线程的实际事务的EntityManager无法可靠地处理“persist”调用   getelementbyid在没有ID的情况下如何在java中使用GetElementsById   java有没有一种使用WatchService强制轮询的方法?   java将值从jframe传递给另一个jframe并使用它   Java/Groovy中带重试的反应式事件处理   具有两个包装器元素的java Jackson XML ArrayList输出   java总是在范围内使用不同的随机元素   取消选择java下拉列表值   多线程如何在Java中为对象的不同成员拥有不同的同步块   java如何使用多线程从文本文件中读取输入   java Spring启动附加崩溃命令   java使用公共或单独的actionPerfomed方法有什么区别   java用Spring3.0中的SpEL替换JSP中的EL   java作为windows服务运行应用程序时无法访问共享文件夹   java xml 1.1规范中的“解析数据”是什么意思?   以编程方式设置JComboBox索引时java触发ItemListener   java Android WebView:只加载HTML,不加载JS或CSS(在某些设备中)   Java:计算do/while循环的数量