From a910a77b9e935429dc6362da8e2aebac22d32440 Mon Sep 17 00:00:00 2001 From: Andrea Bessi Date: Tue, 1 Nov 2016 15:24:24 +0100 Subject: [PATCH] Add files via upload --- matrix-multiplication.ipynb | 223 ++++++++++++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 matrix-multiplication.ipynb diff --git a/matrix-multiplication.ipynb b/matrix-multiplication.ipynb new file mode 100644 index 0000000..db163bd --- /dev/null +++ b/matrix-multiplication.ipynb @@ -0,0 +1,223 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Matrix Multiplication" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Abstract" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Computation in TensorFlow is represented as a graph. \n", + "\n", + "Nodes in the graph are called ops (short for operations). An op takes zero or more Tensors (typed multi-dimensional arrays), performs some computation, and produces zero or more Tensors.\n", + "\n", + "A TensorFlow graph is a description of computations. To compute anything, a graph must be launched in a Session. A Session places the graph ops onto Devices, such as CPUs or GPUs, and provides methods to execute them." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This tutorial is taken, with slight modification and different annotations, from [TensorFlow's official documentation](https://www.tensorflow.org/versions/r0.11/get_started/basic_usage.html).\n", + "\n", + "This tutorial is intended for readers who are new to both machine learning and TensorFlow. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Graph Construction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First of all, we import the TensorFlow library." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import tensorflow as tf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We then create a _constant_ op that produces a 1x2 matrix. The op is added as a node to the default graph.\n", + "\n", + "The value returned by the constructor represents the output of the Constant op." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "matrix1 = tf.constant([[3., 3.]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We create another _constant_ that produces a 2x1 matrix." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "matrix2 = tf.constant([[2.],[2.]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we create a _matmul_ op that takes _matrix1_ and _matrix2_ as inputs. The returned value, _product_, represents the result of the matrix multiplication." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "product = tf.matmul(matrix1, matrix2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Launching of the Session" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To compute anything, a graph must first be launched in a _Session_. Let's create our _Session_ by launching the default graph." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sess = tf.Session()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To run the matmul op we call the session _run()_ method, passing _product_ (which represents the output of the matmul op). This indicates to the call that we want to get the output of the matmul op back.\n", + "\n", + "All inputs needed by the op are run automatically by the session. They typically are run in parallel.\n", + "\n", + "The call _run(product)_ thus causes the execution of three ops in the graph: the two constants and matmul.\n", + "\n", + "The output of the op is returned in _result_ as a numpy _ndarray_ object." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 12.]]\n" + ] + } + ], + "source": [ + "result = sess.run(product)\n", + "print(result)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once we are done, let's close the Session." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sess.close()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +}