micrograd/main.ipynb

534 lines
32 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "bb9a1e74-8c5c-42bb-93fb-bfd3d6169dbd",
"metadata": {},
"outputs": [],
"source": [
"from micrograd.engine import Value\n",
"from micrograd.draw import draw_dot"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "afbfde7d-1592-476d-9ea1-399434752e8a",
"metadata": {},
"outputs": [],
"source": [
"x = Value(1.0)\n",
"y = Value(4.0)\n",
"z = Value(-1)\n",
"f = (y+z) + (x*y) + z"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "35bdfb93-8f89-4dd8-8c50-29774dd04984",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: %3 Pages: 1 -->\n",
"<svg width=\"1299pt\" height=\"155pt\"\n",
" viewBox=\"0.00 0.00 1299.00 155.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 151)\">\n",
"<title>%3</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-151 1295,-151 1295,4 -4,4\"/>\n",
"<!-- 140118324758560 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>140118324758560</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"711,-63.5 711,-99.5 938,-99.5 938,-63.5 711,-63.5\"/>\n",
"<text text-anchor=\"middle\" x=\"721.5\" y=\"-77.8\" font-family=\"Times,serif\" font-size=\"14.00\"> </text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"732,-63.5 732,-99.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"783\" y=\"-77.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 7.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"834,-63.5 834,-99.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"886\" y=\"-77.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324758464+ -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>140118324758464+</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"1001\" cy=\"-104.5\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1001\" y=\"-100.8\" font-family=\"Times,serif\" font-size=\"14.00\">+</text>\n",
"</g>\n",
"<!-- 140118324758560&#45;&gt;140118324758464+ -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>140118324758560&#45;&gt;140118324758464+</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M938.48,-96.39C947.58,-97.59 956.27,-98.74 964.1,-99.77\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"963.83,-103.26 974.21,-101.1 964.75,-96.32 963.83,-103.26\"/>\n",
"</g>\n",
"<!-- 140118324758560+ -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>140118324758560+</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"648\" cy=\"-81.5\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"648\" y=\"-77.8\" font-family=\"Times,serif\" font-size=\"14.00\">+</text>\n",
"</g>\n",
"<!-- 140118324758560+&#45;&gt;140118324758560 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>140118324758560+&#45;&gt;140118324758560</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M675.12,-81.5C682.67,-81.5 691.45,-81.5 700.9,-81.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"700.95,-85 710.95,-81.5 700.95,-78 700.95,-85\"/>\n",
"</g>\n",
"<!-- 140118324760816 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>140118324760816</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"2.5,-0.5 2.5,-36.5 229.5,-36.5 229.5,-0.5 2.5,-0.5\"/>\n",
"<text text-anchor=\"middle\" x=\"13\" y=\"-14.8\" font-family=\"Times,serif\" font-size=\"14.00\"> </text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"23.5,-0.5 23.5,-36.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"74.5\" y=\"-14.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 1.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"125.5,-0.5 125.5,-36.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"177.5\" y=\"-14.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324758800* -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>140118324758800*</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"295\" cy=\"-26.5\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"295\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">*</text>\n",
"</g>\n",
"<!-- 140118324760816&#45;&gt;140118324758800* -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>140118324760816&#45;&gt;140118324758800*</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M229.6,-23.59C239.57,-24.04 249.1,-24.47 257.63,-24.86\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"257.7,-28.36 267.85,-25.32 258.02,-21.37 257.7,-28.36\"/>\n",
"</g>\n",
"<!-- 140118745713392 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>140118745713392</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"2.5,-55.5 2.5,-91.5 229.5,-91.5 229.5,-55.5 2.5,-55.5\"/>\n",
"<text text-anchor=\"middle\" x=\"13\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\"> </text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"23.5,-55.5 23.5,-91.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"74.5\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 4.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"125.5,-55.5 125.5,-91.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"177.5\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118745713392&#45;&gt;140118324758800* -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>140118745713392&#45;&gt;140118324758800*</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M197.64,-55.45C209.21,-52.6 220.94,-49.58 232,-46.5 241.44,-43.87 251.6,-40.73 260.9,-37.73\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"262.17,-40.99 270.58,-34.55 259.99,-34.34 262.17,-40.99\"/>\n",
"</g>\n",
"<!-- 140118324758992+ -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>140118324758992+</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"295\" cy=\"-81.5\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"295\" y=\"-77.8\" font-family=\"Times,serif\" font-size=\"14.00\">+</text>\n",
"</g>\n",
"<!-- 140118745713392&#45;&gt;140118324758992+ -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>140118745713392&#45;&gt;140118324758992+</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M229.6,-78.59C239.57,-79.04 249.1,-79.47 257.63,-79.86\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"257.7,-83.36 267.85,-80.32 258.02,-76.37 257.7,-83.36\"/>\n",
"</g>\n",
"<!-- 140118324758800 -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>140118324758800</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"358,-8.5 358,-44.5 585,-44.5 585,-8.5 358,-8.5\"/>\n",
"<text text-anchor=\"middle\" x=\"368.5\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\"> </text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"379,-8.5 379,-44.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"430\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 4.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"481,-8.5 481,-44.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"533\" y=\"-22.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324758800&#45;&gt;140118324758560+ -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>140118324758800&#45;&gt;140118324758560+</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M551.97,-44.51C563.14,-47.56 574.42,-50.91 585,-54.5 595.34,-58.01 606.35,-62.53 616.18,-66.87\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"614.99,-70.17 625.54,-71.1 617.87,-63.79 614.99,-70.17\"/>\n",
"</g>\n",
"<!-- 140118324758800*&#45;&gt;140118324758800 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>140118324758800*&#45;&gt;140118324758800</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M322.12,-26.5C329.67,-26.5 338.45,-26.5 347.9,-26.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"347.95,-30 357.95,-26.5 347.95,-23 347.95,-30\"/>\n",
"</g>\n",
"<!-- 140118324758848 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>140118324758848</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"0,-110.5 0,-146.5 232,-146.5 232,-110.5 0,-110.5\"/>\n",
"<text text-anchor=\"middle\" x=\"10.5\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\"> </text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"21,-110.5 21,-146.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"74.5\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\">data &#45;1.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"128,-110.5 128,-146.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"180\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324758848&#45;&gt;140118324758464+ -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>140118324758848&#45;&gt;140118324758464+</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M232.03,-128.5C301.15,-128.5 390.87,-128.5 470.5,-128.5 470.5,-128.5 470.5,-128.5 649,-128.5 764.19,-128.5 900.15,-115.48 963.77,-108.62\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"964.5,-112.06 974.06,-107.49 963.74,-105.1 964.5,-112.06\"/>\n",
"</g>\n",
"<!-- 140118324758848&#45;&gt;140118324758992+ -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>140118324758848&#45;&gt;140118324758992+</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M197.64,-110.45C209.21,-107.6 220.94,-104.58 232,-101.5 241.44,-98.87 251.6,-95.73 260.9,-92.73\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"262.17,-95.99 270.58,-89.55 259.99,-89.34 262.17,-95.99\"/>\n",
"</g>\n",
"<!-- 140118324758464 -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>140118324758464</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"1064,-86.5 1064,-122.5 1291,-122.5 1291,-86.5 1064,-86.5\"/>\n",
"<text text-anchor=\"middle\" x=\"1074.5\" y=\"-100.8\" font-family=\"Times,serif\" font-size=\"14.00\"> </text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"1085,-86.5 1085,-122.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"1136\" y=\"-100.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 6.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"1187,-86.5 1187,-122.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"1239\" y=\"-100.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324758464+&#45;&gt;140118324758464 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>140118324758464+&#45;&gt;140118324758464</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1028.12,-104.5C1035.67,-104.5 1044.45,-104.5 1053.9,-104.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1053.95,-108 1063.95,-104.5 1053.95,-101 1053.95,-108\"/>\n",
"</g>\n",
"<!-- 140118324758992 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>140118324758992</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"358,-63.5 358,-99.5 585,-99.5 585,-63.5 358,-63.5\"/>\n",
"<text text-anchor=\"middle\" x=\"368.5\" y=\"-77.8\" font-family=\"Times,serif\" font-size=\"14.00\"> </text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"379,-63.5 379,-99.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"430\" y=\"-77.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 3.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"481,-63.5 481,-99.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"533\" y=\"-77.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324758992&#45;&gt;140118324758560+ -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>140118324758992&#45;&gt;140118324758560+</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M585.48,-81.5C594.49,-81.5 603.09,-81.5 610.87,-81.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"610.91,-85 620.91,-81.5 610.91,-78 610.91,-85\"/>\n",
"</g>\n",
"<!-- 140118324758992+&#45;&gt;140118324758992 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>140118324758992+&#45;&gt;140118324758992</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M322.12,-81.5C329.67,-81.5 338.45,-81.5 347.9,-81.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"347.95,-85 357.95,-81.5 347.95,-78 347.95,-85\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<graphviz.graphs.Digraph at 0x7f6fd6f6cf70>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"draw_dot(f)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "8491fa95-c89e-4283-95fe-d685d50f7e07",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: %3 Pages: 1 -->\n",
"<svg width=\"1717pt\" height=\"210pt\"\n",
" viewBox=\"0.00 0.00 1716.69 210.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 206)\">\n",
"<title>%3</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-206 1712.69,-206 1712.69,4 -4,4\"/>\n",
"<!-- 140118324770320 -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>140118324770320</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"1110,-109.5 1110,-145.5 1342,-145.5 1342,-109.5 1110,-109.5\"/>\n",
"<text text-anchor=\"middle\" x=\"1123\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\">n</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"1136,-109.5 1136,-145.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"1187\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 0.2000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"1238,-109.5 1238,-145.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"1290\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324770464tanh -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>140118324770464tanh</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"1409.85\" cy=\"-127.5\" rx=\"31.7\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1409.85\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\">tanh</text>\n",
"</g>\n",
"<!-- 140118324770320&#45;&gt;140118324770464tanh -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>140118324770320&#45;&gt;140118324770464tanh</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1342.17,-127.5C1351.08,-127.5 1359.66,-127.5 1367.53,-127.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1367.78,-131 1377.78,-127.5 1367.78,-124 1367.78,-131\"/>\n",
"</g>\n",
"<!-- 140118324770320+ -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>140118324770320+</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"1047\" cy=\"-127.5\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"1047\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\">+</text>\n",
"</g>\n",
"<!-- 140118324770320+&#45;&gt;140118324770320 -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>140118324770320+&#45;&gt;140118324770320</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1074.12,-127.5C1081.53,-127.5 1090.14,-127.5 1099.4,-127.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1099.69,-131 1109.69,-127.5 1099.69,-124 1099.69,-131\"/>\n",
"</g>\n",
"<!-- 140118313495584 -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>140118313495584</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"4.5,-55.5 4.5,-91.5 244.5,-91.5 244.5,-55.5 4.5,-55.5\"/>\n",
"<text text-anchor=\"middle\" x=\"21.5\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\">x2</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"38.5,-55.5 38.5,-91.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"89.5\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 0.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"140.5,-55.5 140.5,-91.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"192.5\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324770128* -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>140118324770128*</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"312\" cy=\"-73.5\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"312\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\">*</text>\n",
"</g>\n",
"<!-- 140118313495584&#45;&gt;140118324770128* -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>140118313495584&#45;&gt;140118324770128*</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M244.55,-73.5C255.31,-73.5 265.54,-73.5 274.62,-73.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"274.7,-77 284.7,-73.5 274.7,-70 274.7,-77\"/>\n",
"</g>\n",
"<!-- 140118324770464 -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>140118324770464</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"1477.69,-109.5 1477.69,-145.5 1708.69,-145.5 1708.69,-109.5 1477.69,-109.5\"/>\n",
"<text text-anchor=\"middle\" x=\"1490.19\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\">y</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"1502.69,-109.5 1502.69,-145.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"1553.69\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 0.1974</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"1604.69,-109.5 1604.69,-145.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"1656.69\" y=\"-123.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324770464tanh&#45;&gt;140118324770464 -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>140118324770464tanh&#45;&gt;140118324770464</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M1442.02,-127.5C1449.61,-127.5 1458.19,-127.5 1467.31,-127.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1467.4,-131 1477.4,-127.5 1467.4,-124 1467.4,-131\"/>\n",
"</g>\n",
"<!-- 140118324769984 -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>140118324769984</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"749.5,-137.5 749.5,-173.5 981.5,-173.5 981.5,-137.5 749.5,-137.5\"/>\n",
"<text text-anchor=\"middle\" x=\"762.5\" y=\"-151.8\" font-family=\"Times,serif\" font-size=\"14.00\">b</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"775.5,-137.5 775.5,-173.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"826.5\" y=\"-151.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 6.2000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"877.5,-137.5 877.5,-173.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"929.5\" y=\"-151.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324769984&#45;&gt;140118324770320+ -->\n",
"<g id=\"edge14\" class=\"edge\">\n",
"<title>140118324769984&#45;&gt;140118324770320+</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M981.7,-137.53C991.99,-135.92 1001.8,-134.4 1010.51,-133.04\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1011.21,-136.47 1020.55,-131.47 1010.13,-129.55 1011.21,-136.47\"/>\n",
"</g>\n",
"<!-- 140118324770032 -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>140118324770032</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"375,-110.5 375,-146.5 621,-146.5 621,-110.5 375,-110.5\"/>\n",
"<text text-anchor=\"middle\" x=\"392.5\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\">h1</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"410,-110.5 410,-146.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"463.5\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\">data &#45;6.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"517,-110.5 517,-146.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"569\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324770176+ -->\n",
"<g id=\"node15\" class=\"node\">\n",
"<title>140118324770176+</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"684\" cy=\"-100.5\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"684\" y=\"-96.8\" font-family=\"Times,serif\" font-size=\"14.00\">+</text>\n",
"</g>\n",
"<!-- 140118324770032&#45;&gt;140118324770176+ -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>140118324770032&#45;&gt;140118324770176+</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M617.35,-110.49C628.08,-108.86 638.29,-107.3 647.32,-105.93\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"647.98,-109.37 657.34,-104.4 646.93,-102.45 647.98,-109.37\"/>\n",
"</g>\n",
"<!-- 140118324770032* -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>140118324770032*</title>\n",
"<ellipse fill=\"none\" stroke=\"black\" cx=\"312\" cy=\"-128.5\" rx=\"27\" ry=\"18\"/>\n",
"<text text-anchor=\"middle\" x=\"312\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\">*</text>\n",
"</g>\n",
"<!-- 140118324770032*&#45;&gt;140118324770032 -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>140118324770032*&#45;&gt;140118324770032</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M339.36,-128.5C346.73,-128.5 355.28,-128.5 364.5,-128.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"364.75,-132 374.75,-128.5 364.75,-125 364.75,-132\"/>\n",
"</g>\n",
"<!-- 140118313493232 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>140118313493232</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"4.5,-165.5 4.5,-201.5 244.5,-201.5 244.5,-165.5 4.5,-165.5\"/>\n",
"<text text-anchor=\"middle\" x=\"21.5\" y=\"-179.8\" font-family=\"Times,serif\" font-size=\"14.00\">x1</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"38.5,-165.5 38.5,-201.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"89.5\" y=\"-179.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 2.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"140.5,-165.5 140.5,-201.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"192.5\" y=\"-179.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118313493232&#45;&gt;140118324770032* -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>140118313493232&#45;&gt;140118324770032*</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M218.13,-165.46C228.63,-162.77 239.1,-159.78 249,-156.5 259.71,-152.96 271.05,-148.16 281.07,-143.54\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"282.67,-146.66 290.2,-139.21 279.67,-140.33 282.67,-146.66\"/>\n",
"</g>\n",
"<!-- 140118313498944 -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>140118313498944</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"2.5,-0.5 2.5,-36.5 246.5,-36.5 246.5,-0.5 2.5,-0.5\"/>\n",
"<text text-anchor=\"middle\" x=\"21.5\" y=\"-14.8\" font-family=\"Times,serif\" font-size=\"14.00\">w2</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"40.5,-0.5 40.5,-36.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"91.5\" y=\"-14.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 1.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"142.5,-0.5 142.5,-36.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"194.5\" y=\"-14.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118313498944&#45;&gt;140118324770128* -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>140118313498944&#45;&gt;140118324770128*</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M214.42,-36.55C226.15,-39.54 237.93,-42.87 249,-46.5 259.46,-49.93 270.57,-54.47 280.46,-58.84\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"279.31,-62.17 289.87,-63.12 282.21,-55.79 279.31,-62.17\"/>\n",
"</g>\n",
"<!-- 140118324770128 -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>140118324770128</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"377.5,-55.5 377.5,-91.5 618.5,-91.5 618.5,-55.5 377.5,-55.5\"/>\n",
"<text text-anchor=\"middle\" x=\"395\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\">h2</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"412.5,-55.5 412.5,-91.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"463.5\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\">data 0.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"514.5,-55.5 514.5,-91.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"566.5\" y=\"-69.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324770128&#45;&gt;140118324770176+ -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>140118324770128&#45;&gt;140118324770176+</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M618.65,-91.06C628.89,-92.56 638.64,-93.99 647.3,-95.26\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"646.89,-98.74 657.29,-96.73 647.9,-91.81 646.89,-98.74\"/>\n",
"</g>\n",
"<!-- 140118324770128*&#45;&gt;140118324770128 -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>140118324770128*&#45;&gt;140118324770128</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M339.36,-73.5C347.5,-73.5 357.06,-73.5 367.38,-73.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"367.49,-77 377.49,-73.5 367.49,-70 367.49,-77\"/>\n",
"</g>\n",
"<!-- 140118313484640 -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>140118313484640</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"0,-110.5 0,-146.5 249,-146.5 249,-110.5 0,-110.5\"/>\n",
"<text text-anchor=\"middle\" x=\"19\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\">w1</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"38,-110.5 38,-146.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"91.5\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\">data &#45;3.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"145,-110.5 145,-146.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"197\" y=\"-124.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118313484640&#45;&gt;140118324770032* -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>140118313484640&#45;&gt;140118324770032*</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M249.23,-128.5C258.37,-128.5 267.05,-128.5 274.87,-128.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"274.95,-132 284.95,-128.5 274.95,-125 274.95,-132\"/>\n",
"</g>\n",
"<!-- 140118324770176 -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>140118324770176</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"747,-82.5 747,-118.5 984,-118.5 984,-82.5 747,-82.5\"/>\n",
"<text text-anchor=\"middle\" x=\"760\" y=\"-96.8\" font-family=\"Times,serif\" font-size=\"14.00\">h</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"773,-82.5 773,-118.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"826.5\" y=\"-96.8\" font-family=\"Times,serif\" font-size=\"14.00\">data &#45;6.0000</text>\n",
"<polyline fill=\"none\" stroke=\"black\" points=\"880,-82.5 880,-118.5 \"/>\n",
"<text text-anchor=\"middle\" x=\"932\" y=\"-96.8\" font-family=\"Times,serif\" font-size=\"14.00\">grad 0.0000</text>\n",
"</g>\n",
"<!-- 140118324770176&#45;&gt;140118324770320+ -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>140118324770176&#45;&gt;140118324770320+</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M984.23,-118.21C993.6,-119.62 1002.52,-120.96 1010.52,-122.16\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"1010.06,-125.63 1020.47,-123.66 1011.1,-118.71 1010.06,-125.63\"/>\n",
"</g>\n",
"<!-- 140118324770176+&#45;&gt;140118324770176 -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>140118324770176+&#45;&gt;140118324770176</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M711.1,-100.5C718.61,-100.5 727.33,-100.5 736.75,-100.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"736.78,-104 746.78,-100.5 736.78,-97 736.78,-104\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<graphviz.graphs.Digraph at 0x7f6fd6f97820>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# inputs\n",
"x1 = Value(2.0, label='x1')\n",
"x2 = Value(0.0, label='x2')\n",
"\n",
"# weights\n",
"w1 = Value(-3.0, label='w1')\n",
"w2 = Value(1.0, label='w2')\n",
"\n",
"# bias\n",
"b = Value(6.2, label='b')\n",
"\n",
"h1 = x1 * w1\n",
"h1.label = 'h1'\n",
"h2 = x2 * w2\n",
"h2.label = 'h2'\n",
"\n",
"h = h1 + h2\n",
"h.label = 'h'\n",
"\n",
"n = h + b\n",
"n.label = 'n'\n",
"y = n.tanh()\n",
"y.label = 'y'\n",
"\n",
"draw_dot(y)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "543bd866-2ce7-4b9a-8d8b-55a160a7c83b",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}