18

Deep learning in practice: Mental map cheat sheet

 4 years ago
source link: https://towardsdatascience.com/deep-learning-in-practice-mental-map-cheat-sheet-6647b1767e5c?gi=194916619422
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Deep learning in practice: Mental map cheat sheet

What do you need to do deep learning?

Apr 22 ·8min read

Once you understand the theory behind deep learning, the trivial next step is to practice what you have learnt. In this article, I try to gather, in a mental map cheat sheet, all that refers to deep learning in practice. This is extremely useful for deep learning beginners that generally either do not have any idea about the tools or datasets to use or have a superficial knowledge of one or two of the market leaders because they bump into them in almost all the documentation related to deep learning. If you plan to undertake this domain, you should have a more general view.

eQJfQnJ.jpg!web

Photo by Tevarak Phanduang on Unsplash

The central subject of the mental map is “Deep Learning in practice” from which 5 main branches are emanated, namely the (1) programming languages, (2) frameworks and libraries, (3) IDEs, notebooks and source code editors, (4) datasets and (5) implementations. Each of them will be presented in what follows. Here is an excerpt of the different branches of the proposed mental map cheat sheet. A link to the download page is available in front of each of the tools and datasets. The most commonly used tools are featured in red.

vYfyQzE.png!web

Excerpt of the different branches of mental map cheat sheet

You can donwload the cheat sheet by clicking on the button below. As the mental map is very large, please think to download it on your device then zoom the item of interest in the PDF document .

Branch 1: Programming languages

Python is one of the most well-known languages and perhaps even the most popular. The below interest over time graph is good proof. It shows that Python is trending in comparison with its potential candidates, R, Julia and Scala, according to Google Trends worldwide for the last 12 months. You find the rest of the languages that are used for deep learning in the mental map, e.g. java, javascript, Go, …

VVzm22A.png!web

Branch 2: Frameworks and libraries

Some of the frameworks and libraries that I have mentioned in the mental map are only dedicated to deep learning, e.g. M xNet and DeepLearning.Scala . Others are not just deep learning. They are larger machine learning with a big deep learning focus in them, e.g. TensorFlow and PyTorch . Moreover, frameworks and libraries that I gathered are of various types: BigDL and PaddlePaddle are for distributed deep learning, PaddleFL for federated learning, PyTorch Mobile and TensorFlow Lite for deep learning on mobile and IoT devices, …

In the charts below, I present the recent activity of the most popular frameworks on GitHub in terms of commits, contributors, stars, forks and watches. Apart from stars category, TensorFlow has by far the most GitHub activity for the rest of the categories. Fastai shows a larger number of stars. In fact, it was the second most trending repositories on GitHub when I was writing this present article. You can find all that you need to understand the GitHub categories here .

Er67NbI.png!web

Branch 3: IDEs, notebooks and source code editors

I subdivide this branch into 3 main parts :

(1) IDEs: IDE, acronym of Integrated Development Environment, enables programmers to consolidate the different aspects of writing a computer program. It increases programmer productivity by combining common activities of writing software into a single application such as editing source code, compiling, building executables, and debugging. In the following table, I present some of the IDEs evoked in the mental map.

nqqyAne.png!web

(2) Source code editors: are lightened versions of IDEs since they offer fewer tools. They are programming language sensitive so that they highlight the syntax elements of your programs; and provide many features that aid in your program development such as auto-complete, compile, build and run.

memi2eA.png!web

(3) Notebooks: suitable for beginners since they combine the IDE features and an ergonomic, interactive and easy-to-use educational tool. They also combine live code, narrative text, equations, result visualization, images, and several other media. In the table below, I present 5 open source notebooks according to 6 features that I have chosen :

Supported kernels: a kernel is the computational engine/backend that executes the code contained in the notebook. What I mean by supported kernels is the range of languages that are supported by the notebook environment.

Type: this feature indicates either the notebook is a web-based or a desktop-based application. The very trivial definition of a web application is that it is stored at a remote server that requires a web browser as a client to run, and internet for data and resource transfer. A desktop application is designed to serve standalone machines that do not require the internet for its operation. A notebook that is desktop-based application can be used as web-based one if an appropriate package is installed (e.g. nteract).

