Ten Popular Tools and Frameworks for Artificial Intelligence
This article highlights ten tools and frameworks that feature on the ‘hot list’ for artificial intelligence. A short description along with features and links is given for each tool or framework.
Let’s go on an exciting journey, discovering exactly why the following tools and frameworks are ranked so high.
1) TensorFlow: An open source software library for machine intelligence
TensorFlow is an open source software library that was originally developed by researchers and engineers working on the Google
Brain Team. TensorFlow is used for numerical computation with data flow graphs. Nodes in the graph represent mathematical operations, while the graph edges represent the multidimensional data arrays (tensors) communicating between them. The flexible architecture allows you to deploy computation to one or more CPUs or GPUs in a desktop, server or mobile device, with a single API.
TensorFlow provides multiple APIs. The lowest level API—TensorFlow Core—provides you with complete programming control. The higher-level APIs are built on top of TensorFlow Core and are typically easier to learn and use than TensorFlow Core. In addition, the higher-level APIs make repetitive tasks easier and more consistent between different users. A high-level API like tf.estimator helps you manage data sets, estimators, training and inference.
The central unit of data in TensorFlow is the tensor, which consists of a set of primitive values shaped into an array of any number of dimensions. A tensor’s rank is its number of dimensions.
A few Google applications using TensorFlow are listed below.
RankBrain: A large-scale deployment of deep neural nets for search ranking on www.google.com.
Inception image classification model: This is a baseline model, the result of ongoing research into highly accurate computer vision models, starting with the model that won the 2014 Imagenet image classification challenge.
SmartReply: A deep LSTM model to automatically generate email responses.
Massive multi-task networks for drug discovery: A deep neural network model for identifying promising drug candidates – built by Google in association with Stanford University.
On-device computer vision for
OCR: An on-device computer vision model for optical character recognition to enable real-time translation.
Tensorflow home: https://www. tensorflow.org
GitHub: https://github.com/tensorflow Getting started: https://www.tensorflow. org/get_started/get_started
2) Apache SystemML: An optimal workplace for machine learning using Big Data
SystemML is the machine learning technology created at IBM. It ranks among the top-level projects at the Apache Software Foundation. It’s a flexible, scalable machine learning system. Important characteristics
1. Algorithm customisability via
R-like and Python-like languages
2. Multiple execution modes, including Spark MLContext, Spark Batch, Hadoop Batch, Standalone and JMLC (Java Machine Learning Connector)
3. Automatic optimisation based on data and cluster characteristics to ensure both efficiency and scalability SystemML is considered as the SQL for machine learning. The latest version (1.0.0) of SystemML supports Java 8+, Scala 2.11+, Python 2.7/3.5+, Hadoop 2.6+ and Spark 2.1+.
It can be run on top of Apache Spark, where it automatically scales your data, line by line, determining whether your code should be run on the driver or an Apache Spark cluster. Future SystemML developments include additional deep learning with GPU capabilities, such as importing and running neural network architectures and pre-trained models for training.
Java Machine Learning Connector (JMLC) for SystemML
The Java Machine Learning Connector (JMLC) API is a programmatic interface for interacting with SystemML in an embedded fashion. The primary purpose of JMLC is that of a scoring API, whereby your scoring function is expressed using SystemML’s DML (Declarative Machine Learning) language. In addition to scoring, embedded SystemML can be used for tasks such as unsupervised learning (like clustering) in the context of a larger application running on a single machine.
SystemML home: https://systemml. apache.org/
3) Caffe: A deep learning framework made with expression, speed and modularity in mind
The Caffe project was initiated by Yangqing Jia during the course of his Ph.D at UC Berkeley, and later developed further by Berkeley AI Research (BAIR) and community contributors. It mostly focuses on convolutional networks for computer vision applications. Caffe is a solid, popular choice for computer visionrelated tasks, and you can download many successful models made by Caffe users from the Caffe Model Zoo (link below) for out-of-the-box use.
1) Expressive architecture encourages application and innovation. Models and optimisation are defined by configuration without hard coding. Users can switch between CPU and GPU by setting a single flag to train on a GPU machine, and then deploy to commodity clusters or mobile devices.
2) Extensible code fosters active development. In Caffe’s first year, it was forked by over
1,000 developers and had many significant changes contributed back.
3) Speed makes Caffe perfect for research experiments and industry deployment. Caffe can process over 60 million images per day with a single NVIDIA K40 GPU. 4) Community: Caffe already powers academic research projects, startup prototypes, and even large-scale industrial applications in vision, speech and multimedia. Useful links
Caffe home: http://caffe.berkeleyvision.org/GitHub:https://github.com/BVLC/caffe Caffe user group: https://groups.google.com/forum/#!forum/caffe-users
Tutorial presentation of the framework and a full-day crash course: https://docs.google.com/presentation/d/1UeKXVgRvvxg9OUdh_ UiC5G71UMscNPlvArsWER41PsU/edit#slide=id.p
Caffe Model Zoo: https://github.com/BVLC/caffe/wiki/ModelZoo
4) Apache Mahout: A distributed linear algebra framework and mathematically expressive Scala DSL
Mahout is designed to let mathematicians, statisticians and data scientists quickly implement their own algorithms. Apache Spark is the recommended out-of-the-box distributed back-end or can be extended to other distributed back-ends. Its features include the following: It is a mathematically expressive Scala DSL
Offers support for multiple distributed back-ends (including Apache Spark)
Has modular native solvers for CPU, GPU and CUDA acceleration Apache Mahout currently implements collaborative filtering (CF), clustering and categorisation.
Features and applications
Taste CF: Taste is an open source project for CF (collaborative filtering) started by Sean Owen on SourceForge and donated to Mahout in 2008
Several Map-Reduce enabled clustering implementations, including k-Means, fuzzy k-Means, Canopy, Dirichlet and Mean-Shift Distributed Naive Bayes and Complementary Naive Bayes
classification implementations Distributed fitness function capabilities for evolutionary programming
Matrix and vector libraries Examples of all the above algorithms
Mahout home: http://mahout. apache.org/
GitHub: https://github.com/apache/ mahout
An introduction to Mahout by Grant Ingersoll: https://www.ibm.com/ developerworks/library/j-mahout/
5) OpenNN: An open source class library written in C++ to implement neural networks
OpenNN (Open Neural Networks Library) was formerly known as Flood and is based on the
Ph.D thesis of R. Lopez, called ‘Neural Networks for Variational Problems in Engineering’, at the Technical University of Catalonia, 2008.
OpenNN implements data mining methods as a bundle of functions. These can be embedded in other software tools using an application programming interface (API) for the interaction between the software tool and the predictive analytics tasks.
The main advantage of OpenNN is its high performance. It is developed in C++ for better memory management and higher processing speed. It implements CPU parallelisation by means of OpenMP and GPU acceleration with CUDA.
The package comes with unit testing, many examples and extensive documentation. It provides an effective framework for the research and development of neural networks algorithms and applications. Neural Designer is a professional predictive analytics tool that uses OpenNN, which means that the neural engine of Neural Designer has been built using OpenNN.
OpenNN has been designed to learn from both data sets and mathematical models.
Function regression Pattern recognition Time series prediction Mathematical models Optimal control Optimal shape design
Data sets and mathematical models Inverse problems
OpenNN home: http://www.opennn.net/ OpenNN Artelnics GitHub: https:// github.com/Artelnics/OpenNN
Neural Designer: https://neuraldesigner. com/
6) Torch: An open source machine learning library, a scientific computing framework, and a script language based on the Lua programming language
Torch provides a wide range of algorithms for deep machine learning. It uses the scripting language LuaJIT, and an underlying C/CUDA implementation. The core package of Torch is torch. It provides a flexible N-dimensional array or tensor, which supports basic routines for indexing, slicing, transposing, type-casting, resizing, sharing storage and cloning. The nn package is used for building neural networks.
It is a powerful N-dimensional array Has lots of routines for indexing, slicing and transposing
Has an amazing interface to C, via LuaJIT
Linear algebra routines
Neural network and energy-based models
Numeric optimisation routines
Fast and efficient GPU support Embeddable, with ports to iOS and Android back-ends
Torch is used by the Facebook AI Research Group, IBM, Yandex and the Idiap Research Institute. It has been extended for use on Android and iOS. It has been used to build hardware implementations for data flows like those found in neural networks. Facebook has released a set of extension modules as open source software.
PyTorch is an open source machine learning library for Python, used for applications such as natural language processing. It is primarily developed by Facebook’s artificial intelligence research group, and Uber’s Pyro software for probabilistic programming has been built upon it.
Torch Home: http://torch.ch/ GitHub: https://github.com/torch
7) Neuroph: An object-oriented neural network framework written in Java
Neuroph can be used to create and train neural networks in Java programs. It provides a Java class library as well as a GUI tool called easyNeurons for creating and training neural networks. Neuroph is a lightweight Java neural network, as well as a framework to develop common neural network architectures. It contains a welldesigned, open source Java library with a small number of basic classes that correspond to basic NN concepts. It also has a nice GUI neural network editor to quickly create Java neural network components. It has been released as open source under the Apache 2.0 licence.
Neuroph’s core classes correspond