Which deep learning package is the best? - Quora
I would recommendDeeplearning4j. Check it out:
Open-source, distributed deep learning for the JVM
Deeplearning4j is not the first open-source deep-learning project, but it is distinguished from its predecessors in both programming language and intent. DL4J is a Java-based, industry-focused, commercially supported, distributed deep-learning framework intended to solve problems involving massive amounts of data in a reasonable amount of time. It integrates with Hadoop and Spark using an arbitrary number of GPUs, and it has a number you can call if anything breaks.
------
I will give you some comparison here:
Pylearn2/Theano
Most academic researchers in deep learning rely onPylearn2andTheano, which are written in Python. Pylearn2 is a machine-learning library, while Theano is a library that handles multidimensional arrays, like Numpy. Both are powerful tools widely used for research purposes and serving a large community. They are well suited to data exploration and explicitly state that they are intended for research.
Pylearn2 is a normal (non-distributed) framework that includes everything necessary to conduct experiments with multilayer Perceptrons, RBMs, Stacked Denoising Autoencoders and Convolutional nets. We recommend it for precisely those use cases. In contrast, Deeplearning4j intends to be the equivalent of Scikit-learn in the deep-learning space. It aims to automate as many knobs as possible in a scalable fashion on parallel GPUs or CPUs, integrating as needed with Hadoop and Spark.
Torch
Torch7is a computational framework written in Lua that supports machine-learning algorithms. Some version of it is used by large tech companies such as Google and Facebook, which devote in-house teams to customizing their deep learning platforms. Lua is a multi-paradigm language developed in Brazil in the early 1990s.
Torch7, while powerful,was not designed to be widely accessibleto the Python-based academic community, nor to corporate software engineers, whose lingua franca is Java. Deeplearning4j was written in Java to reflect our focus on industry and ease of use. We believe usability is the limiting parameter that inhibits more widespread deep-learning implementations. We believe that a commercially supported open-source framework is the appropriate solution to ensure working tools and building a community.
Caffe
Caffeis a well-known and widely used machine-vision library that ported Matlab’s implementation of fast convolutional nets to C and C++. It is not intended for other deep-learning applications such as text, sound or time series data. Both Deeplearning4j and Caffe perform image classification with convolutional nets, which represent the state of the art. In contrast to Caffe, Deeplearning4j offers parallel GPUsupportfor an arbitrary number of chips, as well as many, seemingly trivial, features that make deep learning run more smoothly on multiple GPU clusters in parallel.
------
Here are some reasons why I recommend the Deeplearning4j:
Licensing
Lisensing another distinction among these open-source projects: Theano, Torch and Caffe employ a BSD License, which does not address patents or patent disputes. Deeplearning4j and ND4J are distributed under anApache 2.0 License, which contains both a patent grant and a litigation retaliation clause. That is, anyone is free to make and patent derivative works based on Apache 2.0-licensed code, but if they sue someone else over patent claims regarding the original code (DL4J in this case), they immediately lose all patent claim to it. (In other words, you are given resources to defend yourself in litigation, and discouraged from attacking others.) BSD doesn’t address the issue.
Speed
Deeplearning4j’s underlying linear algebra computations, performed with ND4J, have been shown to runat least twice as fastas Numpy on very large matrix multiplies. That’s one reasons why we’ve been adopted by teams at NASA’s Jet Propulsion Laboratory. Moreover, Deeplearning4j has been optimized to run on various chips including x86 and GPUs with CUDA C.
While both Torch7 and DL4J employ parallelism, DL4J’sparallelism is automatic. That is, we automate the setting up of worker nodes and connections, allowing users to bypass libs while creating a massively parallel network onSpark,Hadoop, or withAkka and AWS. Deeplearning4j is best suited for solving specific problems, and doing so quickly.
Deeplearning4j using Java
Many people often asked why Skymind chose to implement an open-source deep-learning project in Java, when so much of the deep-learning community is focused on Python. After all, Python has great syntactic elements that allow you to add matrices together without creating explicit classes, as Java requires you to do. Likewise, Python has an extensive scientific computing environment with native extensions like Theano and Numpy.
Yet Java has several advantages. First of all, as a language it is inherently faster than Python. Anything written in Python by itself, disregarding its reliance on Cython, will be slower. Admittedly, most computationally expensive operations are written in C or C++. (When we talk about operations, we also consider things like strings and other operations involved with higher-level machine learning processes.) Most deep-learning projects that are initially written in Python will have to be rewritten if they are to be put in production. Not so with Java.
Secondly, most major companies worldwide use Java or a Java-based system. It remains the most widely used language in the world. That is, many programmers solving real-world problems could benefit from deep learning, but they are separated from it by a language barrier. We want to make deep learning more usable to a large new audience that can put it to immediate use.
Thirdly, Java’s lack of robust scientific computing libraries can be solve by writing them, which we’ve done withND4J, which runs on distributed GPUs or GPUs, and can be interfaced via a Java or Scala API.
Finally, Java is a secure, network language that inherently works cross-platform on Linux servers, Windows and OSX desktops, Android phones and in the low-memory sensors of the Internet of Things via embedded Java. While Torch and Pylearn2 optimize via C++, which presents difficulties for those who try to optimize and maintain it, Java is a “write once, run anywhere” language suitable for companies who need to use deep learning on many platforms.
The Ecosystem
Java’s popularity is only strengthened by its ecosystem.Hadoopis implemented in Java;Sparkruns within Hadoop’s Yarn run-time; libraries likeAkkamade building distributed systems for Deeplearning4j feasible. In sum, Java boasts a highly tested infrastructure for pretty much any application, and deep-learning nets written in Java can live close to the data, which makes programmers’ lives easier. Deeplearning4j can be run and provisioned as a YARN app.
Java can also be used natively from other popular languages like Scala, Clojure, Python and Ruby. By choosing Java, we excluded the fewest major programming communities possible.
While Java is not as fast as C or C++, it is much faster than many believe, and we’ve built a distributed system that can accelerate with the addition of more nodes, whether they are GPUs or CPUs. That is, if you want speed, just throw more boxes at it.
Finally, we are building the basic applications of Numpy, including ND-Array, in Java for DL4J. We believe that many of Java’s shortcomings can be solved quickly, and many of its advantages will continue for some time.
Using Scala
Skymind team has paid special attention toScalain building Deeplearning4j and ND4J, because they believe Scala has the potential to become the dominant language in data science. Writing numerical computing, vectorization and deep-learning libraries for the JVM with aScala APImoves the community toward that goal.
------
I hope it helps
305 views•2 upvotes•Written 31 Jul
More Answers Below.
Related Questions
Deep Learning:If you could ask one question to Dr. Hinton about deep learning what would it be?
Deep Learning:What are the best practices, methods and algorithms to train a deep learning system?
Deep Learning:What are some of the best publicly available dissertations concerning deep learning?
Deep Learning:What are the strengths of Theano vs Torch?
Benjamin Ellenberger,is doing a Master Thesis in Deep Learning and Motor Control.
Your question is a bit general. I heard that the standard packages such as Theano, Torch, Caffe etc. are all very good. Usually it is more the question what programming/scripting language you want to use and what your want to use it for.
79 views•Written 29 Jul
I have seen recommendations of a recent deep learning package known ashycis/Moziand is really easy to use compared to caffe or torch. How's it compared to other packages like caffe and torch7?
70 views•Written 27 Jul
Andrew Nystrom,I'm a professional practitioner and lifelong student of machine learning.
Chainer looks pretty interesting:Chainer - A flexible framework of neural networks
Written in Python, very flexible and intuitive model structure formation, can use CUDA.
5 views•Written Wed
Write an answer
Related Questions
Deep Learning:What is meant by a distributed representation?
Deep Learning:Why does deep learning require minimal feature crafting?
Deep Learning:How big of an improvement is expected from using a single rbm layer to a second?
Deep Learning:Why can one avoid unsupervised pre-training using rectified linear units?
Deep Learning:What is hierarchical matching pursuit?
Deep Learning:How would you explain Dark Knowledge?
Deep Learning:What is meant by bias in energy equation? Why do we want to add that term?
Deep Learning:What are the difference and relevance between DNN and DBN?
Deep Learning:Why not use unsupervised training for the more traditional (shallow) neural networks?
Deep Learning:Which redditors should I follow if im interested in deep learning?