Multi-language: is the capability to create multi-language support in a single notebook so that to allow interoperability between code executed in different languages. On the contrary, a single-language notebook allows you to create a notebook in one of its supported languages simultaneously.

Multi-user: means that multiple users are allowed to edit the notebook simultaneously without having their contributions collide, clobber and overwrite each other. Some notebooks can be shared with multiple users but they do not have the multi-user capability. Jupyter is a single-user application by nature. But, you can use JupyterHub for creating multi-user hub which manages and proxies multiple instances of the single user Jupyter notebook server.

Supported by cloud platforms: You can work on your personal computer. However, it becomes difficult to manage real-world problems that require very large data. Moving on to a higher computing scale is necessary to benefit from higher material resources such as GPUs. I picked this feature since it is important to know if a notebook environment is supported or not by the big cloud platforms, i.e. all that you need to create your notebook is pre-installed on the cloud.

Community: if you are starting the use of a particular notebook, you would want to connect with other developers and experts. They can speed up your progress and help you solve some encountered problems. Moreover, documentation should be largely available.

rA3iayy.png!web

Branch 4: Datasets

The key to getting better models in deep learning is the data. That is why I dedicate a branch for datasets in the proposed mental map. All the evoked datasets are open and are largely used for numerous deep learning projects. Some of them even have their specific classes and functions implemented within the market leaders frameworks; and are very used for competitions globally such as Kaggle , Codalab and DataDriven . Datasets that I choose to add to my mental map belong to different contexts, namely image processing (e.g. MNIST and ImageNet), Natural Language Processing (NLP) (e.g. Yelp and WordNet) and speech recognition (e.g. LibriSpeech and AudioSet)

BnYNvi6.png!web

Samples from open deep learning datasets

Facing the pandemic of COVID-19 caused by the new coronavirus, researchers around the world are trying to find other diagnosis alternatives to the time-consuming RT-PCR. Deep learning applied to chest radiography images, e.g. Chest X-Rays (CXR) and Computed Tomography (CT), of positive COVID-19 cases has been showing a lot of promise for the coronavirus diagnosis. In this context, I have noticed a lot of people, particularly those that are deep learning practitioners but not medical imaging knowers, asking about available COVID-19 CXR and CT images. Hence, I enumerate open datasets currently used in this context as well as their GitHub links. I also mention existing CXR and CT images datasets, e.g. RSNA and ChestX-ray14, that have been already explored for the detection and classification of lungs diseases. This will help you to merge them with the new COVID-19 datasets in order to (1) differentiate it from other types of pneumonia, (2) decide who should be prioritized for PCR testing for COVID-19 cases and (3) select treatment since COVID-19, and non-COVID-19 infections require different treatment plans.

auqmEf2.png!web

Chest X-ray images from open deep learning COVID-19 and non-COVID-19 datasets

Here, I have to mention that I do not indicate the number of images in the COVID-19 databases since they are substantially varying. They are being expanded by the scientific community and medical societies. These latter are working continuously to grow these bases as new data becomes available. Moreover, COVID-19 datasets are still incipient, limited and not mature. You can have recourse to some techniques, such as transfer learning and data augmentation, to improve the training process. You can look for others datasets, challenges, projects and papers, that are largely preprints, in the websites of AI Against COVID-19 Canada task force and World Health Organization (WHO) . Hope it will all go away!

Branch 5: Implementations

Deep learning is arising in multiple and several fields, including but not limited to computer vision, online recommendation engine, voice assistants, medical diagnosis, chatbots, predictive marketing analytics, physical robotics and autonomous cars. The implementations that I mention in the mental map are illustrative, not exhaustive. These are but to mention only a few. I picked for you the links below that present 3 real-world implementations of deep learning related to medical imaging processing, NLP and speech recognition:

Pie & AI: Real-world AI Applications in Medicine

Use case for Natural Language Processing and Machine Learning

Automatic speech recognition for real-world applications

Well! This was it!

Please note that I do not claim to enumerate all of the tools, datasets and use cases related to deep learning. I rather tried to gather in a single mental map a large part of these latter. It remains open to discussion. I welcome and value any questions and comments you might have in this context. Furthermore, the aim of this article is not to judge which of the tools is better than the others. I do not know if you have noticed that no personal opinion is formulated. It was just an objective enumeration of the main deep learning tools along with their characteristics.

In case you have missed my previous articles :


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK