{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "source": [ "from graphviz import Digraph\n", "\n", "def trace(root):\n", " #Builds a set of all nodes and edges in a graph\n", " nodes, edges = set(), set()\n", " def build(v):\n", " if v not in nodes:\n", " nodes.add(v)\n", " for child in v._prev:\n", " edges.add((child, v))\n", " build(child)\n", " build(root)\n", " return nodes, edges\n", "\n", "def draw_dot(root):\n", " dot = Digraph(format='svg', graph_attr={'rankdir': 'LR'}) #LR == Left to Right\n", "\n", " nodes, edges = trace(root)\n", " for n in nodes:\n", " uid = str(id(n))\n", " #For any value in the graph, create a rectangular ('record') node for it\n", " dot.node(name = uid, label = \"{ %s | data %.4f | grad %.4f }\" % ( n.label, n.data, n.grad), shape='record')\n", " if n._op:\n", " #If this value is a result of some operation, then create an op node for it\n", " dot.node(name = uid + n._op, label=n._op)\n", " #and connect this node to it\n", " dot.edge(uid + n._op, uid)\n", "\n", " for n1, n2 in edges:\n", " #Connect n1 to the node of n2\n", " dot.edge(str(id(n1)), str(id(n2)) + n2._op)\n", "\n", " return dot" ], "metadata": { "id": "T0rN8d146jvF" }, "execution_count": 1, "outputs": [] }, { "cell_type": "code", "source": [ "import math" ], "metadata": { "id": "JlYxBvFK0AjA" }, "execution_count": 2, "outputs": [] }, { "cell_type": "code", "source": [ "class Value:\n", "\n", " def __init__(self, data, _children=(), _op='', label=''):\n", " self.data = data\n", " self.grad = 0.0\n", " self._backward = lambda: None #Its an empty function by default. This is what will do that gradient calculation at each of the operations.\n", " self._prev = set(_children)\n", " self._op = _op\n", " self.label = label\n", "\n", "\n", " def __repr__(self):\n", " return f\"Value(data={self.data})\"\n", "\n", " def __add__(self, other):\n", " other = other if isinstance(other, Value) else Value(other)\n", " out = Value(self.data + other.data, (self, other), '+')\n", "\n", " def backward():\n", " self.grad += 1.0 * out.grad\n", " other.grad += 1.0 * out.grad\n", "\n", " out._backward = backward\n", " return out\n", "\n", " def __mul__(self, other):\n", " other = other if isinstance(other, Value) else Value(other)\n", " out = Value(self.data * other.data, (self, other), '*')\n", "\n", " def backward():\n", " self.grad += other.data * out.grad\n", " other.grad += self.data * out.grad\n", " out._backward = backward\n", " return out\n", "\n", " def __rmul__(self, other): #other * self\n", " return self * other\n", "\n", " def __truediv__(self, other): #self/other\n", " return self * other**-1\n", "\n", " def __neg__(self):\n", " return self * -1\n", "\n", " def __sub__(self, other): #self - other\n", " return self + (-other)\n", "\n", " def __pow__(self, other):\n", " assert isinstance(other, (int, float)), \"only supporting int/float powers for now\"\n", " out = Value(self.data ** other, (self, ), f\"**{other}\")\n", "\n", " def backward():\n", " self.grad += (other * (self.data ** (other - 1))) * out.grad\n", "\n", " out._backward = backward\n", " return out\n", "\n", " def tanh(self):\n", " x = self.data\n", " t = (math.exp(2*x) - 1)/(math.exp(2*x) + 1)\n", " out = Value(t, (self, ), 'tanh')\n", "\n", " def backward():\n", " self.grad += 1 - (t**2) * out.grad\n", "\n", " out._backward = backward\n", " return out\n", "\n", " def exp(self):\n", " x = self.data\n", " out = Value(math.exp(x), (self, ), 'exp') #We merged t and out, into just out\n", "\n", " def backward():\n", " self.grad += out.data * out.grad\n", "\n", " out._backward = backward\n", " return out\n", "\n", " def backward(self):\n", "\n", " topo = []\n", " visited = set()\n", " def build_topo(v):\n", " if v not in visited:\n", " visited.add(v)\n", " for child in v._prev:\n", " build_topo(child)\n", " topo.append(v)\n", "\n", " build_topo(self)\n", "\n", " self.grad = 1.0\n", " for node in reversed(topo):\n", " node._backward()" ], "metadata": { "id": "tA0zbyEwFbD5" }, "execution_count": 3, "outputs": [] }, { "cell_type": "markdown", "source": [ "---------------" ], "metadata": { "id": "m9hy05zbxhLP" } }, { "cell_type": "code", "source": [ "import random" ], "metadata": { "id": "gu3tnJu1Wti5" }, "execution_count": 5, "outputs": [] }, { "cell_type": "code", "source": [ "class Neuron:\n", "\tdef __init__(self, nin):\n", "\t\tself.w = [ Value(random.uniform(-1,1)) for _ in range(nin) ]\n", "\t\tself.b = Value(random.uniform(-1,1))\n", "\n", "\tdef __call__(self, x):\n", "\t\t# (w*x)+b\n", "\t\tact = sum( (wi*xi for wi,xi in zip(self.w, x)), self.b )\n", "\t\tout = act.tanh()\n", "\t\treturn out\n", "\n", "class Layer:\n", "\tdef __init__(self, nin, nout):\n", "\t\tself.neurons = [Neuron(nin) for _ in range(nout)]\n", "\n", "\tdef __call__(self, x):\n", "\t\touts = [n(x) for n in self.neurons]\n", "\t\treturn outs\n", "\n", "class MLP:\n", "\tdef __init__(self, nin, nouts):\n", "\t\tsz = [nin] + nouts\n", "\t\tself.layers = [ Layer(sz[i], sz[i+1]) for i in range(len(nouts)) ]\n", "\n", "\tdef __call__(self, x):\n", "\t\tfor layer in self.layers:\n", "\t\t\tx = layer(x)\n", "\t\treturn x" ], "metadata": { "id": "fjmlJl8RWp5K" }, "execution_count": 8, "outputs": [] }, { "cell_type": "code", "source": [ "x = [2.0, 3.0, -1.0]\n", "n = MLP(3, [4, 4, 1])\n", "n(x)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "VbhAb3CkWxoa", "outputId": "8fbf7da2-1643-444c-e9d8-0255c6bdf537" }, "execution_count": 9, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "[Value(data=0.6731685486278488)]" ] }, "metadata": {}, "execution_count": 9 } ] }, { "cell_type": "markdown", "source": [ "Now in the final output, we see it in the form of a list right. \\\n", "\\\n", "So just for making this look better, we are adding this one line in the return statement of the layer method where if it is just one value left i.e. if it is the last value, then just return that value directly instead of putting it inside a list." ], "metadata": { "id": "C3VxtKpWXCqU" } }, { "cell_type": "code", "source": [ "class Neuron:\n", "\tdef __init__(self, nin):\n", "\t\tself.w = [ Value(random.uniform(-1,1)) for _ in range(nin) ]\n", "\t\tself.b = Value(random.uniform(-1,1))\n", "\n", "\tdef __call__(self, x):\n", "\t\t# (w*x)+b\n", "\t\tact = sum( (wi*xi for wi,xi in zip(self.w, x)), self.b )\n", "\t\tout = act.tanh()\n", "\t\treturn out\n", "\n", "class Layer:\n", "\tdef __init__(self, nin, nout):\n", "\t\tself.neurons = [Neuron(nin) for _ in range(nout)]\n", "\n", "\tdef __call__(self, x):\n", "\t\touts = [n(x) for n in self.neurons]\n", "\t\treturn outs[0] if len(outs)==1 else outs #The New added line for making the output better\n", "\n", "class MLP:\n", "\tdef __init__(self, nin, nouts):\n", "\t\tsz = [nin] + nouts\n", "\t\tself.layers = [ Layer(sz[i], sz[i+1]) for i in range(len(nouts)) ]\n", "\n", "\tdef __call__(self, x):\n", "\t\tfor layer in self.layers:\n", "\t\t\tx = layer(x)\n", "\t\treturn x" ], "metadata": { "id": "aCXXYNg_W680" }, "execution_count": 10, "outputs": [] }, { "cell_type": "code", "source": [ "x = [2.0, 3.0, -1.0]\n", "n = MLP(3, [4, 4, 1])\n", "n(x)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "aG9pKV_RXsO8", "outputId": "196fd2b5-c838-4ba9-c4b8-e8ff3e773761" }, "execution_count": 11, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Value(data=-0.597277746687069)" ] }, "metadata": {}, "execution_count": 11 } ] }, { "cell_type": "markdown", "source": [ "Like that!\\\n", "\\\n", "Now finally, lets make the graph of this" ], "metadata": { "id": "ydnLxp7kXuuJ" } }, { "cell_type": "code", "source": [ "draw_dot(n(x))" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "6sPjflG3Xt8J", "outputId": "1bca9b07-e07b-41b4-8d3f-bfa6676cba42" }, "execution_count": 12, "outputs": [ { "output_type": "execute_result", "data": { "image/svg+xml": "\n\n\n\n\n\n%3\n\n\n\n139579772657696\n\n \n\ndata -0.6509\n\ngrad 0.0000\n\n\n\n139579772658080+\n\n+\n\n\n\n139579772657696->139579772658080+\n\n\n\n\n\n139579772657696+\n\n+\n\n\n\n139579772657696+->139579772657696\n\n\n\n\n\n139579774107760\n\n \n\ndata -0.2456\n\ngrad 0.0000\n\n\n\n139579772660384*\n\n*\n\n\n\n139579774107760->139579772660384*\n\n\n\n\n\n139579773608064\n\n \n\ndata 0.2590\n\ngrad 0.0000\n\n\n\n139579773609072*\n\n*\n\n\n\n139579773608064->139579773609072*\n\n\n\n\n\n139579773608112\n\n \n\ndata -0.9998\n\ngrad 0.0000\n\n\n\n139579772654624*\n\n*\n\n\n\n139579773608112->139579772654624*\n\n\n\n\n\n139579772649680\n\n \n\ndata -2.3666\n\ngrad 0.0000\n\n\n\n139579772650112+\n\n+\n\n\n\n139579772649680->139579772650112+\n\n\n\n\n\n139579772649680+\n\n+\n\n\n\n139579772649680+->139579772649680\n\n\n\n\n\n139579772657888\n\n \n\ndata 0.3301\n\ngrad 0.0000\n\n\n\n139579772657888->139579772658080+\n\n\n\n\n\n139579772657888*\n\n*\n\n\n\n139579772657888*->139579772657888\n\n\n\n\n\n139579773608256\n\n \n\ndata 0.9504\n\ngrad 0.0000\n\n\n\n139579772656928*\n\n*\n\n\n\n139579773608256->139579772656928*\n\n\n\n\n\n139579772649872\n\n \n\ndata -1.0000\n\ngrad 0.0000\n\n\n\n139579772649920*\n\n*\n\n\n\n139579772649872->139579772649920*\n\n\n\n\n\n139579772658080\n\n \n\ndata -0.3209\n\ngrad 0.0000\n\n\n\n139579772658464+\n\n+\n\n\n\n139579772658080->139579772658464+\n\n\n\n\n\n139579772658080+->139579772658080\n\n\n\n\n\n139579773526432\n\n \n\ndata -1.1474\n\ngrad 0.0000\n\n\n\n139579773529840+\n\n+\n\n\n\n139579773526432->139579773529840+\n\n\n\n\n\n139579773526432+\n\n+\n\n\n\n139579773526432+->139579773526432\n\n\n\n\n\n139579772649920\n\n \n\ndata 0.3201\n\ngrad 0.0000\n\n\n\n139579772649920->139579772650112+\n\n\n\n\n\n139579772649920*->139579772649920\n\n\n\n\n\n139579773608496\n\n \n\ndata 0.8157\n\ngrad 0.0000\n\n\n\n139579772655392+\n\n+\n\n\n\n139579773608496->139579772655392+\n\n\n\n\n\n139579772658272\n\n \n\ndata 0.2362\n\ngrad 0.0000\n\n\n\n139579772658272->139579772658464+\n\n\n\n\n\n139579772658272*\n\n*\n\n\n\n139579772658272*->139579772658272\n\n\n\n\n\n139579772650112\n\n \n\ndata -2.0466\n\ngrad 0.0000\n\n\n\n139579772650208tanh\n\ntanh\n\n\n\n139579772650112->139579772650208tanh\n\n\n\n\n\n139579772650112+->139579772650112\n\n\n\n\n\n139579772650208\n\n \n\ndata -0.9672\n\ngrad 0.0000\n\n\n\n139579772650208->139579772657888*\n\n\n\n\n\n139579772650208->139579773609072*\n\n\n\n\n\n139579772653856*\n\n*\n\n\n\n139579772650208->139579772653856*\n\n\n\n\n\n139579772655584*\n\n*\n\n\n\n139579772650208->139579772655584*\n\n\n\n\n\n139579772650208tanh->139579772650208\n\n\n\n\n\n139579773608688\n\n \n\ndata 0.7062\n\ngrad 0.0000\n\n\n\n139579772652464*\n\n*\n\n\n\n139579773608688->139579772652464*\n\n\n\n\n\n139579772658464\n\n \n\ndata -0.0846\n\ngrad 0.0000\n\n\n\n139579772658848+\n\n+\n\n\n\n139579772658464->139579772658848+\n\n\n\n\n\n139579772658464+->139579772658464\n\n\n\n\n\n139579773608736\n\n \n\ndata -0.6900\n\ngrad 0.0000\n\n\n\n139579773609600*\n\n*\n\n\n\n139579773608736->139579773609600*\n\n\n\n\n\n139579773526864\n\n \n\ndata -0.8456\n\ngrad 0.0000\n\n\n\n139579773529504+\n\n+\n\n\n\n139579773526864->139579773529504+\n\n\n\n\n\n139579773526864*\n\n*\n\n\n\n139579773526864*->139579773526864\n\n\n\n\n\n139579773608832\n\n \n\ndata 0.9827\n\ngrad 0.0000\n\n\n\n139579773523456+\n\n+\n\n\n\n139579773608832->139579773523456+\n\n\n\n\n\n139579773608880\n\n \n\ndata -0.0506\n\ngrad 0.0000\n\n\n\n139579772650976*\n\n*\n\n\n\n139579773608880->139579772650976*\n\n\n\n\n\n139579773608928\n\n \n\ndata 0.0409\n\ngrad 0.0000\n\n\n\n139579773533584*\n\n*\n\n\n\n139579773608928->139579773533584*\n\n\n\n\n\n139579772658656\n\n \n\ndata -0.2128\n\ngrad 0.0000\n\n\n\n139579772658656->139579772658848+\n\n\n\n\n\n139579772658656*\n\n*\n\n\n\n139579772658656*->139579772658656\n\n\n\n\n\n139579772650496\n\n \n\ndata 2.0000\n\ngrad 0.0000\n\n\n\n139579772650544*\n\n*\n\n\n\n139579772650496->139579772650544*\n\n\n\n\n\n139579772650544\n\n \n\ndata 1.7241\n\ngrad 0.0000\n\n\n\n139579772650736+\n\n+\n\n\n\n139579772650544->139579772650736+\n\n\n\n\n\n139579772650544*->139579772650544\n\n\n\n\n\n139579773527152\n\n \n\ndata -3.0621\n\ngrad 0.0000\n\n\n\n139579773527344tanh\n\ntanh\n\n\n\n139579773527152->139579773527344tanh\n\n\n\n\n\n139579773527152+\n\n+\n\n\n\n139579773527152+->139579773527152\n\n\n\n\n\n139579773609072\n\n \n\ndata -0.2505\n\ngrad 0.0000\n\n\n\n139579772656352+\n\n+\n\n\n\n139579773609072->139579772656352+\n\n\n\n\n\n139579773609072*->139579773609072\n\n\n\n\n\n139579772658848\n\n \n\ndata -0.2974\n\ngrad 0.0000\n\n\n\n139579772658944tanh\n\ntanh\n\n\n\n139579772658848->139579772658944tanh\n\n\n\n\n\n139579772658848+->139579772658848\n\n\n\n\n\n139579773609120\n\n \n\ndata -0.8479\n\ngrad 0.0000\n\n\n\n139579773609120->139579773526864*\n\n\n\n\n\n139579772650736\n\n \n\ndata 2.1921\n\ngrad 0.0000\n\n\n\n139579772651168+\n\n+\n\n\n\n139579772650736->139579772651168+\n\n\n\n\n\n139579772650736+->139579772650736\n\n\n\n\n\n139579772658944\n\n \n\ndata -0.2890\n\ngrad 0.0000\n\n\n\n139579772658944->139579772660384*\n\n\n\n\n\n139579772658944tanh->139579772658944\n\n\n\n\n\n139579773601056\n\n \n\ndata 0.1883\n\ngrad 0.0000\n\n\n\n139579772657504*\n\n*\n\n\n\n139579773601056->139579772657504*\n\n\n\n\n\n139579773527344\n\n \n\ndata -0.9956\n\ngrad 0.0000\n\n\n\n139579773527344->139579773609600*\n\n\n\n\n\n139579772653472*\n\n*\n\n\n\n139579773527344->139579772653472*\n\n\n\n\n\n139579772655200*\n\n*\n\n\n\n139579773527344->139579772655200*\n\n\n\n\n\n139579773527344->139579772657504*\n\n\n\n\n\n139579773527344tanh->139579773527344\n\n\n\n\n\n139579772650928\n\n \n\ndata 3.0000\n\ngrad 0.0000\n\n\n\n139579772650928->139579772650976*\n\n\n\n\n\n139579773609408\n\n \n\ndata 0.0155\n\ngrad 0.0000\n\n\n\n139579773611184+\n\n+\n\n\n\n139579773609408->139579773611184+\n\n\n\n\n\n139579772650976\n\n \n\ndata -0.1518\n\ngrad 0.0000\n\n\n\n139579772650976->139579772651168+\n\n\n\n\n\n139579772650976*->139579772650976\n\n\n\n\n\n139579772659232\n\n \n\ndata -0.4885\n\ngrad 0.0000\n\n\n\n139579772659424+\n\n+\n\n\n\n139579772659232->139579772659424+\n\n\n\n\n\n139579772659232*\n\n*\n\n\n\n139579772659232*->139579772659232\n\n\n\n\n\n139579773609600\n\n \n\ndata 0.6870\n\ngrad 0.0000\n\n\n\n139579773609600->139579773611184+\n\n\n\n\n\n139579773609600*->139579773609600\n\n\n\n\n\n139579772651168\n\n \n\ndata 2.0403\n\ngrad 0.0000\n\n\n\n139579772651600+\n\n+\n\n\n\n139579772651168->139579772651600+\n\n\n\n\n\n139579772651168+->139579772651168\n\n\n\n\n\n139579773609696\n\n \n\ndata -0.4417\n\ngrad 0.0000\n\n\n\n139579773522976*\n\n*\n\n\n\n139579773609696->139579773522976*\n\n\n\n\n\n139579772659424\n\n \n\ndata -0.5306\n\ngrad 0.0000\n\n\n\n139579772659808+\n\n+\n\n\n\n139579772659424->139579772659808+\n\n\n\n\n\n139579772659424+->139579772659424\n\n\n\n\n\n139579772651360\n\n \n\ndata -1.0000\n\ngrad 0.0000\n\n\n\n139579772651408*\n\n*\n\n\n\n139579772651360->139579772651408*\n\n\n\n\n\n139579774109536\n\n \n\ndata -0.0368\n\ngrad 0.0000\n\n\n\n139579772660000*\n\n*\n\n\n\n139579774109536->139579772660000*\n\n\n\n\n\n139579772651408\n\n \n\ndata 0.1361\n\ngrad 0.0000\n\n\n\n139579772651408->139579772651600+\n\n\n\n\n\n139579772651408*->139579772651408\n\n\n\n\n\n139579772659616\n\n \n\ndata -0.1947\n\ngrad 0.0000\n\n\n\n139579772659616->139579772659808+\n\n\n\n\n\n139579772659616*\n\n*\n\n\n\n139579772659616*->139579772659616\n\n\n\n\n\n139579772651600\n\n \n\ndata 2.1764\n\ngrad 0.0000\n\n\n\n139579772651696tanh\n\ntanh\n\n\n\n139579772651600->139579772651696tanh\n\n\n\n\n\n139579772651600+->139579772651600\n\n\n\n\n\n139579772659808\n\n \n\ndata -0.7253\n\ngrad 0.0000\n\n\n\n139579772660192+\n\n+\n\n\n\n139579772659808->139579772660192+\n\n\n\n\n\n139579772659808+->139579772659808\n\n\n\n\n\n139579772651696\n\n \n\ndata 0.9746\n\ngrad 0.0000\n\n\n\n139579772651696->139579772658272*\n\n\n\n\n\n139579772654240*\n\n*\n\n\n\n139579772651696->139579772654240*\n\n\n\n\n\n139579772655968*\n\n*\n\n\n\n139579772651696->139579772655968*\n\n\n\n\n\n139579772656544*\n\n*\n\n\n\n139579772651696->139579772656544*\n\n\n\n\n\n139579772651696tanh->139579772651696\n\n\n\n\n\n139579773610272\n\n \n\ndata -0.8220\n\ngrad 0.0000\n\n\n\n139579773529984*\n\n*\n\n\n\n139579773610272->139579773529984*\n\n\n\n\n\n139579772660000\n\n \n\ndata -0.0345\n\ngrad 0.0000\n\n\n\n139579772660000->139579772660192+\n\n\n\n\n\n139579772660000*->139579772660000\n\n\n\n\n\n139579773610368\n\n \n\ndata 0.8620\n\ngrad 0.0000\n\n\n\n139579773610368->139579772650544*\n\n\n\n\n\n139579773610416\n\n \n\ndata 0.3306\n\ngrad 0.0000\n\n\n\n139579773610416->139579772656544*\n\n\n\n\n\n139579772651984\n\n \n\ndata 2.0000\n\ngrad 0.0000\n\n\n\n139579772652032*\n\n*\n\n\n\n139579772651984->139579772652032*\n\n\n\n\n\n139579772660192\n\n \n\ndata -0.7599\n\ngrad 0.0000\n\n\n\n139579772660576+\n\n+\n\n\n\n139579772660192->139579772660576+\n\n\n\n\n\n139579772660192+->139579772660192\n\n\n\n\n\n139579772652032\n\n \n\ndata 1.6090\n\ngrad 0.0000\n\n\n\n139579772652224+\n\n+\n\n\n\n139579772652032->139579772652224+\n\n\n\n\n\n139579772652032*->139579772652032\n\n\n\n\n\n139579772660384\n\n \n\ndata 0.0710\n\ngrad 0.0000\n\n\n\n139579772660384->139579772660576+\n\n\n\n\n\n139579772660384*->139579772660384\n\n\n\n\n\n139579772652224\n\n \n\ndata 1.5157\n\ngrad 0.0000\n\n\n\n139579772652656+\n\n+\n\n\n\n139579772652224->139579772652656+\n\n\n\n\n\n139579772652224+->139579772652224\n\n\n\n\n\n139579773610800\n\n \n\ndata 0.8725\n\ngrad 0.0000\n\n\n\n139579773610800->139579772653856*\n\n\n\n\n\n139579772660576\n\n \n\ndata -0.6889\n\ngrad 0.0000\n\n\n\n139579772660672tanh\n\ntanh\n\n\n\n139579772660576->139579772660672tanh\n\n\n\n\n\n139579772660576+->139579772660576\n\n\n\n\n\n139579772652416\n\n \n\ndata 3.0000\n\ngrad 0.0000\n\n\n\n139579772652416->139579772652464*\n\n\n\n\n\n139579772652464\n\n \n\ndata 2.1187\n\ngrad 0.0000\n\n\n\n139579772652464->139579772652656+\n\n\n\n\n\n139579772652464*->139579772652464\n\n\n\n\n\n139579772660672\n\n \n\ndata -0.5973\n\ngrad 0.0000\n\n\n\n139579772660672tanh->139579772660672\n\n\n\n\n\n139579773610944\n\n \n\ndata 0.3231\n\ngrad 0.0000\n\n\n\n139579772652896*\n\n*\n\n\n\n139579773610944->139579772652896*\n\n\n\n\n\n139579772652656\n\n \n\ndata 3.6344\n\ngrad 0.0000\n\n\n\n139579772653088+\n\n+\n\n\n\n139579772652656->139579772653088+\n\n\n\n\n\n139579772652656+->139579772652656\n\n\n\n\n\n139579773611184\n\n \n\ndata 0.7025\n\ngrad 0.0000\n\n\n\n139579773611184->139579772656352+\n\n\n\n\n\n139579773611184+->139579773611184\n\n\n\n\n\n139579772652848\n\n \n\ndata -1.0000\n\ngrad 0.0000\n\n\n\n139579772652848->139579772652896*\n\n\n\n\n\n139579772652896\n\n \n\ndata -0.3231\n\ngrad 0.0000\n\n\n\n139579772652896->139579772653088+\n\n\n\n\n\n139579772652896*->139579772652896\n\n\n\n\n\n139579773611376\n\n \n\ndata -0.6239\n\ngrad 0.0000\n\n\n\n139579773611376->139579772654240*\n\n\n\n\n\n139579773529504\n\n \n\ndata -1.0316\n\ngrad 0.0000\n\n\n\n139579773607488tanh\n\ntanh\n\n\n\n139579773529504->139579773607488tanh\n\n\n\n\n\n139579773529504+->139579773529504\n\n\n\n\n\n139579773603360\n\n \n\ndata -0.3201\n\ngrad 0.0000\n\n\n\n139579773603360->139579772649920*\n\n\n\n\n\n139579772653088\n\n \n\ndata 3.3113\n\ngrad 0.0000\n\n\n\n139579772653184tanh\n\ntanh\n\n\n\n139579772653088->139579772653184tanh\n\n\n\n\n\n139579772653088+->139579772653088\n\n\n\n\n\n139579772653184\n\n \n\ndata 0.9973\n\ngrad 0.0000\n\n\n\n139579772653184->139579773526864*\n\n\n\n\n\n139579772653184->139579772658656*\n\n\n\n\n\n139579772653184->139579772654624*\n\n\n\n\n\n139579772653184->139579772656928*\n\n\n\n\n\n139579772653184tanh->139579772653184\n\n\n\n\n\n139579773603504\n\n \n\ndata 0.7875\n\ngrad 0.0000\n\n\n\n139579773603504->139579773526432+\n\n\n\n\n\n139579773611712\n\n \n\ndata -0.9674\n\ngrad 0.0000\n\n\n\n139579773530032*\n\n*\n\n\n\n139579773611712->139579773530032*\n\n\n\n\n\n139579773529792\n\n \n\ndata 2.0000\n\ngrad 0.0000\n\n\n\n139579773529792->139579773522976*\n\n\n\n\n\n139579773529840\n\n \n\ndata -3.0212\n\ngrad 0.0000\n\n\n\n139579773529840->139579773527152+\n\n\n\n\n\n139579773529840+->139579773529840\n\n\n\n\n\n139579773603600\n\n \n\ndata 0.8045\n\ngrad 0.0000\n\n\n\n139579773603600->139579772652032*\n\n\n\n\n\n139579773611808\n\n \n\ndata 0.4190\n\ngrad 0.0000\n\n\n\n139579773611808->139579772655200*\n\n\n\n\n\n139579773603648\n\n \n\ndata -0.9366\n\ngrad 0.0000\n\n\n\n139579773603648->139579772655968*\n\n\n\n\n\n139579773529936\n\n \n\ndata -1.0000\n\ngrad 0.0000\n\n\n\n139579773529936->139579773533584*\n\n\n\n\n\n139579773611856\n\n \n\ndata -0.1154\n\ngrad 0.0000\n\n\n\n139579772653664+\n\n+\n\n\n\n139579773611856->139579772653664+\n\n\n\n\n\n139579773529984\n\n \n\ndata -2.4660\n\ngrad 0.0000\n\n\n\n139579773529984->139579772649680+\n\n\n\n\n\n139579773529984*->139579773529984\n\n\n\n\n\n139579772653472\n\n \n\ndata -0.2110\n\ngrad 0.0000\n\n\n\n139579772653472->139579772653664+\n\n\n\n\n\n139579772653472*->139579772653472\n\n\n\n\n\n139579773530032\n\n \n\ndata -1.9348\n\ngrad 0.0000\n\n\n\n139579773530032->139579773526432+\n\n\n\n\n\n139579773530032*->139579773530032\n\n\n\n\n\n139579772653664\n\n \n\ndata -0.3264\n\ngrad 0.0000\n\n\n\n139579772654048+\n\n+\n\n\n\n139579772653664->139579772654048+\n\n\n\n\n\n139579772653664+->139579772653664\n\n\n\n\n\n139579772653856\n\n \n\ndata -0.8438\n\ngrad 0.0000\n\n\n\n139579772653856->139579772654048+\n\n\n\n\n\n139579772653856*->139579772653856\n\n\n\n\n\n139579773522304\n\n \n\ndata -1.8738\n\ngrad 0.0000\n\n\n\n139579773522304->139579773529840+\n\n\n\n\n\n139579773522304*\n\n*\n\n\n\n139579773522304*->139579773522304\n\n\n\n\n\n139579772654048\n\n \n\ndata -1.1703\n\ngrad 0.0000\n\n\n\n139579772654432+\n\n+\n\n\n\n139579772654048->139579772654432+\n\n\n\n\n\n139579772654048+->139579772654048\n\n\n\n\n\n139579773522448\n\n \n\ndata 3.0000\n\ngrad 0.0000\n\n\n\n139579773522448->139579773522304*\n\n\n\n\n\n139579774120528\n\n \n\ndata 0.4923\n\ngrad 0.0000\n\n\n\n139579774120528->139579772659232*\n\n\n\n\n\n139579772654240\n\n \n\ndata -0.6081\n\ngrad 0.0000\n\n\n\n139579772654240->139579772654432+\n\n\n\n\n\n139579772654240*->139579772654240\n\n\n\n\n\n139579772654432\n\n \n\ndata -1.7783\n\ngrad 0.0000\n\n\n\n139579772654816+\n\n+\n\n\n\n139579772654432->139579772654816+\n\n\n\n\n\n139579772654432+->139579772654432\n\n\n\n\n\n139579773522976\n\n \n\ndata -0.8833\n\ngrad 0.0000\n\n\n\n139579773522976->139579773523456+\n\n\n\n\n\n139579773522976*->139579773522976\n\n\n\n\n\n139579772654624\n\n \n\ndata -0.9971\n\ngrad 0.0000\n\n\n\n139579772654624->139579772654816+\n\n\n\n\n\n139579772654624*->139579772654624\n\n\n\n\n\n139579772654816\n\n \n\ndata -2.7754\n\ngrad 0.0000\n\n\n\n139579772654912tanh\n\ntanh\n\n\n\n139579772654816->139579772654912tanh\n\n\n\n\n\n139579772654816+->139579772654816\n\n\n\n\n\n139579772654912\n\n \n\ndata -0.9923\n\ngrad 0.0000\n\n\n\n139579772654912->139579772659232*\n\n\n\n\n\n139579772654912tanh->139579772654912\n\n\n\n\n\n139579773523456\n\n \n\ndata 0.0993\n\ngrad 0.0000\n\n\n\n139579773523456->139579772649680+\n\n\n\n\n\n139579773523456+->139579773523456\n\n\n\n\n\n139579772655200\n\n \n\ndata -0.4172\n\ngrad 0.0000\n\n\n\n139579772655200->139579772655392+\n\n\n\n\n\n139579772655200*->139579772655200\n\n\n\n\n\n139579772655392\n\n \n\ndata 0.3986\n\ngrad 0.0000\n\n\n\n139579772655776+\n\n+\n\n\n\n139579772655392->139579772655776+\n\n\n\n\n\n139579772655392+->139579772655392\n\n\n\n\n\n139579774113712\n\n \n\ndata -0.4635\n\ngrad 0.0000\n\n\n\n139579774113712->139579772657696+\n\n\n\n\n\n139579772655584\n\n \n\ndata 0.3283\n\ngrad 0.0000\n\n\n\n139579772655584->139579772655776+\n\n\n\n\n\n139579772655584*->139579772655584\n\n\n\n\n\n139579772655776\n\n \n\ndata 0.7268\n\ngrad 0.0000\n\n\n\n139579772656160+\n\n+\n\n\n\n139579772655776->139579772656160+\n\n\n\n\n\n139579772655776+->139579772655776\n\n\n\n\n\n139579773606192\n\n \n\ndata -0.6246\n\ngrad 0.0000\n\n\n\n139579773606192->139579773522304*\n\n\n\n\n\n139579772655968\n\n \n\ndata -0.9128\n\ngrad 0.0000\n\n\n\n139579772655968->139579772656160+\n\n\n\n\n\n139579772655968*->139579772655968\n\n\n\n\n\n139579774122352\n\n \n\ndata -0.0421\n\ngrad 0.0000\n\n\n\n139579774122352->139579772659424+\n\n\n\n\n\n139579772656160\n\n \n\ndata -0.1860\n\ngrad 0.0000\n\n\n\n139579772656160->139579773529504+\n\n\n\n\n\n139579772656160+->139579772656160\n\n\n\n\n\n139579773524560\n\n \n\ndata 2.0000\n\ngrad 0.0000\n\n\n\n139579773524560->139579773530032*\n\n\n\n\n\n139579773606528\n\n \n\ndata -0.1361\n\ngrad 0.0000\n\n\n\n139579773606528->139579772651408*\n\n\n\n\n\n139579772656352\n\n \n\ndata 0.4520\n\ngrad 0.0000\n\n\n\n139579772656736+\n\n+\n\n\n\n139579772656352->139579772656736+\n\n\n\n\n\n139579772656352+->139579772656352\n\n\n\n\n\n139579772656544\n\n \n\ndata 0.3222\n\ngrad 0.0000\n\n\n\n139579772656544->139579772656736+\n\n\n\n\n\n139579772656544*->139579772656544\n\n\n\n\n\n139579774122928\n\n \n\ndata 0.2514\n\ngrad 0.0000\n\n\n\n139579774122928->139579772659616*\n\n\n\n\n\n139579773606864\n\n \n\ndata 0.2424\n\ngrad 0.0000\n\n\n\n139579773606864->139579772658272*\n\n\n\n\n\n139579773606912\n\n \n\ndata -0.0933\n\ngrad 0.0000\n\n\n\n139579773606912->139579772652224+\n\n\n\n\n\n139579772656736\n\n \n\ndata 0.7742\n\ngrad 0.0000\n\n\n\n139579772657120+\n\n+\n\n\n\n139579772656736->139579772657120+\n\n\n\n\n\n139579772656736+->139579772656736\n\n\n\n\n\n139579773607152\n\n \n\ndata -0.3413\n\ngrad 0.0000\n\n\n\n139579773607152->139579772657888*\n\n\n\n\n\n139579772656928\n\n \n\ndata 0.9478\n\ngrad 0.0000\n\n\n\n139579772656928->139579772657120+\n\n\n\n\n\n139579772656928*->139579772656928\n\n\n\n\n\n139579773533584\n\n \n\ndata -0.0409\n\ngrad 0.0000\n\n\n\n139579773533584->139579773527152+\n\n\n\n\n\n139579773533584*->139579773533584\n\n\n\n\n\n139579773607392\n\n \n\ndata 0.4680\n\ngrad 0.0000\n\n\n\n139579773607392->139579772650736+\n\n\n\n\n\n139579772657120\n\n \n\ndata 1.7221\n\ngrad 0.0000\n\n\n\n139579772657216tanh\n\ntanh\n\n\n\n139579772657120->139579772657216tanh\n\n\n\n\n\n139579772657120+->139579772657120\n\n\n\n\n\n139579773615648\n\n \n\ndata 0.2119\n\ngrad 0.0000\n\n\n\n139579773615648->139579772653472*\n\n\n\n\n\n139579772657216\n\n \n\ndata 0.9381\n\ngrad 0.0000\n\n\n\n139579772657216->139579772660000*\n\n\n\n\n\n139579772657216tanh->139579772657216\n\n\n\n\n\n139579773607488\n\n \n\ndata -0.7746\n\ngrad 0.0000\n\n\n\n139579773607488->139579772659616*\n\n\n\n\n\n139579773607488tanh->139579773607488\n\n\n\n\n\n139579773533824\n\n \n\ndata 3.0000\n\ngrad 0.0000\n\n\n\n139579773533824->139579773529984*\n\n\n\n\n\n139579774115584\n\n \n\ndata -0.2134\n\ngrad 0.0000\n\n\n\n139579774115584->139579772658656*\n\n\n\n\n\n139579772657504\n\n \n\ndata -0.1875\n\ngrad 0.0000\n\n\n\n139579772657504->139579772657696+\n\n\n\n\n\n139579772657504*->139579772657504\n\n\n\n\n\n139579773607776\n\n \n\ndata -0.3394\n\ngrad 0.0000\n\n\n\n139579773607776->139579772655584*\n\n\n\n\n\n", "text/plain": [ "" ] }, "metadata": {}, "execution_count": 12 } ] }, { "cell_type": "markdown", "source": [ "**THAT'S AN ENTIRE MLP THAT WE'VE DEFINED NOW!**" ], "metadata": { "id": "o2rQ1fX9YM40" } } ] }