{ "metadata": { "name": "", "signature": "sha256:ca3af9bc01cdfee36202602fad143f12b52995ce6c2747f6da91fd547b60c8bb" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Precise multiplications with the NEF\n", "\n", "*Jan Gosmann*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Abstract\n", "\n", "This report discusses how to implement the multiplication of two numbers in the NEF with a high accuracy. The main improvement will be achieved by using diagonal encoders instead of randomly distributed encoders. In the selection of the evaluation points a trade-off is found as they cannot give a uniform distribution when projected to the encoders while being limited to the input domain. That leads to an alternative multiplication network architecture improving the accuracy further." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import nengo\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from matplotlib.ticker import MaxNLocator\n", "from scipy.stats import mannwhitneyu\n", "\n", "%matplotlib inline" ], "language": "python", "metadata": { "slideshow": { "slide_type": "-" } }, "outputs": [ { "javascript": [ "\n", " require([\"widgets/js/widget\", \"widgets/js/manager\"],\n", " function(widget, manager) {\n", " if (typeof widget.DOMWidgetView == 'undefined') {\n", " widget = IPython;\n", " }\n", " if (typeof manager.WidgetManager == 'undefined') {\n", " manager = IPython;\n", " }\n", "\n", " var NengoProgressBar = widget.DOMWidgetView.extend({\n", " render: function() {\n", " // $el is the DOM of the widget\n", " this.$el.css({width: '100%', marginBottom: '0.5em'});\n", " this.$el.html([\n", " '