DeepLearning.scala是一个DSL创建的深度神经网络,Scala语言编写。利用DeepLearning.scala,普通程序员能够从简单的代码构建复杂的神经网络。你可以像往常一样编写代码,唯一的区别是基于DeepLearning.scala的代码是可区分的,这使得这样的代码可以通过不断修改参数来改善。
特性可区分的基础类型
像 Theano 和其他深度学习工具包一样,DeepLearning.scala允许从数学公式构建神经网络。它支持浮点数,双精度,GPU加速的N维数组,并计算公式中权重的导数。
可区分的ADT
DeepLearning.scala创建的神经网络支持 ADT 数据结构(例如 HList 和 Coproduct),并通过这些数据结构计算导数。
可区分控制流
由DeepLearning.scala创建的神经网络可能包含像常规语言中的if/else/match/case这样的控制流。结合ADT数据结构,您可以在神经网络中实现任意算法,并且仍然保留在算法中使用的一些变量可区分和可训练。
可组合性
DeepLearning.scala创建的神经网络是可组合的。您可以通过组合较小的网络来创建大型网络。如果两个较大的网络共享一些子网络,则用一个网络训练的共享子网络中的权重影响另一个网络。
静态类型系统
所有上述功能都是静态类型检查。
配置:
{ "sudo": false, "addons": { "apt": { "packages": [ "graphviz" ] } }, "language": "scala", "jdk": "oraclejdk8", "before_cache": [ "find $HOME/.sbt -name '*.lock' -delete", "find $HOME/.ivy2 -name 'ivydata-*.properties' -delete" ], "cache": { "directories": [ "$HOME/.ivy2/cache", "$HOME/.sbt/boot/" ] }, "script": [ "sbt +test" ], "before_deploy": null, "group": "stable", "dist": "precise", "os": "linux"}
评论