This article was posted by Adrian Rosebrock on Pyimagesearch. Adrian is an entrepreneur and Ph.D who has launched two successful image search engines, ID My Pill and Chic Engine.

Inside this blog post, **he details 9 of his favorite Python deep learning libraries. **This list is

*by no means*

*exhaustive*, it’s simply a list of libraries that he has used in his computer vision career and found particular useful at one time or another. The goal of this blog post is to introduce you to these libraries. He encourages you to read up on each them individually to determine which one will work best for you in your particular situation.

## My Top 9 Favorite Python Deep Learning Libraries:

Again, he wants to reiterate that this list *is by no means exhaustive*. Furthermore, since he is a computer vision researcher and actively work in the field, *many* of these libraries have a strong focus on Convolutional Neural Networks (CNNs).

He has organized this list of deep learning libraries into three parts.

The first part details popular libraries that you may already be familiar with. For each of these libraries, he provides a very general, high-level overview. He then details some of his likes and dislikes about each library, along with a few appropriate use cases.

The second part dives into * my personal favorite deep learning libraries* that he uses

*heavily*on a

*regular basis*(HINT: Keras, mxnet, and sklearn-theano).

Finally, he provides a “bonus” section for libraries that he has (1) not used in a long time, but still think you may find useful or (2) libraries that he hasn’t tried yet, but look interesting.

Let’s go ahead and dive in!

### For starters:

#### 1. Caffe

It’s pretty much impossible to mention “deep learning libraries” without bringing up Caffe. In fact, since you’re on this page right now reading up on deep learning libraries, he is willing to bet that you’ve *already* heard of Caffe.

So, what is Caffe exactly?

Caffe is a deep learning framework developed by the Berkeley Vision and Learning Center(BVLC). It’s modular. Extremely fast. *And it’s used by academics and industry in start-of-the-art applications.*

In fact, if you were to go through the most recent deep learning publications (that also provide source code), you’ll *more than likely* find Caffe models on their associated GitHub repositories.

While Caffe *itself* isn’t a Python library, it *does* provide bindings into the Python programming language. We typically use these bindings when actually *deploying* our network in the wild.

The reason he has included Caffe in this list is because it’s used *nearly everywhere*. You define your model architecture and solver methods in a plaintext, JSON-like file called .prototxt configuration files. The Caffe binaries take these .prototxt files and train your network. After Caffe is done training, you can take your network and classify new images via Caffe binaries, or better yet, through the Python or MATLAB APIs.

While he loves Caffe for its performance (it can process *60 million images per day* on a K40 GPU), he doesn’t like it as much as Keras or mxnet.

The main reason is that constructing an architecture inside the .prototxt files can become quite tedious and tiresome. And more to the point, **tuning hyperparameters with Caffe can not be (easily) done programmatically! **Because of these two reasons, he tends to lean towards libraries that allow me to implement the end-to-end network (including cross-validation and hyperparameter tuning) in a Python-based API.

#### 2. Theano

Let him start by saying that * Theano is beautiful.* Without Theano, we wouldn’t have

*anywhere near*the amount of deep learning libraries (specifically in Python) that we do today. In the same way that without NumPy, we couldn’t have SciPy, scikit-learn, and scikit-image, the same can be said about Theano and higher-level abstractions of deep learning.

At the very core, Theano is a Python library used to define, optimize, and evaluate *mathematical expressions* involving *multi-dimensional arrays*. Theano accomplishes this via tight integration with NumPy and transparent use of the GPU.

While you *can* build deep learning networks in Theano, he tends to think of Theano as the *building blocks* for neural networks, in the same way that NumPy serves as the building blocks for scientific computing. In fact, most of the libraries he mentions in this blog post wrap around Theano to make it more convenient and accessible.

Don’t get him wrong, he* loves Theano* — **He just doesn’t like writing code in Theano.**

While not a perfect comparison, building a Convolutional Neural Network in Theano is like writing a custom Support Vector Machine (SVM) in native Python with only a sprinkle of NumPy.

Can you do it?

Sure, absolutely.

Is it worth your time and effort?

Eh, maybe. It depends on how low-level you want to go/your application requires.

He would rather uses a library like Keras that *wraps* Theano into a more user-friendly API, in the same way that scikit-learn makes it easier to work with machine learning algorithms.

#### 3. TensorFlow

Similar to Theano, TensorFlow is an open source library for numerical computation using data flow graphs (which is all that a Neural Network really is). Originally developed by the researchers on the Google Brain Team within Google’s Machine Intelligence research organization, the library has since been open sourced and made available to the general public.

A primary benefit of TensorFlow (as compared to Theano) is *distributed computing*, particularly among *multiple-GPUs* (although this is something Theano is working on).

Other than swapping out the Keras backend to use TensorFlow (rather than Theano), he doesn’t have much experience with the TensorFlow library. Over the next few months, he expects this to change, however.

#### 4. Lasagne

Lasagne is a *lightweight* library used to construct and train networks in Theano. The key term here is *lightweight* — it is not meant to be a heavy wrapper around Theano like Keras is. While this leads to your code being more verbose, it *does* free you from any restraints, while still giving you modular building blocks based on Theano.

Simply put: Lasagne functions as a happy medium between the low-level programming of Theano and the higher-level abstractions of Keras.

*To read the original article and see the 5 other python deep learning libraries and the bonus section, click here.*

**DSC Resources**

- Career: Training | Books | Cheat Sheet | Apprenticeship | Certification | Salary Surveys | Jobs
- Knowledge: Research | Competitions | Webinars | Our Book | Members Only | Search DSC
- Buzz: Business News | Announcements | Events | RSS Feeds
- Misc: Top Links | Code Snippets | External Resources | Best Blogs | Subscribe | For Bloggers

**Additional Reading**

- What statisticians think about data scientists
- Data Science Compared to 16 Analytic Disciplines
- 10 types of data scientists
- 91 job interview questions for data scientists
- 50 Questions to Test True Data Science Knowledge
- 24 Uses of Statistical Modeling
- 21 data science systems used by Amazon to operate its business
- Top 20 Big Data Experts to Follow (Includes Scoring Algorithm)
- 5 Data Science Leaders Share their Predictions for 2016 and Beyond
- 50 Articles about Hadoop and Related Topics
- 10 Modern Statistical Concepts Discovered by Data Scientists
- Top data science keywords on DSC
- 4 easy steps to becoming a data scientist
- 22 tips for better data science
- How to detect spurious correlations, and how to find the real ones
- 17 short tutorials all data scientists should read (and practice)
- High versus low-level data science

Follow us on Twitter: @DataScienceCtrl | @AnalyticBridge