tensor-sensor
1632 строки · 117.5 Кб
1{
2"cells": [
3{
4"cell_type": "markdown",
5"id": "f3e2c8ee-c34d-4a47-8212-fc7871a74cc3",
6"metadata": {},
7"source": [
8"# Talk demo intro"
9]
10},
11{
12"cell_type": "code",
13"execution_count": 1,
14"id": "4d46818c-204e-426c-b22f-6c2e7a651ca1",
15"metadata": {},
16"outputs": [],
17"source": [
18"! pip install -q torch\n",
19"! pip install -q tensor-sensor"
20]
21},
22{
23"cell_type": "markdown",
24"id": "e672e0c2-b516-492c-9616-781db12f9397",
25"metadata": {},
26"source": [
27"## Simulated GRU matrix algebra with dimension issue"
28]
29},
30{
31"cell_type": "code",
32"execution_count": 1,
33"id": "43b79890-6f82-4261-b834-0b53f46d518d",
34"metadata": {},
35"outputs": [
36{
37"ename": "RuntimeError",
38"evalue": "mat1 and mat2 shapes cannot be multiplied (764x256 and 764x200)",
39"output_type": "error",
40"traceback": [
41"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
42"\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)",
43"\u001b[0;32m<ipython-input-1-df89bdeb6ec1>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0;31m# Following code raises an exception\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 15\u001b[0;31m \u001b[0mh\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtanh\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mWhh\u001b[0m \u001b[0;34m@\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mUxh\u001b[0m \u001b[0;34m@\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mbh\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
44"\u001b[0;31mRuntimeError\u001b[0m: mat1 and mat2 shapes cannot be multiplied (764x256 and 764x200)"
45]
46}
47],
48"source": [
49"import torch\n",
50"\n",
51"n = 200 # number of instances\n",
52"d = 764 # number of instance features\n",
53"nhidden = 256\n",
54"\n",
55"Whh = torch.eye(nhidden, nhidden) # Identity matrix\n",
56"Uxh = torch.randn(d, nhidden)\n",
57"bh = torch.zeros(nhidden, 1)\n",
58"h = torch.randn(nhidden, 1) # fake previous hidden state h\n",
59"r = torch.randn(nhidden, 1) # fake this computation\n",
60"X = torch.rand(n,d) # fake input\n",
61"\n",
62"# Following code raises an exception\n",
63"h = torch.tanh(Whh @ (r*h) + Uxh @ X.T + bh)"
64]
65},
66{
67"cell_type": "markdown",
68"id": "208a643d-2a07-40ce-9060-1ab5a80286fa",
69"metadata": {},
70"source": [
71"## TensorSensor traps, clarifies, and visualizes issues"
72]
73},
74{
75"cell_type": "code",
76"execution_count": 3,
77"id": "83dbfd70-c784-44c5-a023-8ffa1c7f18df",
78"metadata": {},
79"outputs": [
80{
81"data": {
82"image/svg+xml": [
83"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" height=\"45.995716pt\" version=\"1.1\" viewBox=\"0 0 294.852769 45.995716\" width=\"294.852769pt\">\n",
84" <metadata>\n",
85" <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n",
86" <cc:Work>\n",
87" <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n",
88" <dc:date>2021-09-29T16:50:29.562933</dc:date>\n",
89" <dc:format>image/svg+xml</dc:format>\n",
90" <dc:creator>\n",
91" <cc:Agent>\n",
92" <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>\n",
93" </cc:Agent>\n",
94" </dc:creator>\n",
95" </cc:Work>\n",
96" </rdf:RDF>\n",
97" </metadata>\n",
98" <defs>\n",
99" <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n",
100" </defs>\n",
101" <g id=\"figure_1\">\n",
102" <g id=\"patch_1\">\n",
103" <path d=\"M 0 45.995716 L 294.852769 45.995716 L 294.852769 0 L 0 0 z \" style=\"fill:none;\"/>\n",
104" </g>\n",
105" <g id=\"axes_1\">\n",
106" <g id=\"patch_2\">\n",
107" <path clip-path=\"url(#p2cf69eb1e8)\" d=\"M 194.67225 45.180316 L 217.52235 45.180316 L 217.52235 22.919896 L 194.67225 22.919896 z \" style=\"fill:#cfe2d4;stroke:#808080;stroke-linejoin:miter;stroke-width:0.7;\"/>\n",
108" </g>\n",
109" <g id=\"patch_3\">\n",
110" <path clip-path=\"url(#p2cf69eb1e8)\" d=\"M 233.84385 45.180316 L 256.69395 45.180316 L 256.69395 22.919896 L 233.84385 22.919896 z \" style=\"fill:#cfe2d4;stroke:#808080;stroke-linejoin:miter;stroke-width:0.7;\"/>\n",
111" </g>\n",
112" <g id=\"line2d_1\">\n",
113" <path clip-path=\"url(#p2cf69eb1e8)\" d=\"M 195.65154 13.192653 L 216.54306 13.192653 \" style=\"fill:none;stroke:#c2c2c2;stroke-linecap:square;stroke-width:0.5;\"/>\n",
114" </g>\n",
115" <g id=\"line2d_2\">\n",
116" <path clip-path=\"url(#p2cf69eb1e8)\" d=\"M 234.82314 13.192653 L 255.71466 13.192653 \" style=\"fill:none;stroke:#c2c2c2;stroke-linecap:square;stroke-width:0.5;\"/>\n",
117" </g>\n",
118" <g id=\"text_1\">\n",
119" <!-- h -->\n",
120" <g style=\"fill:#b4b4b4;\" transform=\"translate(6.975 9.451406)scale(0.13 -0.13)\">\n",
121" <defs>\n",
122" <path d=\"M 47.21875 0 L 38.71875 0 L 38.71875 31.296875 Q 38.71875 36.96875 36.59375 39.765625 Q 34.46875 42.578125 30.515625 42.578125 Q 28.8125 42.578125 27.3125 42.109375 Q 25.828125 41.65625 24.21875 40.5 Q 22.609375 39.359375 20.703125 37.40625 Q 18.796875 35.453125 16.3125 32.515625 L 16.3125 0 L 7.8125 0 L 7.8125 69 L 16.3125 69 L 16.3125 49.03125 L 16.015625 41.3125 Q 18.015625 43.703125 19.9375 45.328125 Q 21.875 46.96875 23.796875 48 Q 25.734375 49.03125 27.734375 49.46875 Q 29.734375 49.90625 31.890625 49.90625 Q 39.203125 49.90625 43.203125 45.4375 Q 47.21875 40.96875 47.21875 31.984375 z \" id=\"Consolas-104\"/>\n",
123" </defs>\n",
124" <use xlink:href=\"#Consolas-104\"/>\n",
125" </g>\n",
126" </g>\n",
127" <g id=\"text_2\">\n",
128" <!-- -->\n",
129" <g style=\"fill:#b4b4b4;\" transform=\"translate(13.5036 9.451406)scale(0.13 -0.13)\">\n",
130" <defs>\n",
131" <path id=\"Consolas-32\"/>\n",
132" </defs>\n",
133" <use xlink:href=\"#Consolas-32\"/>\n",
134" </g>\n",
135" </g>\n",
136" <g id=\"text_3\">\n",
137" <!-- = -->\n",
138" <g style=\"fill:#b4b4b4;\" transform=\"translate(20.0322 9.451406)scale(0.13 -0.13)\">\n",
139" <defs>\n",
140" <path d=\"M 48.484375 31.546875 L 6.5 31.546875 L 6.5 38.71875 L 48.484375 38.71875 z M 48.484375 14.546875 L 6.5 14.546875 L 6.5 21.734375 L 48.484375 21.734375 z \" id=\"Consolas-61\"/>\n",
141" </defs>\n",
142" <use xlink:href=\"#Consolas-61\"/>\n",
143" </g>\n",
144" </g>\n",
145" <g id=\"text_4\">\n",
146" <!-- -->\n",
147" <g style=\"fill:#b4b4b4;\" transform=\"translate(26.5608 9.451406)scale(0.13 -0.13)\">\n",
148" <use xlink:href=\"#Consolas-32\"/>\n",
149" </g>\n",
150" </g>\n",
151" <g id=\"text_5\">\n",
152" <!-- t -->\n",
153" <g style=\"fill:#b4b4b4;\" transform=\"translate(33.0894 9.451406)scale(0.13 -0.13)\">\n",
154" <defs>\n",
155" <path d=\"M 47.3125 0.6875 Q 44.4375 -0.046875 41.359375 -0.359375 Q 38.28125 -0.6875 35.109375 -0.6875 Q 25.875 -0.6875 21.328125 3.484375 Q 16.796875 7.671875 16.796875 16.3125 L 16.796875 41.890625 L 3.078125 41.890625 L 3.078125 49.03125 L 16.796875 49.03125 L 16.796875 62.5 L 25.296875 64.703125 L 25.296875 49.03125 L 47.3125 49.03125 L 47.3125 41.890625 L 25.296875 41.890625 L 25.296875 17 Q 25.296875 11.71875 28.09375 9.109375 Q 30.90625 6.5 36.375 6.5 Q 38.71875 6.5 41.5 6.859375 Q 44.28125 7.234375 47.3125 8.015625 z \" id=\"Consolas-116\"/>\n",
156" </defs>\n",
157" <use xlink:href=\"#Consolas-116\"/>\n",
158" </g>\n",
159" </g>\n",
160" <g id=\"text_6\">\n",
161" <!-- o -->\n",
162" <g style=\"fill:#b4b4b4;\" transform=\"translate(39.618 9.451406)scale(0.13 -0.13)\">\n",
163" <defs>\n",
164" <path d=\"M 50.484375 24.90625 Q 50.484375 19.1875 48.875 14.421875 Q 47.265625 9.671875 44.234375 6.265625 Q 41.21875 2.875 36.859375 1 Q 32.515625 -0.875 27 -0.875 Q 21.734375 -0.875 17.546875 0.75 Q 13.375 2.390625 10.46875 5.5625 Q 7.5625 8.734375 6.03125 13.421875 Q 4.5 18.109375 4.5 24.21875 Q 4.5 29.9375 6.109375 34.640625 Q 7.71875 39.359375 10.734375 42.75 Q 13.765625 46.140625 18.109375 48.015625 Q 22.46875 49.90625 27.984375 49.90625 Q 33.25 49.90625 37.421875 48.265625 Q 41.609375 46.625 44.5 43.46875 Q 47.40625 40.328125 48.9375 35.640625 Q 50.484375 30.953125 50.484375 24.90625 z M 41.796875 24.515625 Q 41.796875 29.046875 40.796875 32.4375 Q 39.796875 35.84375 37.9375 38.109375 Q 36.078125 40.375 33.421875 41.515625 Q 30.765625 42.671875 27.484375 42.671875 Q 23.6875 42.671875 20.96875 41.1875 Q 18.265625 39.703125 16.53125 37.203125 Q 14.796875 34.71875 13.984375 31.421875 Q 13.1875 28.125 13.1875 24.515625 Q 13.1875 19.96875 14.1875 16.546875 Q 15.1875 13.140625 17.03125 10.859375 Q 18.890625 8.59375 21.53125 7.4375 Q 24.171875 6.296875 27.484375 6.296875 Q 31.296875 6.296875 34 7.78125 Q 36.71875 9.28125 38.453125 11.765625 Q 40.1875 14.265625 40.984375 17.546875 Q 41.796875 20.84375 41.796875 24.515625 z \" id=\"Consolas-111\"/>\n",
165" </defs>\n",
166" <use xlink:href=\"#Consolas-111\"/>\n",
167" </g>\n",
168" </g>\n",
169" <g id=\"text_7\">\n",
170" <!-- r -->\n",
171" <g style=\"fill:#b4b4b4;\" transform=\"translate(46.1466 9.451406)scale(0.13 -0.13)\">\n",
172" <defs>\n",
173" <path d=\"M 9.8125 49.03125 L 17.578125 49.03125 L 17.828125 39.984375 Q 22.171875 45.21875 26.390625 47.5625 Q 30.609375 49.90625 34.90625 49.90625 Q 42.53125 49.90625 46.453125 44.96875 Q 50.390625 40.046875 50.09375 30.328125 L 41.5 30.328125 Q 41.65625 36.765625 39.625 39.671875 Q 37.59375 42.578125 33.6875 42.578125 Q 31.984375 42.578125 30.25 41.96875 Q 28.515625 41.359375 26.6875 40.015625 Q 24.859375 38.671875 22.796875 36.5625 Q 20.75 34.46875 18.40625 31.5 L 18.40625 0 L 9.8125 0 z \" id=\"Consolas-114\"/>\n",
174" </defs>\n",
175" <use xlink:href=\"#Consolas-114\"/>\n",
176" </g>\n",
177" </g>\n",
178" <g id=\"text_8\">\n",
179" <!-- c -->\n",
180" <g style=\"fill:#b4b4b4;\" transform=\"translate(52.6752 9.451406)scale(0.13 -0.13)\">\n",
181" <defs>\n",
182" <path d=\"M 45.90625 1.8125 Q 42.578125 0.53125 39.078125 -0.078125 Q 35.59375 -0.6875 31.890625 -0.6875 Q 20.265625 -0.6875 13.984375 5.609375 Q 7.71875 11.921875 7.71875 24.03125 Q 7.71875 29.828125 9.515625 34.5625 Q 11.328125 39.3125 14.59375 42.671875 Q 17.875 46.046875 22.40625 47.875 Q 26.953125 49.703125 32.421875 49.703125 Q 36.234375 49.703125 39.546875 49.171875 Q 42.875 48.640625 45.90625 47.40625 L 45.90625 39.3125 Q 42.71875 40.96875 39.421875 41.71875 Q 36.140625 42.484375 32.625 42.484375 Q 29.34375 42.484375 26.4375 41.234375 Q 23.53125 39.984375 21.328125 37.640625 Q 19.140625 35.296875 17.875 31.921875 Q 16.609375 28.5625 16.609375 24.3125 Q 16.609375 15.4375 20.921875 11.015625 Q 25.25 6.59375 32.90625 6.59375 Q 36.375 6.59375 39.625 7.375 Q 42.875 8.15625 45.90625 9.71875 z \" id=\"Consolas-99\"/>\n",
183" </defs>\n",
184" <use xlink:href=\"#Consolas-99\"/>\n",
185" </g>\n",
186" </g>\n",
187" <g id=\"text_9\">\n",
188" <!-- h -->\n",
189" <g style=\"fill:#b4b4b4;\" transform=\"translate(59.2038 9.451406)scale(0.13 -0.13)\">\n",
190" <use xlink:href=\"#Consolas-104\"/>\n",
191" </g>\n",
192" </g>\n",
193" <g id=\"text_10\">\n",
194" <!-- . -->\n",
195" <g style=\"fill:#b4b4b4;\" transform=\"translate(65.7324 9.451406)scale(0.13 -0.13)\">\n",
196" <defs>\n",
197" <path d=\"M 27.09375 15.375 Q 28.765625 15.375 30.25 14.734375 Q 31.734375 14.109375 32.828125 12.984375 Q 33.9375 11.859375 34.5625 10.375 Q 35.203125 8.890625 35.203125 7.171875 Q 35.203125 5.515625 34.5625 4.046875 Q 33.9375 2.59375 32.828125 1.484375 Q 31.734375 0.390625 30.25 -0.234375 Q 28.765625 -0.875 27.09375 -0.875 Q 25.390625 -0.875 23.921875 -0.234375 Q 22.46875 0.390625 21.359375 1.484375 Q 20.265625 2.59375 19.625 4.046875 Q 19 5.515625 19 7.171875 Q 19 8.890625 19.625 10.375 Q 20.265625 11.859375 21.359375 12.984375 Q 22.46875 14.109375 23.921875 14.734375 Q 25.390625 15.375 27.09375 15.375 z \" id=\"Consolas-46\"/>\n",
198" </defs>\n",
199" <use xlink:href=\"#Consolas-46\"/>\n",
200" </g>\n",
201" </g>\n",
202" <g id=\"text_11\">\n",
203" <!-- t -->\n",
204" <g style=\"fill:#b4b4b4;\" transform=\"translate(72.261 9.451406)scale(0.13 -0.13)\">\n",
205" <use xlink:href=\"#Consolas-116\"/>\n",
206" </g>\n",
207" </g>\n",
208" <g id=\"text_12\">\n",
209" <!-- a -->\n",
210" <g style=\"fill:#b4b4b4;\" transform=\"translate(78.7896 9.451406)scale(0.13 -0.13)\">\n",
211" <defs>\n",
212" <path d=\"M 39.3125 0 L 39.109375 6.59375 Q 35.109375 2.640625 30.984375 0.875 Q 26.859375 -0.875 22.3125 -0.875 Q 18.109375 -0.875 15.125 0.1875 Q 12.15625 1.265625 10.21875 3.140625 Q 8.296875 5.03125 7.390625 7.5625 Q 6.5 10.109375 6.5 13.09375 Q 6.5 20.453125 11.984375 24.625 Q 17.484375 28.8125 28.21875 28.8125 L 38.375 28.8125 L 38.375 33.109375 Q 38.375 37.453125 35.59375 40.0625 Q 32.8125 42.671875 27.09375 42.671875 Q 22.953125 42.671875 18.921875 41.75 Q 14.890625 40.828125 10.59375 39.109375 L 10.59375 46.78125 Q 12.203125 47.359375 14.171875 47.921875 Q 16.15625 48.484375 18.359375 48.921875 Q 20.5625 49.359375 22.953125 49.625 Q 25.34375 49.90625 27.78125 49.90625 Q 32.234375 49.90625 35.796875 48.921875 Q 39.359375 47.953125 41.8125 45.953125 Q 44.28125 43.953125 45.59375 40.921875 Q 46.921875 37.890625 46.921875 33.796875 L 46.921875 0 z M 38.375 22.3125 L 27.59375 22.3125 Q 24.421875 22.3125 22.125 21.671875 Q 19.828125 21.046875 18.359375 19.875 Q 16.890625 18.703125 16.1875 17.0625 Q 15.484375 15.4375 15.484375 13.375 Q 15.484375 11.96875 15.921875 10.671875 Q 16.359375 9.375 17.328125 8.375 Q 18.3125 7.375 19.875 6.78125 Q 21.4375 6.203125 23.6875 6.203125 Q 26.609375 6.203125 30.390625 7.984375 Q 34.1875 9.765625 38.375 13.625 z \" id=\"Consolas-97\"/>\n",
213" </defs>\n",
214" <use xlink:href=\"#Consolas-97\"/>\n",
215" </g>\n",
216" </g>\n",
217" <g id=\"text_13\">\n",
218" <!-- n -->\n",
219" <g style=\"fill:#b4b4b4;\" transform=\"translate(85.3182 9.451406)scale(0.13 -0.13)\">\n",
220" <defs>\n",
221" <path d=\"M 7.8125 49.03125 L 15.375 49.03125 L 15.71875 41.109375 Q 17.875 43.65625 19.875 45.328125 Q 21.875 47.015625 23.796875 48.046875 Q 25.734375 49.078125 27.734375 49.484375 Q 29.734375 49.90625 31.890625 49.90625 Q 39.453125 49.90625 43.328125 45.4375 Q 47.21875 40.96875 47.21875 31.984375 L 47.21875 0 L 38.71875 0 L 38.71875 31.296875 Q 38.71875 37.0625 36.5625 39.8125 Q 34.421875 42.578125 30.171875 42.578125 Q 28.609375 42.578125 27.125 42.109375 Q 25.640625 41.65625 24.015625 40.5 Q 22.40625 39.359375 20.53125 37.40625 Q 18.65625 35.453125 16.3125 32.515625 L 16.3125 0 L 7.8125 0 z \" id=\"Consolas-110\"/>\n",
222" </defs>\n",
223" <use xlink:href=\"#Consolas-110\"/>\n",
224" </g>\n",
225" </g>\n",
226" <g id=\"text_14\">\n",
227" <!-- h -->\n",
228" <g style=\"fill:#b4b4b4;\" transform=\"translate(91.8468 9.451406)scale(0.13 -0.13)\">\n",
229" <use xlink:href=\"#Consolas-104\"/>\n",
230" </g>\n",
231" </g>\n",
232" <g id=\"text_15\">\n",
233" <!-- ( -->\n",
234" <g style=\"fill:#b4b4b4;\" transform=\"translate(98.3754 9.451406)scale(0.13 -0.13)\">\n",
235" <defs>\n",
236" <path d=\"M 37.15625 -20.515625 Q 14.65625 0.34375 14.65625 25.59375 Q 14.65625 31.5 15.84375 37.375 Q 17.046875 43.265625 19.703125 49.171875 Q 22.359375 55.078125 26.734375 60.984375 Q 31.109375 66.890625 37.359375 72.703125 L 42.28125 67.671875 Q 23.34375 48.96875 23.34375 26.21875 Q 23.34375 14.890625 28.125 4.4375 Q 32.90625 -6 42.28125 -15.28125 z \" id=\"Consolas-40\"/>\n",
237" </defs>\n",
238" <use xlink:href=\"#Consolas-40\"/>\n",
239" </g>\n",
240" </g>\n",
241" <g id=\"text_16\">\n",
242" <!-- W -->\n",
243" <g style=\"fill:#b4b4b4;\" transform=\"translate(104.904 9.451406)scale(0.13 -0.13)\">\n",
244" <defs>\n",
245" <path d=\"M 52.78125 63.8125 L 48.484375 0 L 37.203125 0 L 29.296875 22.703125 L 27.09375 29.984375 L 24.8125 22.125 L 17.484375 0 L 6.59375 0 L 2.203125 63.8125 L 10.40625 63.8125 L 12.890625 20.40625 L 13.625 8.5 L 16.703125 18.609375 L 24.421875 42.28125 L 30.421875 42.28125 L 39.3125 16.890625 L 42.28125 8.5 L 42.484375 17.28125 L 45.015625 63.8125 z \" id=\"Consolas-87\"/>\n",
246" </defs>\n",
247" <use xlink:href=\"#Consolas-87\"/>\n",
248" </g>\n",
249" </g>\n",
250" <g id=\"text_17\">\n",
251" <!-- h -->\n",
252" <g style=\"fill:#b4b4b4;\" transform=\"translate(111.4326 9.451406)scale(0.13 -0.13)\">\n",
253" <use xlink:href=\"#Consolas-104\"/>\n",
254" </g>\n",
255" </g>\n",
256" <g id=\"text_18\">\n",
257" <!-- h -->\n",
258" <g style=\"fill:#b4b4b4;\" transform=\"translate(117.9612 9.451406)scale(0.13 -0.13)\">\n",
259" <use xlink:href=\"#Consolas-104\"/>\n",
260" </g>\n",
261" </g>\n",
262" <g id=\"text_19\">\n",
263" <!-- -->\n",
264" <g style=\"fill:#b4b4b4;\" transform=\"translate(124.4898 9.451406)scale(0.13 -0.13)\">\n",
265" <use xlink:href=\"#Consolas-32\"/>\n",
266" </g>\n",
267" </g>\n",
268" <g id=\"text_20\">\n",
269" <!-- @ -->\n",
270" <g style=\"fill:#b4b4b4;\" transform=\"translate(131.0184 9.451406)scale(0.13 -0.13)\">\n",
271" <defs>\n",
272" <path d=\"M 38.09375 19.921875 Q 37.640625 16.796875 37.59375 14.75 Q 37.546875 12.703125 37.859375 11.53125 Q 38.1875 10.359375 38.859375 9.890625 Q 39.546875 9.421875 40.578125 9.421875 Q 41.9375 9.421875 43.15625 10.859375 Q 44.390625 12.3125 45.34375 15.3125 Q 46.296875 18.3125 46.84375 22.890625 Q 47.40625 27.484375 47.40625 33.796875 Q 47.40625 40.828125 46.53125 46.34375 Q 45.65625 51.859375 43.75 55.71875 Q 41.84375 59.578125 38.796875 61.59375 Q 35.75 63.625 31.390625 63.625 Q 28.078125 63.625 24.96875 61.9375 Q 21.875 60.25 19.203125 57.203125 Q 16.546875 54.15625 14.375 49.875 Q 12.203125 45.609375 10.65625 40.421875 Q 9.125 35.25 8.265625 29.296875 Q 7.421875 23.34375 7.421875 16.890625 Q 7.421875 1.171875 12.15625 -6.5625 Q 16.890625 -14.3125 25.484375 -14.3125 Q 29.828125 -14.3125 33.59375 -13.3125 Q 37.359375 -12.3125 41.40625 -10.296875 L 41.40625 -16.609375 Q 37.40625 -18.453125 33.390625 -19.375 Q 29.390625 -20.3125 25 -20.3125 Q 12.546875 -20.3125 6.5625 -10.984375 Q 0.59375 -1.65625 0.484375 16.796875 Q 0.4375 24.171875 1.453125 30.9375 Q 2.484375 37.703125 4.40625 43.5625 Q 6.34375 49.421875 9.09375 54.21875 Q 11.859375 59.03125 15.34375 62.421875 Q 18.84375 65.828125 22.9375 67.703125 Q 27.046875 69.578125 31.6875 69.578125 Q 37.5 69.578125 41.765625 67.203125 Q 46.046875 64.84375 48.828125 60.375 Q 51.609375 55.90625 52.953125 49.40625 Q 54.296875 42.921875 54.296875 34.625 Q 54.25 26.21875 53.203125 20.234375 Q 52.15625 14.265625 50.25 10.453125 Q 48.34375 6.640625 45.625 4.859375 Q 42.921875 3.078125 39.59375 3.078125 Q 35.796875 3.078125 33.9375 5.03125 Q 32.078125 6.984375 32.078125 10.296875 Q 30.21875 6.546875 28.0625 4.8125 Q 25.921875 3.078125 22.90625 3.078125 Q 18.3125 3.078125 16.015625 6.515625 Q 13.71875 9.96875 13.71875 17.390625 Q 13.71875 20.0625 14.03125 23.140625 Q 14.359375 26.21875 15.109375 29.3125 Q 15.875 32.421875 17.09375 35.28125 Q 18.3125 38.140625 20.09375 40.3125 Q 21.875 42.484375 24.3125 43.796875 Q 26.765625 45.125 29.890625 45.125 Q 31.734375 45.125 33.34375 44.671875 Q 34.96875 44.234375 35.6875 43.796875 L 42 45.3125 z M 33.109375 37.3125 Q 32.671875 37.890625 31.765625 38.34375 Q 30.859375 38.8125 29.5 38.8125 Q 28.03125 38.8125 26.859375 37.78125 Q 25.6875 36.765625 24.78125 35.046875 Q 23.875 33.34375 23.265625 31.171875 Q 22.65625 29 22.234375 26.703125 Q 21.828125 24.421875 21.65625 22.1875 Q 21.484375 19.96875 21.484375 18.21875 Q 21.484375 13.53125 22.0625 11.46875 Q 22.65625 9.421875 24.3125 9.421875 Q 24.90625 9.421875 25.484375 9.65625 Q 26.078125 9.90625 26.734375 10.609375 Q 27.390625 11.328125 28.171875 12.59375 Q 28.953125 13.875 29.890625 15.921875 z \" id=\"Consolas-64\"/>\n",
273" </defs>\n",
274" <use xlink:href=\"#Consolas-64\"/>\n",
275" </g>\n",
276" </g>\n",
277" <g id=\"text_21\">\n",
278" <!-- -->\n",
279" <g style=\"fill:#b4b4b4;\" transform=\"translate(137.547 9.451406)scale(0.13 -0.13)\">\n",
280" <use xlink:href=\"#Consolas-32\"/>\n",
281" </g>\n",
282" </g>\n",
283" <g id=\"text_22\">\n",
284" <!-- ( -->\n",
285" <g style=\"fill:#b4b4b4;\" transform=\"translate(144.0756 9.451406)scale(0.13 -0.13)\">\n",
286" <use xlink:href=\"#Consolas-40\"/>\n",
287" </g>\n",
288" </g>\n",
289" <g id=\"text_23\">\n",
290" <!-- r -->\n",
291" <g style=\"fill:#b4b4b4;\" transform=\"translate(150.6042 9.451406)scale(0.13 -0.13)\">\n",
292" <use xlink:href=\"#Consolas-114\"/>\n",
293" </g>\n",
294" </g>\n",
295" <g id=\"text_24\">\n",
296" <!-- * -->\n",
297" <g style=\"fill:#b4b4b4;\" transform=\"translate(157.1328 9.451406)scale(0.13 -0.13)\">\n",
298" <defs>\n",
299" <path d=\"M 46.921875 41.015625 L 43.609375 35.203125 L 29.890625 44.28125 L 31 27.59375 L 24.03125 27.59375 L 25.09375 44.28125 L 11.078125 35.203125 L 8.015625 40.921875 L 23 48.296875 L 8.015625 55.8125 L 11.375 61.53125 L 25.203125 52.296875 L 24.03125 69 L 31 69 L 29.78125 52.296875 L 43.609375 61.625 L 47.015625 55.609375 L 31.984375 48.1875 z \" id=\"Consolas-42\"/>\n",
300" </defs>\n",
301" <use xlink:href=\"#Consolas-42\"/>\n",
302" </g>\n",
303" </g>\n",
304" <g id=\"text_25\">\n",
305" <!-- h -->\n",
306" <g style=\"fill:#b4b4b4;\" transform=\"translate(163.6614 9.451406)scale(0.13 -0.13)\">\n",
307" <use xlink:href=\"#Consolas-104\"/>\n",
308" </g>\n",
309" </g>\n",
310" <g id=\"text_26\">\n",
311" <!-- ) -->\n",
312" <g style=\"fill:#b4b4b4;\" transform=\"translate(170.19 9.451406)scale(0.13 -0.13)\">\n",
313" <defs>\n",
314" <path d=\"M 17.828125 72.703125 Q 40.328125 51.859375 40.328125 26.3125 Q 40.328125 21.046875 39.25 15.375 Q 38.1875 9.71875 35.59375 3.78125 Q 33.015625 -2.15625 28.640625 -8.25 Q 24.265625 -14.359375 17.625 -20.515625 L 12.703125 -15.484375 Q 22.21875 -6.0625 26.90625 4.1875 Q 31.59375 14.453125 31.59375 25.6875 Q 31.59375 48.921875 12.703125 67.484375 z \" id=\"Consolas-41\"/>\n",
315" </defs>\n",
316" <use xlink:href=\"#Consolas-41\"/>\n",
317" </g>\n",
318" </g>\n",
319" <g id=\"text_27\">\n",
320" <!-- -->\n",
321" <g style=\"fill:#b4b4b4;\" transform=\"translate(176.7186 9.451406)scale(0.13 -0.13)\">\n",
322" <use xlink:href=\"#Consolas-32\"/>\n",
323" </g>\n",
324" </g>\n",
325" <g id=\"text_28\">\n",
326" <!-- + -->\n",
327" <g style=\"fill:#b4b4b4;\" transform=\"translate(183.2472 9.451406)scale(0.13 -0.13)\">\n",
328" <defs>\n",
329" <path d=\"M 50.875 22.90625 L 31.6875 22.90625 L 31.6875 2.984375 L 23.296875 2.984375 L 23.296875 22.90625 L 4.109375 22.90625 L 4.109375 30.328125 L 23.296875 30.328125 L 23.296875 50.09375 L 31.6875 50.09375 L 31.6875 30.328125 L 50.875 30.328125 z \" id=\"Consolas-43\"/>\n",
330" </defs>\n",
331" <use xlink:href=\"#Consolas-43\"/>\n",
332" </g>\n",
333" </g>\n",
334" <g id=\"text_29\">\n",
335" <!-- -->\n",
336" <g style=\"fill:#b4b4b4;\" transform=\"translate(189.7758 9.451406)scale(0.13 -0.13)\">\n",
337" <use xlink:href=\"#Consolas-32\"/>\n",
338" </g>\n",
339" </g>\n",
340" <g id=\"text_30\">\n",
341" <!-- U -->\n",
342" <g style=\"fill:#444443;\" transform=\"translate(196.3044 9.451406)scale(0.13 -0.13)\">\n",
343" <defs>\n",
344" <path d=\"M 49.703125 22.21875 Q 49.703125 16.9375 48.21875 12.671875 Q 46.734375 8.40625 43.84375 5.390625 Q 40.96875 2.390625 36.796875 0.75 Q 32.625 -0.875 27.203125 -0.875 Q 21.234375 -0.875 17.078125 0.6875 Q 12.9375 2.25 10.328125 5.09375 Q 7.71875 7.953125 6.515625 11.953125 Q 5.328125 15.96875 5.328125 20.90625 L 5.328125 63.8125 L 14.015625 63.8125 L 14.015625 21.578125 Q 14.015625 17.828125 14.71875 14.984375 Q 15.4375 12.15625 17.046875 10.25 Q 18.65625 8.34375 21.21875 7.359375 Q 23.78125 6.390625 27.484375 6.390625 Q 34.421875 6.390625 37.71875 10.390625 Q 41.015625 14.40625 41.015625 21.6875 L 41.015625 63.8125 L 49.703125 63.8125 z \" id=\"Consolas-85\"/>\n",
345" </defs>\n",
346" <use xlink:href=\"#Consolas-85\"/>\n",
347" </g>\n",
348" </g>\n",
349" <g id=\"text_31\">\n",
350" <!-- x -->\n",
351" <g style=\"fill:#444443;\" transform=\"translate(202.833 9.451406)scale(0.13 -0.13)\">\n",
352" <defs>\n",
353" <path d=\"M 52 0 L 40.71875 0 L 27.484375 18.703125 L 14.40625 0 L 3.421875 0 L 22.40625 24.609375 L 4.296875 49.03125 L 15.1875 49.03125 L 28.078125 30.171875 L 40.71875 49.03125 L 51.21875 49.03125 L 32.8125 24.421875 z \" id=\"Consolas-120\"/>\n",
354" </defs>\n",
355" <use xlink:href=\"#Consolas-120\"/>\n",
356" </g>\n",
357" </g>\n",
358" <g id=\"text_32\">\n",
359" <!-- h -->\n",
360" <g style=\"fill:#444443;\" transform=\"translate(209.3616 9.451406)scale(0.13 -0.13)\">\n",
361" <use xlink:href=\"#Consolas-104\"/>\n",
362" </g>\n",
363" </g>\n",
364" <g id=\"text_33\">\n",
365" <!-- -->\n",
366" <g style=\"fill:#b4b4b4;\" transform=\"translate(215.8902 9.451406)scale(0.13 -0.13)\">\n",
367" <use xlink:href=\"#Consolas-32\"/>\n",
368" </g>\n",
369" </g>\n",
370" <g id=\"text_34\">\n",
371" <!-- @ -->\n",
372" <g style=\"fill:#a40227;\" transform=\"translate(222.4188 9.451406)scale(0.13 -0.13)\">\n",
373" <use xlink:href=\"#Consolas-64\"/>\n",
374" </g>\n",
375" </g>\n",
376" <g id=\"text_35\">\n",
377" <!-- -->\n",
378" <g style=\"fill:#b4b4b4;\" transform=\"translate(228.9474 9.451406)scale(0.13 -0.13)\">\n",
379" <use xlink:href=\"#Consolas-32\"/>\n",
380" </g>\n",
381" </g>\n",
382" <g id=\"text_36\">\n",
383" <!-- X -->\n",
384" <g style=\"fill:#444443;\" transform=\"translate(235.476 9.451406)scale(0.13 -0.13)\">\n",
385" <defs>\n",
386" <path d=\"M 53.8125 0 L 42.828125 0 L 27.296875 25.78125 L 11.71875 0 L 0.875 0 L 22.125 32.625 L 2.59375 63.8125 L 12.890625 63.8125 L 27.484375 39.796875 L 42.1875 63.8125 L 52.203125 63.8125 L 32.625 33.015625 z \" id=\"Consolas-88\"/>\n",
387" </defs>\n",
388" <use xlink:href=\"#Consolas-88\"/>\n",
389" </g>\n",
390" </g>\n",
391" <g id=\"text_37\">\n",
392" <!-- . -->\n",
393" <g style=\"fill:#444443;\" transform=\"translate(242.0046 9.451406)scale(0.13 -0.13)\">\n",
394" <use xlink:href=\"#Consolas-46\"/>\n",
395" </g>\n",
396" </g>\n",
397" <g id=\"text_38\">\n",
398" <!-- T -->\n",
399" <g style=\"fill:#444443;\" transform=\"translate(248.5332 9.451406)scale(0.13 -0.13)\">\n",
400" <defs>\n",
401" <path d=\"M 50.78125 56.390625 L 31.890625 56.390625 L 31.890625 0 L 23.09375 0 L 23.09375 56.390625 L 4.203125 56.390625 L 4.203125 63.8125 L 50.78125 63.8125 z \" id=\"Consolas-84\"/>\n",
402" </defs>\n",
403" <use xlink:href=\"#Consolas-84\"/>\n",
404" </g>\n",
405" </g>\n",
406" <g id=\"text_39\">\n",
407" <!-- -->\n",
408" <g style=\"fill:#b4b4b4;\" transform=\"translate(255.0618 9.451406)scale(0.13 -0.13)\">\n",
409" <use xlink:href=\"#Consolas-32\"/>\n",
410" </g>\n",
411" </g>\n",
412" <g id=\"text_40\">\n",
413" <!-- + -->\n",
414" <g style=\"fill:#b4b4b4;\" transform=\"translate(261.5904 9.451406)scale(0.13 -0.13)\">\n",
415" <use xlink:href=\"#Consolas-43\"/>\n",
416" </g>\n",
417" </g>\n",
418" <g id=\"text_41\">\n",
419" <!-- -->\n",
420" <g style=\"fill:#b4b4b4;\" transform=\"translate(268.119 9.451406)scale(0.13 -0.13)\">\n",
421" <use xlink:href=\"#Consolas-32\"/>\n",
422" </g>\n",
423" </g>\n",
424" <g id=\"text_42\">\n",
425" <!-- b -->\n",
426" <g style=\"fill:#b4b4b4;\" transform=\"translate(274.6476 9.451406)scale(0.13 -0.13)\">\n",
427" <defs>\n",
428" <path d=\"M 49.703125 25.390625 Q 49.703125 19.28125 48.015625 14.46875 Q 46.34375 9.671875 43.234375 6.328125 Q 40.140625 2.984375 35.6875 1.1875 Q 31.25 -0.59375 25.6875 -0.59375 Q 21.34375 -0.59375 16.796875 0.234375 Q 12.25 1.078125 7.8125 2.875 L 7.8125 69 L 16.3125 69 L 16.3125 50 L 15.921875 40.921875 Q 19.578125 45.84375 23.75 47.875 Q 27.9375 49.90625 32.71875 49.90625 Q 36.921875 49.90625 40.09375 48.140625 Q 43.265625 46.390625 45.40625 43.1875 Q 47.5625 39.984375 48.625 35.46875 Q 49.703125 30.953125 49.703125 25.390625 z M 41.015625 25 Q 41.015625 28.859375 40.453125 32.078125 Q 39.890625 35.296875 38.671875 37.59375 Q 37.453125 39.890625 35.546875 41.1875 Q 33.640625 42.484375 31 42.484375 Q 29.390625 42.484375 27.734375 41.96875 Q 26.078125 41.453125 24.296875 40.25 Q 22.515625 39.0625 20.53125 37.078125 Q 18.5625 35.109375 16.3125 32.171875 L 16.3125 8.40625 Q 18.796875 7.421875 21.375 6.859375 Q 23.96875 6.296875 26.3125 6.296875 Q 29.25 6.296875 31.90625 7.21875 Q 34.578125 8.15625 36.59375 10.328125 Q 38.625 12.5 39.8125 16.078125 Q 41.015625 19.671875 41.015625 25 z \" id=\"Consolas-98\"/>\n",
429" </defs>\n",
430" <use xlink:href=\"#Consolas-98\"/>\n",
431" </g>\n",
432" </g>\n",
433" <g id=\"text_43\">\n",
434" <!-- h -->\n",
435" <g style=\"fill:#b4b4b4;\" transform=\"translate(281.1762 9.451406)scale(0.13 -0.13)\">\n",
436" <use xlink:href=\"#Consolas-104\"/>\n",
437" </g>\n",
438" </g>\n",
439" <g id=\"text_44\">\n",
440" <!-- ) -->\n",
441" <g style=\"fill:#b4b4b4;\" transform=\"translate(287.7048 9.451406)scale(0.13 -0.13)\">\n",
442" <use xlink:href=\"#Consolas-41\"/>\n",
443" </g>\n",
444" </g>\n",
445" <g id=\"text_45\">\n",
446" <!-- 764 -->\n",
447" <g transform=\"translate(192.8835 41.557371)rotate(-90)scale(0.09 -0.09)\">\n",
448" <defs>\n",
449" <path d=\"M 4.734375 62.203125 L 4.734375 70.65625 L 51.078125 70.65625 L 51.078125 63.8125 Q 44.234375 56.546875 37.515625 44.484375 Q 30.8125 32.421875 27.15625 19.671875 Q 24.515625 10.6875 23.78125 0 L 14.75 0 Q 14.890625 8.453125 18.0625 20.40625 Q 21.234375 32.375 27.171875 43.484375 Q 33.109375 54.59375 39.796875 62.203125 z \" id=\"ArialMT-55\"/>\n",
450" <path d=\"M 49.75 54.046875 L 41.015625 53.375 Q 39.84375 58.546875 37.703125 60.890625 Q 34.125 64.65625 28.90625 64.65625 Q 24.703125 64.65625 21.53125 62.3125 Q 17.390625 59.28125 14.984375 53.46875 Q 12.59375 47.65625 12.5 36.921875 Q 15.671875 41.75 20.265625 44.09375 Q 24.859375 46.4375 29.890625 46.4375 Q 38.671875 46.4375 44.84375 39.96875 Q 51.03125 33.5 51.03125 23.25 Q 51.03125 16.5 48.125 10.71875 Q 45.21875 4.9375 40.140625 1.859375 Q 35.0625 -1.21875 28.609375 -1.21875 Q 17.625 -1.21875 10.6875 6.859375 Q 3.765625 14.9375 3.765625 33.5 Q 3.765625 54.25 11.421875 63.671875 Q 18.109375 71.875 29.4375 71.875 Q 37.890625 71.875 43.28125 67.140625 Q 48.6875 62.40625 49.75 54.046875 z M 13.875 23.1875 Q 13.875 18.65625 15.796875 14.5 Q 17.71875 10.359375 21.1875 8.171875 Q 24.65625 6 28.46875 6 Q 34.03125 6 38.03125 10.484375 Q 42.046875 14.984375 42.046875 22.703125 Q 42.046875 30.125 38.078125 34.390625 Q 34.125 38.671875 28.125 38.671875 Q 22.171875 38.671875 18.015625 34.390625 Q 13.875 30.125 13.875 23.1875 z \" id=\"ArialMT-54\"/>\n",
451" <path d=\"M 32.328125 0 L 32.328125 17.140625 L 1.265625 17.140625 L 1.265625 25.203125 L 33.9375 71.578125 L 41.109375 71.578125 L 41.109375 25.203125 L 50.78125 25.203125 L 50.78125 17.140625 L 41.109375 17.140625 L 41.109375 0 z M 32.328125 25.203125 L 32.328125 57.46875 L 9.90625 25.203125 z \" id=\"ArialMT-52\"/>\n",
452" </defs>\n",
453" <use xlink:href=\"#ArialMT-55\"/>\n",
454" <use x=\"55.615234\" xlink:href=\"#ArialMT-54\"/>\n",
455" <use x=\"111.230469\" xlink:href=\"#ArialMT-52\"/>\n",
456" </g>\n",
457" </g>\n",
458" <g id=\"text_46\">\n",
459" <!-- 256 -->\n",
460" <g transform=\"translate(198.590034 21.560896)scale(0.09 -0.09)\">\n",
461" <defs>\n",
462" <path d=\"M 50.34375 8.453125 L 50.34375 0 L 3.03125 0 Q 2.9375 3.171875 4.046875 6.109375 Q 5.859375 10.9375 9.828125 15.625 Q 13.8125 20.3125 21.34375 26.46875 Q 33.015625 36.03125 37.109375 41.625 Q 41.21875 47.21875 41.21875 52.203125 Q 41.21875 57.421875 37.46875 61 Q 33.734375 64.59375 27.734375 64.59375 Q 21.390625 64.59375 17.578125 60.78125 Q 13.765625 56.984375 13.71875 50.25 L 4.6875 51.171875 Q 5.609375 61.28125 11.65625 66.578125 Q 17.71875 71.875 27.9375 71.875 Q 38.234375 71.875 44.234375 66.15625 Q 50.25 60.453125 50.25 52 Q 50.25 47.703125 48.484375 43.546875 Q 46.734375 39.40625 42.65625 34.8125 Q 38.578125 30.21875 29.109375 22.21875 Q 21.1875 15.578125 18.9375 13.203125 Q 16.703125 10.84375 15.234375 8.453125 z \" id=\"ArialMT-50\"/>\n",
463" <path d=\"M 4.15625 18.75 L 13.375 19.53125 Q 14.40625 12.796875 18.140625 9.390625 Q 21.875 6 27.15625 6 Q 33.5 6 37.890625 10.78125 Q 42.28125 15.578125 42.28125 23.484375 Q 42.28125 31 38.0625 35.34375 Q 33.84375 39.703125 27 39.703125 Q 22.75 39.703125 19.328125 37.765625 Q 15.921875 35.84375 13.96875 32.765625 L 5.71875 33.84375 L 12.640625 70.609375 L 48.25 70.609375 L 48.25 62.203125 L 19.671875 62.203125 L 15.828125 42.96875 Q 22.265625 47.46875 29.34375 47.46875 Q 38.71875 47.46875 45.15625 40.96875 Q 51.609375 34.46875 51.609375 24.265625 Q 51.609375 14.546875 45.953125 7.46875 Q 39.0625 -1.21875 27.15625 -1.21875 Q 17.390625 -1.21875 11.203125 4.25 Q 5.03125 9.71875 4.15625 18.75 z \" id=\"ArialMT-53\"/>\n",
464" </defs>\n",
465" <use xlink:href=\"#ArialMT-50\"/>\n",
466" <use x=\"55.615234\" xlink:href=\"#ArialMT-53\"/>\n",
467" <use x=\"111.230469\" xlink:href=\"#ArialMT-54\"/>\n",
468" </g>\n",
469" </g>\n",
470" <g id=\"text_47\">\n",
471" <!-- 764 -->\n",
472" <g transform=\"translate(232.0551 41.557371)rotate(-90)scale(0.09 -0.09)\">\n",
473" <use xlink:href=\"#ArialMT-55\"/>\n",
474" <use x=\"55.615234\" xlink:href=\"#ArialMT-54\"/>\n",
475" <use x=\"111.230469\" xlink:href=\"#ArialMT-52\"/>\n",
476" </g>\n",
477" </g>\n",
478" <g id=\"text_48\">\n",
479" <!-- 200 -->\n",
480" <g transform=\"translate(237.761634 21.560896)scale(0.09 -0.09)\">\n",
481" <defs>\n",
482" <path d=\"M 4.15625 35.296875 Q 4.15625 48 6.765625 55.734375 Q 9.375 63.484375 14.515625 67.671875 Q 19.671875 71.875 27.484375 71.875 Q 33.25 71.875 37.59375 69.546875 Q 41.9375 67.234375 44.765625 62.859375 Q 47.609375 58.5 49.21875 52.21875 Q 50.828125 45.953125 50.828125 35.296875 Q 50.828125 22.703125 48.234375 14.96875 Q 45.65625 7.234375 40.5 3 Q 35.359375 -1.21875 27.484375 -1.21875 Q 17.140625 -1.21875 11.234375 6.203125 Q 4.15625 15.140625 4.15625 35.296875 z M 13.1875 35.296875 Q 13.1875 17.671875 17.3125 11.828125 Q 21.4375 6 27.484375 6 Q 33.546875 6 37.671875 11.859375 Q 41.796875 17.71875 41.796875 35.296875 Q 41.796875 52.984375 37.671875 58.78125 Q 33.546875 64.59375 27.390625 64.59375 Q 21.34375 64.59375 17.71875 59.46875 Q 13.1875 52.9375 13.1875 35.296875 z \" id=\"ArialMT-48\"/>\n",
483" </defs>\n",
484" <use xlink:href=\"#ArialMT-50\"/>\n",
485" <use x=\"55.615234\" xlink:href=\"#ArialMT-48\"/>\n",
486" <use x=\"111.230469\" xlink:href=\"#ArialMT-48\"/>\n",
487" </g>\n",
488" </g>\n",
489" </g>\n",
490" </g>\n",
491" <defs>\n",
492" <clipPath id=\"p2cf69eb1e8\">\n",
493" <rect height=\"41.491069\" width=\"294.2334\" x=\"0\" y=\"4.504646\"/>\n",
494" </clipPath>\n",
495" </defs>\n",
496"</svg>"
497],
498"text/plain": [
499"<IPython.core.display.SVG object>"
500]
501},
502"metadata": {},
503"output_type": "display_data"
504},
505{
506"ename": "RuntimeError",
507"evalue": "mat1 and mat2 shapes cannot be multiplied (764x256 and 764x200)\nCause: @ on tensor operand Uxh w/shape [764, 256] and operand X.T w/shape [764, 200]",
508"output_type": "error",
509"traceback": [
510"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
511"\u001b[0;31mRuntimeError\u001b[0m Traceback (most recent call last)",
512"\u001b[0;32m<ipython-input-3-b9a515efa8ef>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtsensor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclarify\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mh\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtanh\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mWhh\u001b[0m \u001b[0;34m@\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mr\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mUxh\u001b[0m \u001b[0;34m@\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mT\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mbh\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
513"\u001b[0;31mRuntimeError\u001b[0m: mat1 and mat2 shapes cannot be multiplied (764x256 and 764x200)\nCause: @ on tensor operand Uxh w/shape [764, 256] and operand X.T w/shape [764, 200]"
514]
515}
516],
517"source": [
518"import tsensor\n",
519"\n",
520"with tsensor.clarify():\n",
521" h = torch.tanh(Whh @ (r*h) + Uxh @ X.T + bh)"
522]
523},
524{
525"cell_type": "markdown",
526"id": "9ce7ac3e-c01a-493e-97f6-2b6305dbd4f3",
527"metadata": {},
528"source": [
529"TensorSensor has augmented the exception object's message with:\n",
530"\n",
531"```\n",
532"Cause: @ on tensor operand Uxh w/shape [764, 256] and operand X.T w/shape [764, 200]\n",
533"```"
534]
535},
536{
537"cell_type": "markdown",
538"id": "8a451d9c-8fcd-41d0-b140-a7affdb0a1fa",
539"metadata": {},
540"source": [
541"## Fix error and clarify() does nothing"
542]
543},
544{
545"cell_type": "code",
546"execution_count": 4,
547"id": "0d0b044c-dce0-4a3c-9a4b-de0c4bd1e27f",
548"metadata": {},
549"outputs": [],
550"source": [
551"Uxh = torch.randn(nhidden, d)\n",
552"with tsensor.clarify():\n",
553" h = torch.tanh(Whh @ (r*h) + Uxh @ X.T + bh) # state vector update equation"
554]
555},
556{
557"cell_type": "markdown",
558"id": "96b5ed0f-e9a5-4270-be5e-deadc5d35fbd",
559"metadata": {},
560"source": [
561"## Explaining code w/o errors"
562]
563},
564{
565"cell_type": "code",
566"execution_count": 5,
567"id": "37c4e6ba-2d59-486d-836d-c81b0f026e8a",
568"metadata": {},
569"outputs": [
570{
571"data": {
572"image/svg+xml": [
573"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" height=\"45.995716pt\" version=\"1.1\" viewBox=\"0 0 119.18349 45.995716\" width=\"119.18349pt\">\n",
574" <metadata>\n",
575" <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n",
576" <cc:Work>\n",
577" <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n",
578" <dc:date>2021-09-29T16:51:10.175346</dc:date>\n",
579" <dc:format>image/svg+xml</dc:format>\n",
580" <dc:creator>\n",
581" <cc:Agent>\n",
582" <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>\n",
583" </cc:Agent>\n",
584" </dc:creator>\n",
585" </cc:Work>\n",
586" </rdf:RDF>\n",
587" </metadata>\n",
588" <defs>\n",
589" <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n",
590" </defs>\n",
591" <g id=\"figure_1\">\n",
592" <g id=\"patch_1\">\n",
593" <path d=\"M 0 45.995716 L 119.18349 45.995716 L 119.18349 0 L 0 0 z \" style=\"fill:none;\"/>\n",
594" </g>\n",
595" <g id=\"axes_1\">\n",
596" <g id=\"patch_2\">\n",
597" <path clip-path=\"url(#pf600d03959)\" d=\"M 8.230781 45.180316 L 13.453661 45.180316 L 13.453661 22.919896 L 8.230781 22.919896 z \" style=\"fill:#cfe2d4;stroke:#808080;stroke-linejoin:miter;stroke-width:0.7;\"/>\n",
598" </g>\n",
599" <g id=\"patch_3\">\n",
600" <path clip-path=\"url(#pf600d03959)\" d=\"M 106.159781 45.180316 L 111.382661 45.180316 L 111.382661 22.919896 L 106.159781 22.919896 z \" style=\"fill:#cfe2d4;stroke:#808080;stroke-linejoin:miter;stroke-width:0.7;\"/>\n",
601" </g>\n",
602" <g id=\"line2d_1\">\n",
603" <path clip-path=\"url(#pf600d03959)\" d=\"M 6.925061 13.192653 L 14.759381 13.192653 \" style=\"fill:none;stroke:#c2c2c2;stroke-linecap:square;stroke-width:0.5;\"/>\n",
604" </g>\n",
605" <g id=\"line2d_2\">\n",
606" <path clip-path=\"url(#pf600d03959)\" d=\"M 104.854061 13.192653 L 112.688381 13.192653 \" style=\"fill:none;stroke:#c2c2c2;stroke-linecap:square;stroke-width:0.5;\"/>\n",
607" </g>\n",
608" <g id=\"text_1\">\n",
609" <!-- a -->\n",
610" <g style=\"fill:#444443;\" transform=\"translate(7.577921 9.451406)scale(0.13 -0.13)\">\n",
611" <defs>\n",
612" <path d=\"M 39.3125 0 L 39.109375 6.59375 Q 35.109375 2.640625 30.984375 0.875 Q 26.859375 -0.875 22.3125 -0.875 Q 18.109375 -0.875 15.125 0.1875 Q 12.15625 1.265625 10.21875 3.140625 Q 8.296875 5.03125 7.390625 7.5625 Q 6.5 10.109375 6.5 13.09375 Q 6.5 20.453125 11.984375 24.625 Q 17.484375 28.8125 28.21875 28.8125 L 38.375 28.8125 L 38.375 33.109375 Q 38.375 37.453125 35.59375 40.0625 Q 32.8125 42.671875 27.09375 42.671875 Q 22.953125 42.671875 18.921875 41.75 Q 14.890625 40.828125 10.59375 39.109375 L 10.59375 46.78125 Q 12.203125 47.359375 14.171875 47.921875 Q 16.15625 48.484375 18.359375 48.921875 Q 20.5625 49.359375 22.953125 49.625 Q 25.34375 49.90625 27.78125 49.90625 Q 32.234375 49.90625 35.796875 48.921875 Q 39.359375 47.953125 41.8125 45.953125 Q 44.28125 43.953125 45.59375 40.921875 Q 46.921875 37.890625 46.921875 33.796875 L 46.921875 0 z M 38.375 22.3125 L 27.59375 22.3125 Q 24.421875 22.3125 22.125 21.671875 Q 19.828125 21.046875 18.359375 19.875 Q 16.890625 18.703125 16.1875 17.0625 Q 15.484375 15.4375 15.484375 13.375 Q 15.484375 11.96875 15.921875 10.671875 Q 16.359375 9.375 17.328125 8.375 Q 18.3125 7.375 19.875 6.78125 Q 21.4375 6.203125 23.6875 6.203125 Q 26.609375 6.203125 30.390625 7.984375 Q 34.1875 9.765625 38.375 13.625 z \" id=\"Consolas-97\"/>\n",
613" </defs>\n",
614" <use xlink:href=\"#Consolas-97\"/>\n",
615" </g>\n",
616" </g>\n",
617" <g id=\"text_2\">\n",
618" <!-- -->\n",
619" <g style=\"fill:#444443;\" transform=\"translate(14.106521 9.451406)scale(0.13 -0.13)\">\n",
620" <defs>\n",
621" <path id=\"Consolas-32\"/>\n",
622" </defs>\n",
623" <use xlink:href=\"#Consolas-32\"/>\n",
624" </g>\n",
625" </g>\n",
626" <g id=\"text_3\">\n",
627" <!-- = -->\n",
628" <g style=\"fill:#444443;\" transform=\"translate(20.635121 9.451406)scale(0.13 -0.13)\">\n",
629" <defs>\n",
630" <path d=\"M 48.484375 31.546875 L 6.5 31.546875 L 6.5 38.71875 L 48.484375 38.71875 z M 48.484375 14.546875 L 6.5 14.546875 L 6.5 21.734375 L 48.484375 21.734375 z \" id=\"Consolas-61\"/>\n",
631" </defs>\n",
632" <use xlink:href=\"#Consolas-61\"/>\n",
633" </g>\n",
634" </g>\n",
635" <g id=\"text_4\">\n",
636" <!-- -->\n",
637" <g style=\"fill:#444443;\" transform=\"translate(27.163721 9.451406)scale(0.13 -0.13)\">\n",
638" <use xlink:href=\"#Consolas-32\"/>\n",
639" </g>\n",
640" </g>\n",
641" <g id=\"text_5\">\n",
642" <!-- t -->\n",
643" <g style=\"fill:#444443;\" transform=\"translate(33.692321 9.451406)scale(0.13 -0.13)\">\n",
644" <defs>\n",
645" <path d=\"M 47.3125 0.6875 Q 44.4375 -0.046875 41.359375 -0.359375 Q 38.28125 -0.6875 35.109375 -0.6875 Q 25.875 -0.6875 21.328125 3.484375 Q 16.796875 7.671875 16.796875 16.3125 L 16.796875 41.890625 L 3.078125 41.890625 L 3.078125 49.03125 L 16.796875 49.03125 L 16.796875 62.5 L 25.296875 64.703125 L 25.296875 49.03125 L 47.3125 49.03125 L 47.3125 41.890625 L 25.296875 41.890625 L 25.296875 17 Q 25.296875 11.71875 28.09375 9.109375 Q 30.90625 6.5 36.375 6.5 Q 38.71875 6.5 41.5 6.859375 Q 44.28125 7.234375 47.3125 8.015625 z \" id=\"Consolas-116\"/>\n",
646" </defs>\n",
647" <use xlink:href=\"#Consolas-116\"/>\n",
648" </g>\n",
649" </g>\n",
650" <g id=\"text_6\">\n",
651" <!-- o -->\n",
652" <g style=\"fill:#444443;\" transform=\"translate(40.220921 9.451406)scale(0.13 -0.13)\">\n",
653" <defs>\n",
654" <path d=\"M 50.484375 24.90625 Q 50.484375 19.1875 48.875 14.421875 Q 47.265625 9.671875 44.234375 6.265625 Q 41.21875 2.875 36.859375 1 Q 32.515625 -0.875 27 -0.875 Q 21.734375 -0.875 17.546875 0.75 Q 13.375 2.390625 10.46875 5.5625 Q 7.5625 8.734375 6.03125 13.421875 Q 4.5 18.109375 4.5 24.21875 Q 4.5 29.9375 6.109375 34.640625 Q 7.71875 39.359375 10.734375 42.75 Q 13.765625 46.140625 18.109375 48.015625 Q 22.46875 49.90625 27.984375 49.90625 Q 33.25 49.90625 37.421875 48.265625 Q 41.609375 46.625 44.5 43.46875 Q 47.40625 40.328125 48.9375 35.640625 Q 50.484375 30.953125 50.484375 24.90625 z M 41.796875 24.515625 Q 41.796875 29.046875 40.796875 32.4375 Q 39.796875 35.84375 37.9375 38.109375 Q 36.078125 40.375 33.421875 41.515625 Q 30.765625 42.671875 27.484375 42.671875 Q 23.6875 42.671875 20.96875 41.1875 Q 18.265625 39.703125 16.53125 37.203125 Q 14.796875 34.71875 13.984375 31.421875 Q 13.1875 28.125 13.1875 24.515625 Q 13.1875 19.96875 14.1875 16.546875 Q 15.1875 13.140625 17.03125 10.859375 Q 18.890625 8.59375 21.53125 7.4375 Q 24.171875 6.296875 27.484375 6.296875 Q 31.296875 6.296875 34 7.78125 Q 36.71875 9.28125 38.453125 11.765625 Q 40.1875 14.265625 40.984375 17.546875 Q 41.796875 20.84375 41.796875 24.515625 z \" id=\"Consolas-111\"/>\n",
655" </defs>\n",
656" <use xlink:href=\"#Consolas-111\"/>\n",
657" </g>\n",
658" </g>\n",
659" <g id=\"text_7\">\n",
660" <!-- r -->\n",
661" <g style=\"fill:#444443;\" transform=\"translate(46.749521 9.451406)scale(0.13 -0.13)\">\n",
662" <defs>\n",
663" <path d=\"M 9.8125 49.03125 L 17.578125 49.03125 L 17.828125 39.984375 Q 22.171875 45.21875 26.390625 47.5625 Q 30.609375 49.90625 34.90625 49.90625 Q 42.53125 49.90625 46.453125 44.96875 Q 50.390625 40.046875 50.09375 30.328125 L 41.5 30.328125 Q 41.65625 36.765625 39.625 39.671875 Q 37.59375 42.578125 33.6875 42.578125 Q 31.984375 42.578125 30.25 41.96875 Q 28.515625 41.359375 26.6875 40.015625 Q 24.859375 38.671875 22.796875 36.5625 Q 20.75 34.46875 18.40625 31.5 L 18.40625 0 L 9.8125 0 z \" id=\"Consolas-114\"/>\n",
664" </defs>\n",
665" <use xlink:href=\"#Consolas-114\"/>\n",
666" </g>\n",
667" </g>\n",
668" <g id=\"text_8\">\n",
669" <!-- c -->\n",
670" <g style=\"fill:#444443;\" transform=\"translate(53.278121 9.451406)scale(0.13 -0.13)\">\n",
671" <defs>\n",
672" <path d=\"M 45.90625 1.8125 Q 42.578125 0.53125 39.078125 -0.078125 Q 35.59375 -0.6875 31.890625 -0.6875 Q 20.265625 -0.6875 13.984375 5.609375 Q 7.71875 11.921875 7.71875 24.03125 Q 7.71875 29.828125 9.515625 34.5625 Q 11.328125 39.3125 14.59375 42.671875 Q 17.875 46.046875 22.40625 47.875 Q 26.953125 49.703125 32.421875 49.703125 Q 36.234375 49.703125 39.546875 49.171875 Q 42.875 48.640625 45.90625 47.40625 L 45.90625 39.3125 Q 42.71875 40.96875 39.421875 41.71875 Q 36.140625 42.484375 32.625 42.484375 Q 29.34375 42.484375 26.4375 41.234375 Q 23.53125 39.984375 21.328125 37.640625 Q 19.140625 35.296875 17.875 31.921875 Q 16.609375 28.5625 16.609375 24.3125 Q 16.609375 15.4375 20.921875 11.015625 Q 25.25 6.59375 32.90625 6.59375 Q 36.375 6.59375 39.625 7.375 Q 42.875 8.15625 45.90625 9.71875 z \" id=\"Consolas-99\"/>\n",
673" </defs>\n",
674" <use xlink:href=\"#Consolas-99\"/>\n",
675" </g>\n",
676" </g>\n",
677" <g id=\"text_9\">\n",
678" <!-- h -->\n",
679" <g style=\"fill:#444443;\" transform=\"translate(59.806721 9.451406)scale(0.13 -0.13)\">\n",
680" <defs>\n",
681" <path d=\"M 47.21875 0 L 38.71875 0 L 38.71875 31.296875 Q 38.71875 36.96875 36.59375 39.765625 Q 34.46875 42.578125 30.515625 42.578125 Q 28.8125 42.578125 27.3125 42.109375 Q 25.828125 41.65625 24.21875 40.5 Q 22.609375 39.359375 20.703125 37.40625 Q 18.796875 35.453125 16.3125 32.515625 L 16.3125 0 L 7.8125 0 L 7.8125 69 L 16.3125 69 L 16.3125 49.03125 L 16.015625 41.3125 Q 18.015625 43.703125 19.9375 45.328125 Q 21.875 46.96875 23.796875 48 Q 25.734375 49.03125 27.734375 49.46875 Q 29.734375 49.90625 31.890625 49.90625 Q 39.203125 49.90625 43.203125 45.4375 Q 47.21875 40.96875 47.21875 31.984375 z \" id=\"Consolas-104\"/>\n",
682" </defs>\n",
683" <use xlink:href=\"#Consolas-104\"/>\n",
684" </g>\n",
685" </g>\n",
686" <g id=\"text_10\">\n",
687" <!-- . -->\n",
688" <g style=\"fill:#444443;\" transform=\"translate(66.335321 9.451406)scale(0.13 -0.13)\">\n",
689" <defs>\n",
690" <path d=\"M 27.09375 15.375 Q 28.765625 15.375 30.25 14.734375 Q 31.734375 14.109375 32.828125 12.984375 Q 33.9375 11.859375 34.5625 10.375 Q 35.203125 8.890625 35.203125 7.171875 Q 35.203125 5.515625 34.5625 4.046875 Q 33.9375 2.59375 32.828125 1.484375 Q 31.734375 0.390625 30.25 -0.234375 Q 28.765625 -0.875 27.09375 -0.875 Q 25.390625 -0.875 23.921875 -0.234375 Q 22.46875 0.390625 21.359375 1.484375 Q 20.265625 2.59375 19.625 4.046875 Q 19 5.515625 19 7.171875 Q 19 8.890625 19.625 10.375 Q 20.265625 11.859375 21.359375 12.984375 Q 22.46875 14.109375 23.921875 14.734375 Q 25.390625 15.375 27.09375 15.375 z \" id=\"Consolas-46\"/>\n",
691" </defs>\n",
692" <use xlink:href=\"#Consolas-46\"/>\n",
693" </g>\n",
694" </g>\n",
695" <g id=\"text_11\">\n",
696" <!-- r -->\n",
697" <g style=\"fill:#444443;\" transform=\"translate(72.863921 9.451406)scale(0.13 -0.13)\">\n",
698" <use xlink:href=\"#Consolas-114\"/>\n",
699" </g>\n",
700" </g>\n",
701" <g id=\"text_12\">\n",
702" <!-- e -->\n",
703" <g style=\"fill:#444443;\" transform=\"translate(79.392521 9.451406)scale(0.13 -0.13)\">\n",
704" <defs>\n",
705" <path d=\"M 49.21875 27.09375 Q 49.21875 25.296875 49.171875 24.078125 Q 49.125 22.859375 49.03125 21.78125 L 14.59375 21.78125 Q 14.59375 14.265625 18.796875 10.234375 Q 23 6.203125 30.90625 6.203125 Q 33.0625 6.203125 35.203125 6.375 Q 37.359375 6.546875 39.359375 6.828125 Q 41.359375 7.125 43.1875 7.484375 Q 45.015625 7.859375 46.578125 8.296875 L 46.578125 1.3125 Q 43.109375 0.34375 38.734375 -0.265625 Q 34.375 -0.875 29.6875 -0.875 Q 23.390625 -0.875 18.84375 0.828125 Q 14.3125 2.546875 11.40625 5.78125 Q 8.5 9.03125 7.109375 13.734375 Q 5.71875 18.453125 5.71875 24.421875 Q 5.71875 29.59375 7.203125 34.203125 Q 8.6875 38.8125 11.546875 42.296875 Q 14.40625 45.796875 18.546875 47.84375 Q 22.703125 49.90625 27.984375 49.90625 Q 33.109375 49.90625 37.0625 48.296875 Q 41.015625 46.6875 43.71875 43.71875 Q 46.4375 40.765625 47.828125 36.546875 Q 49.21875 32.328125 49.21875 27.09375 z M 40.375 28.328125 Q 40.53125 31.59375 39.75 34.296875 Q 38.96875 37.015625 37.328125 38.96875 Q 35.6875 40.921875 33.25 42.015625 Q 30.8125 43.109375 27.59375 43.109375 Q 24.8125 43.109375 22.515625 42.03125 Q 20.21875 40.96875 18.546875 39.015625 Q 16.890625 37.0625 15.859375 34.328125 Q 14.84375 31.59375 14.59375 28.328125 z \" id=\"Consolas-101\"/>\n",
706" </defs>\n",
707" <use xlink:href=\"#Consolas-101\"/>\n",
708" </g>\n",
709" </g>\n",
710" <g id=\"text_13\">\n",
711" <!-- l -->\n",
712" <g style=\"fill:#444443;\" transform=\"translate(85.921121 9.451406)scale(0.13 -0.13)\">\n",
713" <defs>\n",
714" <path d=\"M 24.515625 62.015625 L 10.015625 62.015625 L 10.015625 69 L 33.109375 69 L 33.109375 7.078125 L 47.703125 7.078125 L 47.703125 0 L 8.40625 0 L 8.40625 7.078125 L 24.515625 7.078125 z \" id=\"Consolas-108\"/>\n",
715" </defs>\n",
716" <use xlink:href=\"#Consolas-108\"/>\n",
717" </g>\n",
718" </g>\n",
719" <g id=\"text_14\">\n",
720" <!-- u -->\n",
721" <g style=\"fill:#444443;\" transform=\"translate(92.449721 9.451406)scale(0.13 -0.13)\">\n",
722" <defs>\n",
723" <path d=\"M 47.21875 0 L 39.59375 0 L 39.3125 7.90625 Q 37.109375 5.375 35.125 3.6875 Q 33.15625 2 31.203125 0.96875 Q 29.25 -0.046875 27.265625 -0.453125 Q 25.296875 -0.875 23.09375 -0.875 Q 15.53125 -0.875 11.671875 3.5625 Q 7.8125 8.015625 7.8125 17 L 7.8125 49.03125 L 16.3125 49.03125 L 16.3125 17.671875 Q 16.3125 6.390625 24.8125 6.390625 Q 26.375 6.390625 27.859375 6.859375 Q 29.34375 7.328125 30.984375 8.46875 Q 32.625 9.625 34.5 11.578125 Q 36.375 13.53125 38.71875 16.5 L 38.71875 49.03125 L 47.21875 49.03125 z \" id=\"Consolas-117\"/>\n",
724" </defs>\n",
725" <use xlink:href=\"#Consolas-117\"/>\n",
726" </g>\n",
727" </g>\n",
728" <g id=\"text_15\">\n",
729" <!-- ( -->\n",
730" <g style=\"fill:#444443;\" transform=\"translate(98.978321 9.451406)scale(0.13 -0.13)\">\n",
731" <defs>\n",
732" <path d=\"M 37.15625 -20.515625 Q 14.65625 0.34375 14.65625 25.59375 Q 14.65625 31.5 15.84375 37.375 Q 17.046875 43.265625 19.703125 49.171875 Q 22.359375 55.078125 26.734375 60.984375 Q 31.109375 66.890625 37.359375 72.703125 L 42.28125 67.671875 Q 23.34375 48.96875 23.34375 26.21875 Q 23.34375 14.890625 28.125 4.4375 Q 32.90625 -6 42.28125 -15.28125 z \" id=\"Consolas-40\"/>\n",
733" </defs>\n",
734" <use xlink:href=\"#Consolas-40\"/>\n",
735" </g>\n",
736" </g>\n",
737" <g id=\"text_16\">\n",
738" <!-- x -->\n",
739" <g style=\"fill:#444443;\" transform=\"translate(105.506921 9.451406)scale(0.13 -0.13)\">\n",
740" <defs>\n",
741" <path d=\"M 52 0 L 40.71875 0 L 27.484375 18.703125 L 14.40625 0 L 3.421875 0 L 22.40625 24.609375 L 4.296875 49.03125 L 15.1875 49.03125 L 28.078125 30.171875 L 40.71875 49.03125 L 51.21875 49.03125 L 32.8125 24.421875 z \" id=\"Consolas-120\"/>\n",
742" </defs>\n",
743" <use xlink:href=\"#Consolas-120\"/>\n",
744" </g>\n",
745" </g>\n",
746" <g id=\"text_17\">\n",
747" <!-- ) -->\n",
748" <g style=\"fill:#444443;\" transform=\"translate(112.035521 9.451406)scale(0.13 -0.13)\">\n",
749" <defs>\n",
750" <path d=\"M 17.828125 72.703125 Q 40.328125 51.859375 40.328125 26.3125 Q 40.328125 21.046875 39.25 15.375 Q 38.1875 9.71875 35.59375 3.78125 Q 33.015625 -2.15625 28.640625 -8.25 Q 24.265625 -14.359375 17.625 -20.515625 L 12.703125 -15.484375 Q 22.21875 -6.0625 26.90625 4.1875 Q 31.59375 14.453125 31.59375 25.6875 Q 31.59375 48.921875 12.703125 67.484375 z \" id=\"Consolas-41\"/>\n",
751" </defs>\n",
752" <use xlink:href=\"#Consolas-41\"/>\n",
753" </g>\n",
754" </g>\n",
755" <g id=\"text_18\">\n",
756" <!-- 2k -->\n",
757" <g transform=\"translate(6.442031 38.802528)rotate(-90)scale(0.09 -0.09)\">\n",
758" <defs>\n",
759" <path d=\"M 50.34375 8.453125 L 50.34375 0 L 3.03125 0 Q 2.9375 3.171875 4.046875 6.109375 Q 5.859375 10.9375 9.828125 15.625 Q 13.8125 20.3125 21.34375 26.46875 Q 33.015625 36.03125 37.109375 41.625 Q 41.21875 47.21875 41.21875 52.203125 Q 41.21875 57.421875 37.46875 61 Q 33.734375 64.59375 27.734375 64.59375 Q 21.390625 64.59375 17.578125 60.78125 Q 13.765625 56.984375 13.71875 50.25 L 4.6875 51.171875 Q 5.609375 61.28125 11.65625 66.578125 Q 17.71875 71.875 27.9375 71.875 Q 38.234375 71.875 44.234375 66.15625 Q 50.25 60.453125 50.25 52 Q 50.25 47.703125 48.484375 43.546875 Q 46.734375 39.40625 42.65625 34.8125 Q 38.578125 30.21875 29.109375 22.21875 Q 21.1875 15.578125 18.9375 13.203125 Q 16.703125 10.84375 15.234375 8.453125 z \" id=\"ArialMT-50\"/>\n",
760" <path d=\"M 6.640625 0 L 6.640625 71.578125 L 15.4375 71.578125 L 15.4375 30.765625 L 36.234375 51.859375 L 47.609375 51.859375 L 27.78125 32.625 L 49.609375 0 L 38.765625 0 L 21.625 26.515625 L 15.4375 20.5625 L 15.4375 0 z \" id=\"ArialMT-107\"/>\n",
761" </defs>\n",
762" <use xlink:href=\"#ArialMT-50\"/>\n",
763" <use x=\"55.615234\" xlink:href=\"#ArialMT-107\"/>\n",
764" </g>\n",
765" </g>\n",
766" <g id=\"text_19\">\n",
767" <!-- 1 -->\n",
768" <g transform=\"translate(8.339799 21.560896)scale(0.09 -0.09)\">\n",
769" <defs>\n",
770" <path d=\"M 37.25 0 L 28.46875 0 L 28.46875 56 Q 25.296875 52.984375 20.140625 49.953125 Q 14.984375 46.921875 10.890625 45.40625 L 10.890625 53.90625 Q 18.265625 57.375 23.78125 62.296875 Q 29.296875 67.234375 31.59375 71.875 L 37.25 71.875 z \" id=\"ArialMT-49\"/>\n",
771" </defs>\n",
772" <use xlink:href=\"#ArialMT-49\"/>\n",
773" </g>\n",
774" </g>\n",
775" <g id=\"text_20\">\n",
776" <!-- 2k -->\n",
777" <g transform=\"translate(104.371031 38.802528)rotate(-90)scale(0.09 -0.09)\">\n",
778" <use xlink:href=\"#ArialMT-50\"/>\n",
779" <use x=\"55.615234\" xlink:href=\"#ArialMT-107\"/>\n",
780" </g>\n",
781" </g>\n",
782" <g id=\"text_21\">\n",
783" <!-- 1 -->\n",
784" <g transform=\"translate(106.268799 21.560896)scale(0.09 -0.09)\">\n",
785" <use xlink:href=\"#ArialMT-49\"/>\n",
786" </g>\n",
787" </g>\n",
788" </g>\n",
789" </g>\n",
790" <defs>\n",
791" <clipPath id=\"pf600d03959\">\n",
792" <rect height=\"41.491069\" width=\"117.9612\" x=\"0.602921\" y=\"4.504646\"/>\n",
793" </clipPath>\n",
794" </defs>\n",
795"</svg>"
796],
797"text/plain": [
798"<IPython.core.display.SVG object>"
799]
800},
801"metadata": {},
802"output_type": "display_data"
803},
804{
805"data": {
806"image/svg+xml": [
807"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" height=\"45.995716pt\" version=\"1.1\" viewBox=\"0 0 239.96259 45.995716\" width=\"239.96259pt\">\n",
808" <metadata>\n",
809" <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n",
810" <cc:Work>\n",
811" <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n",
812" <dc:date>2021-09-29T16:51:10.302494</dc:date>\n",
813" <dc:format>image/svg+xml</dc:format>\n",
814" <dc:creator>\n",
815" <cc:Agent>\n",
816" <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>\n",
817" </cc:Agent>\n",
818" </dc:creator>\n",
819" </cc:Work>\n",
820" </rdf:RDF>\n",
821" </metadata>\n",
822" <defs>\n",
823" <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n",
824" </defs>\n",
825" <g id=\"figure_1\">\n",
826" <g id=\"patch_1\">\n",
827" <path d=\"M 0 45.995716 L 239.96259 45.995716 L 239.96259 0 L 0 0 z \" style=\"fill:none;\"/>\n",
828" </g>\n",
829" <g id=\"axes_1\">\n",
830" <g id=\"patch_2\">\n",
831" <path clip-path=\"url(#pd89de14d64)\" d=\"M 8.230781 45.180316 L 13.453661 45.180316 L 13.453661 22.919896 L 8.230781 22.919896 z \" style=\"fill:#cfe2d4;stroke:#808080;stroke-linejoin:miter;stroke-width:0.7;\"/>\n",
832" </g>\n",
833" <g id=\"patch_3\">\n",
834" <path clip-path=\"url(#pd89de14d64)\" d=\"M 33.692321 45.180316 L 56.542421 45.180316 L 56.542421 22.919896 L 33.692321 22.919896 z \" style=\"fill:#cfe2d4;stroke:#808080;stroke-linejoin:miter;stroke-width:0.7;\"/>\n",
835" </g>\n",
836" <g id=\"patch_4\">\n",
837" <path clip-path=\"url(#pd89de14d64)\" d=\"M 76.781081 45.180316 L 82.003961 45.180316 L 82.003961 22.919896 L 76.781081 22.919896 z \" style=\"fill:#cfe2d4;stroke:#808080;stroke-linejoin:miter;stroke-width:0.7;\"/>\n",
838" </g>\n",
839" <g id=\"patch_5\">\n",
840" <path clip-path=\"url(#pd89de14d64)\" d=\"M 102.895481 45.180316 L 108.118361 45.180316 L 108.118361 22.919896 L 102.895481 22.919896 z \" style=\"fill:#cfe2d4;stroke:#808080;stroke-linejoin:miter;stroke-width:0.7;\"/>\n",
841" </g>\n",
842" <g id=\"patch_6\">\n",
843" <path clip-path=\"url(#pd89de14d64)\" d=\"M 154.471421 28.007992 L 177.321521 28.007992 L 177.321521 22.919896 L 154.471421 22.919896 z \" style=\"fill:#fefecd;stroke:#808080;stroke-linejoin:miter;stroke-width:0.7;\"/>\n",
844" </g>\n",
845" <g id=\"patch_7\">\n",
846" <path clip-path=\"url(#pd89de14d64)\" d=\"M 209.964521 28.007992 L 232.814621 28.007992 L 232.814621 22.919896 L 209.964521 22.919896 z \" style=\"fill:#fefecd;stroke:#808080;stroke-linejoin:miter;stroke-width:0.7;\"/>\n",
847" </g>\n",
848" <g id=\"line2d_1\">\n",
849" <path clip-path=\"url(#pd89de14d64)\" d=\"M 6.925061 13.192653 L 14.759381 13.192653 \" style=\"fill:none;stroke:#c2c2c2;stroke-linecap:square;stroke-width:0.5;\"/>\n",
850" </g>\n",
851" <g id=\"line2d_2\">\n",
852" <path clip-path=\"url(#pd89de14d64)\" d=\"M 41.200211 13.192653 L 49.034531 13.192653 \" style=\"fill:none;stroke:#c2c2c2;stroke-linecap:square;stroke-width:0.5;\"/>\n",
853" </g>\n",
854" <g id=\"line2d_3\">\n",
855" <path clip-path=\"url(#pd89de14d64)\" d=\"M 75.475361 13.192653 L 83.309681 13.192653 \" style=\"fill:none;stroke:#c2c2c2;stroke-linecap:square;stroke-width:0.5;\"/>\n",
856" </g>\n",
857" <g id=\"line2d_4\">\n",
858" <path clip-path=\"url(#pd89de14d64)\" d=\"M 101.589761 13.192653 L 109.424081 13.192653 \" style=\"fill:none;stroke:#c2c2c2;stroke-linecap:square;stroke-width:0.5;\"/>\n",
859" </g>\n",
860" <g id=\"line2d_5\">\n",
861" <path clip-path=\"url(#pd89de14d64)\" d=\"M 161.979311 13.192653 L 169.813631 13.192653 \" style=\"fill:none;stroke:#c2c2c2;stroke-linecap:square;stroke-width:0.5;\"/>\n",
862" </g>\n",
863" <g id=\"line2d_6\">\n",
864" <path clip-path=\"url(#pd89de14d64)\" d=\"M 217.472411 13.192653 L 225.306731 13.192653 \" style=\"fill:none;stroke:#c2c2c2;stroke-linecap:square;stroke-width:0.5;\"/>\n",
865" </g>\n",
866" <g id=\"text_1\">\n",
867" <!-- b -->\n",
868" <g style=\"fill:#444443;\" transform=\"translate(7.577921 9.451406)scale(0.13 -0.13)\">\n",
869" <defs>\n",
870" <path d=\"M 49.703125 25.390625 Q 49.703125 19.28125 48.015625 14.46875 Q 46.34375 9.671875 43.234375 6.328125 Q 40.140625 2.984375 35.6875 1.1875 Q 31.25 -0.59375 25.6875 -0.59375 Q 21.34375 -0.59375 16.796875 0.234375 Q 12.25 1.078125 7.8125 2.875 L 7.8125 69 L 16.3125 69 L 16.3125 50 L 15.921875 40.921875 Q 19.578125 45.84375 23.75 47.875 Q 27.9375 49.90625 32.71875 49.90625 Q 36.921875 49.90625 40.09375 48.140625 Q 43.265625 46.390625 45.40625 43.1875 Q 47.5625 39.984375 48.625 35.46875 Q 49.703125 30.953125 49.703125 25.390625 z M 41.015625 25 Q 41.015625 28.859375 40.453125 32.078125 Q 39.890625 35.296875 38.671875 37.59375 Q 37.453125 39.890625 35.546875 41.1875 Q 33.640625 42.484375 31 42.484375 Q 29.390625 42.484375 27.734375 41.96875 Q 26.078125 41.453125 24.296875 40.25 Q 22.515625 39.0625 20.53125 37.078125 Q 18.5625 35.109375 16.3125 32.171875 L 16.3125 8.40625 Q 18.796875 7.421875 21.375 6.859375 Q 23.96875 6.296875 26.3125 6.296875 Q 29.25 6.296875 31.90625 7.21875 Q 34.578125 8.15625 36.59375 10.328125 Q 38.625 12.5 39.8125 16.078125 Q 41.015625 19.671875 41.015625 25 z \" id=\"Consolas-98\"/>\n",
871" </defs>\n",
872" <use xlink:href=\"#Consolas-98\"/>\n",
873" </g>\n",
874" </g>\n",
875" <g id=\"text_2\">\n",
876" <!-- -->\n",
877" <g style=\"fill:#444443;\" transform=\"translate(14.106521 9.451406)scale(0.13 -0.13)\">\n",
878" <defs>\n",
879" <path id=\"Consolas-32\"/>\n",
880" </defs>\n",
881" <use xlink:href=\"#Consolas-32\"/>\n",
882" </g>\n",
883" </g>\n",
884" <g id=\"text_3\">\n",
885" <!-- = -->\n",
886" <g style=\"fill:#444443;\" transform=\"translate(20.635121 9.451406)scale(0.13 -0.13)\">\n",
887" <defs>\n",
888" <path d=\"M 48.484375 31.546875 L 6.5 31.546875 L 6.5 38.71875 L 48.484375 38.71875 z M 48.484375 14.546875 L 6.5 14.546875 L 6.5 21.734375 L 48.484375 21.734375 z \" id=\"Consolas-61\"/>\n",
889" </defs>\n",
890" <use xlink:href=\"#Consolas-61\"/>\n",
891" </g>\n",
892" </g>\n",
893" <g id=\"text_4\">\n",
894" <!-- -->\n",
895" <g style=\"fill:#444443;\" transform=\"translate(27.163721 9.451406)scale(0.13 -0.13)\">\n",
896" <use xlink:href=\"#Consolas-32\"/>\n",
897" </g>\n",
898" </g>\n",
899" <g id=\"text_5\">\n",
900" <!-- W -->\n",
901" <g style=\"fill:#444443;\" transform=\"translate(41.853071 9.451406)scale(0.13 -0.13)\">\n",
902" <defs>\n",
903" <path d=\"M 52.78125 63.8125 L 48.484375 0 L 37.203125 0 L 29.296875 22.703125 L 27.09375 29.984375 L 24.8125 22.125 L 17.484375 0 L 6.59375 0 L 2.203125 63.8125 L 10.40625 63.8125 L 12.890625 20.40625 L 13.625 8.5 L 16.703125 18.609375 L 24.421875 42.28125 L 30.421875 42.28125 L 39.3125 16.890625 L 42.28125 8.5 L 42.484375 17.28125 L 45.015625 63.8125 z \" id=\"Consolas-87\"/>\n",
904" </defs>\n",
905" <use xlink:href=\"#Consolas-87\"/>\n",
906" </g>\n",
907" </g>\n",
908" <g id=\"text_6\">\n",
909" <!-- -->\n",
910" <g style=\"fill:#444443;\" transform=\"translate(56.542421 9.451406)scale(0.13 -0.13)\">\n",
911" <use xlink:href=\"#Consolas-32\"/>\n",
912" </g>\n",
913" </g>\n",
914" <g id=\"text_7\">\n",
915" <!-- @ -->\n",
916" <g style=\"fill:#444443;\" transform=\"translate(63.071021 9.451406)scale(0.13 -0.13)\">\n",
917" <defs>\n",
918" <path d=\"M 38.09375 19.921875 Q 37.640625 16.796875 37.59375 14.75 Q 37.546875 12.703125 37.859375 11.53125 Q 38.1875 10.359375 38.859375 9.890625 Q 39.546875 9.421875 40.578125 9.421875 Q 41.9375 9.421875 43.15625 10.859375 Q 44.390625 12.3125 45.34375 15.3125 Q 46.296875 18.3125 46.84375 22.890625 Q 47.40625 27.484375 47.40625 33.796875 Q 47.40625 40.828125 46.53125 46.34375 Q 45.65625 51.859375 43.75 55.71875 Q 41.84375 59.578125 38.796875 61.59375 Q 35.75 63.625 31.390625 63.625 Q 28.078125 63.625 24.96875 61.9375 Q 21.875 60.25 19.203125 57.203125 Q 16.546875 54.15625 14.375 49.875 Q 12.203125 45.609375 10.65625 40.421875 Q 9.125 35.25 8.265625 29.296875 Q 7.421875 23.34375 7.421875 16.890625 Q 7.421875 1.171875 12.15625 -6.5625 Q 16.890625 -14.3125 25.484375 -14.3125 Q 29.828125 -14.3125 33.59375 -13.3125 Q 37.359375 -12.3125 41.40625 -10.296875 L 41.40625 -16.609375 Q 37.40625 -18.453125 33.390625 -19.375 Q 29.390625 -20.3125 25 -20.3125 Q 12.546875 -20.3125 6.5625 -10.984375 Q 0.59375 -1.65625 0.484375 16.796875 Q 0.4375 24.171875 1.453125 30.9375 Q 2.484375 37.703125 4.40625 43.5625 Q 6.34375 49.421875 9.09375 54.21875 Q 11.859375 59.03125 15.34375 62.421875 Q 18.84375 65.828125 22.9375 67.703125 Q 27.046875 69.578125 31.6875 69.578125 Q 37.5 69.578125 41.765625 67.203125 Q 46.046875 64.84375 48.828125 60.375 Q 51.609375 55.90625 52.953125 49.40625 Q 54.296875 42.921875 54.296875 34.625 Q 54.25 26.21875 53.203125 20.234375 Q 52.15625 14.265625 50.25 10.453125 Q 48.34375 6.640625 45.625 4.859375 Q 42.921875 3.078125 39.59375 3.078125 Q 35.796875 3.078125 33.9375 5.03125 Q 32.078125 6.984375 32.078125 10.296875 Q 30.21875 6.546875 28.0625 4.8125 Q 25.921875 3.078125 22.90625 3.078125 Q 18.3125 3.078125 16.015625 6.515625 Q 13.71875 9.96875 13.71875 17.390625 Q 13.71875 20.0625 14.03125 23.140625 Q 14.359375 26.21875 15.109375 29.3125 Q 15.875 32.421875 17.09375 35.28125 Q 18.3125 38.140625 20.09375 40.3125 Q 21.875 42.484375 24.3125 43.796875 Q 26.765625 45.125 29.890625 45.125 Q 31.734375 45.125 33.34375 44.671875 Q 34.96875 44.234375 35.6875 43.796875 L 42 45.3125 z M 33.109375 37.3125 Q 32.671875 37.890625 31.765625 38.34375 Q 30.859375 38.8125 29.5 38.8125 Q 28.03125 38.8125 26.859375 37.78125 Q 25.6875 36.765625 24.78125 35.046875 Q 23.875 33.34375 23.265625 31.171875 Q 22.65625 29 22.234375 26.703125 Q 21.828125 24.421875 21.65625 22.1875 Q 21.484375 19.96875 21.484375 18.21875 Q 21.484375 13.53125 22.0625 11.46875 Q 22.65625 9.421875 24.3125 9.421875 Q 24.90625 9.421875 25.484375 9.65625 Q 26.078125 9.90625 26.734375 10.609375 Q 27.390625 11.328125 28.171875 12.59375 Q 28.953125 13.875 29.890625 15.921875 z \" id=\"Consolas-64\"/>\n",
919" </defs>\n",
920" <use xlink:href=\"#Consolas-64\"/>\n",
921" </g>\n",
922" </g>\n",
923" <g id=\"text_8\">\n",
924" <!-- -->\n",
925" <g style=\"fill:#444443;\" transform=\"translate(69.599621 9.451406)scale(0.13 -0.13)\">\n",
926" <use xlink:href=\"#Consolas-32\"/>\n",
927" </g>\n",
928" </g>\n",
929" <g id=\"text_9\">\n",
930" <!-- b -->\n",
931" <g style=\"fill:#444443;\" transform=\"translate(76.128221 9.451406)scale(0.13 -0.13)\">\n",
932" <use xlink:href=\"#Consolas-98\"/>\n",
933" </g>\n",
934" </g>\n",
935" <g id=\"text_10\">\n",
936" <!-- -->\n",
937" <g style=\"fill:#444443;\" transform=\"translate(82.656821 9.451406)scale(0.13 -0.13)\">\n",
938" <use xlink:href=\"#Consolas-32\"/>\n",
939" </g>\n",
940" </g>\n",
941" <g id=\"text_11\">\n",
942" <!-- + -->\n",
943" <g style=\"fill:#444443;\" transform=\"translate(89.185421 9.451406)scale(0.13 -0.13)\">\n",
944" <defs>\n",
945" <path d=\"M 50.875 22.90625 L 31.6875 22.90625 L 31.6875 2.984375 L 23.296875 2.984375 L 23.296875 22.90625 L 4.109375 22.90625 L 4.109375 30.328125 L 23.296875 30.328125 L 23.296875 50.09375 L 31.6875 50.09375 L 31.6875 30.328125 L 50.875 30.328125 z \" id=\"Consolas-43\"/>\n",
946" </defs>\n",
947" <use xlink:href=\"#Consolas-43\"/>\n",
948" </g>\n",
949" </g>\n",
950" <g id=\"text_12\">\n",
951" <!-- -->\n",
952" <g style=\"fill:#444443;\" transform=\"translate(95.714021 9.451406)scale(0.13 -0.13)\">\n",
953" <use xlink:href=\"#Consolas-32\"/>\n",
954" </g>\n",
955" </g>\n",
956" <g id=\"text_13\">\n",
957" <!-- x -->\n",
958" <g style=\"fill:#444443;\" transform=\"translate(102.242621 9.451406)scale(0.13 -0.13)\">\n",
959" <defs>\n",
960" <path d=\"M 52 0 L 40.71875 0 L 27.484375 18.703125 L 14.40625 0 L 3.421875 0 L 22.40625 24.609375 L 4.296875 49.03125 L 15.1875 49.03125 L 28.078125 30.171875 L 40.71875 49.03125 L 51.21875 49.03125 L 32.8125 24.421875 z \" id=\"Consolas-120\"/>\n",
961" </defs>\n",
962" <use xlink:href=\"#Consolas-120\"/>\n",
963" </g>\n",
964" </g>\n",
965" <g id=\"text_14\">\n",
966" <!-- -->\n",
967" <g style=\"fill:#444443;\" transform=\"translate(108.771221 9.451406)scale(0.13 -0.13)\">\n",
968" <use xlink:href=\"#Consolas-32\"/>\n",
969" </g>\n",
970" </g>\n",
971" <g id=\"text_15\">\n",
972" <!-- * -->\n",
973" <g style=\"fill:#444443;\" transform=\"translate(115.299821 9.451406)scale(0.13 -0.13)\">\n",
974" <defs>\n",
975" <path d=\"M 46.921875 41.015625 L 43.609375 35.203125 L 29.890625 44.28125 L 31 27.59375 L 24.03125 27.59375 L 25.09375 44.28125 L 11.078125 35.203125 L 8.015625 40.921875 L 23 48.296875 L 8.015625 55.8125 L 11.375 61.53125 L 25.203125 52.296875 L 24.03125 69 L 31 69 L 29.78125 52.296875 L 43.609375 61.625 L 47.015625 55.609375 L 31.984375 48.1875 z \" id=\"Consolas-42\"/>\n",
976" </defs>\n",
977" <use xlink:href=\"#Consolas-42\"/>\n",
978" </g>\n",
979" </g>\n",
980" <g id=\"text_16\">\n",
981" <!-- -->\n",
982" <g style=\"fill:#444443;\" transform=\"translate(121.828421 9.451406)scale(0.13 -0.13)\">\n",
983" <use xlink:href=\"#Consolas-32\"/>\n",
984" </g>\n",
985" </g>\n",
986" <g id=\"text_17\">\n",
987" <!-- 3 -->\n",
988" <g style=\"fill:#444443;\" transform=\"translate(128.357021 9.451406)scale(0.13 -0.13)\">\n",
989" <defs>\n",
990" <path d=\"M 48 19.390625 Q 48 15.1875 46.28125 11.5 Q 44.578125 7.8125 41.15625 5.046875 Q 37.75 2.296875 32.5625 0.703125 Q 27.390625 -0.875 20.515625 -0.875 Q 16.703125 -0.875 13.671875 -0.625 Q 10.640625 -0.390625 8.015625 0 L 8.015625 7.625 Q 11.03125 7.078125 14.40625 6.78125 Q 17.78125 6.5 21.296875 6.5 Q 26.078125 6.5 29.46875 7.34375 Q 32.859375 8.203125 35 9.8125 Q 37.15625 11.421875 38.125 13.71875 Q 39.109375 16.015625 39.109375 18.890625 Q 39.109375 21.53125 37.9375 23.484375 Q 36.765625 25.4375 34.640625 26.75 Q 32.515625 28.078125 29.5625 28.734375 Q 26.609375 29.390625 23.09375 29.390625 L 15.828125 29.390625 L 15.828125 36.375 L 23.1875 36.375 Q 26.078125 36.375 28.4375 37.125 Q 30.8125 37.890625 32.5 39.296875 Q 34.1875 40.71875 35.078125 42.796875 Q 35.984375 44.875 35.984375 47.515625 Q 35.984375 52.640625 32.859375 54.984375 Q 29.734375 57.328125 23.6875 57.328125 Q 20.453125 57.328125 17.03125 56.6875 Q 13.625 56.0625 9.71875 54.78125 L 9.71875 62.203125 Q 11.375 62.796875 13.25 63.25 Q 15.140625 63.71875 17.015625 64.03125 Q 18.890625 64.359375 20.75 64.53125 Q 22.609375 64.703125 24.3125 64.703125 Q 29.390625 64.703125 33.25 63.59375 Q 37.109375 62.5 39.6875 60.453125 Q 42.28125 58.40625 43.59375 55.46875 Q 44.921875 52.546875 44.921875 48.875 Q 44.921875 43.40625 42.109375 39.6875 Q 39.3125 35.984375 34.421875 33.796875 Q 36.921875 33.40625 39.328125 32.234375 Q 41.75 31.0625 43.671875 29.21875 Q 45.609375 27.390625 46.796875 24.890625 Q 48 22.40625 48 19.390625 z \" id=\"Consolas-51\"/>\n",
991" </defs>\n",
992" <use xlink:href=\"#Consolas-51\"/>\n",
993" </g>\n",
994" </g>\n",
995" <g id=\"text_18\">\n",
996" <!-- -->\n",
997" <g style=\"fill:#444443;\" transform=\"translate(134.885621 9.451406)scale(0.13 -0.13)\">\n",
998" <use xlink:href=\"#Consolas-32\"/>\n",
999" </g>\n",
1000" </g>\n",
1001" <g id=\"text_19\">\n",
1002" <!-- + -->\n",
1003" <g style=\"fill:#444443;\" transform=\"translate(141.414221 9.451406)scale(0.13 -0.13)\">\n",
1004" <use xlink:href=\"#Consolas-43\"/>\n",
1005" </g>\n",
1006" </g>\n",
1007" <g id=\"text_20\">\n",
1008" <!-- -->\n",
1009" <g style=\"fill:#444443;\" transform=\"translate(147.942821 9.451406)scale(0.13 -0.13)\">\n",
1010" <use xlink:href=\"#Consolas-32\"/>\n",
1011" </g>\n",
1012" </g>\n",
1013" <g id=\"text_21\">\n",
1014" <!-- h -->\n",
1015" <g style=\"fill:#444443;\" transform=\"translate(162.632171 9.451406)scale(0.13 -0.13)\">\n",
1016" <defs>\n",
1017" <path d=\"M 47.21875 0 L 38.71875 0 L 38.71875 31.296875 Q 38.71875 36.96875 36.59375 39.765625 Q 34.46875 42.578125 30.515625 42.578125 Q 28.8125 42.578125 27.3125 42.109375 Q 25.828125 41.65625 24.21875 40.5 Q 22.609375 39.359375 20.703125 37.40625 Q 18.796875 35.453125 16.3125 32.515625 L 16.3125 0 L 7.8125 0 L 7.8125 69 L 16.3125 69 L 16.3125 49.03125 L 16.015625 41.3125 Q 18.015625 43.703125 19.9375 45.328125 Q 21.875 46.96875 23.796875 48 Q 25.734375 49.03125 27.734375 49.46875 Q 29.734375 49.90625 31.890625 49.90625 Q 39.203125 49.90625 43.203125 45.4375 Q 47.21875 40.96875 47.21875 31.984375 z \" id=\"Consolas-104\"/>\n",
1018" </defs>\n",
1019" <use xlink:href=\"#Consolas-104\"/>\n",
1020" </g>\n",
1021" </g>\n",
1022" <g id=\"text_22\">\n",
1023" <!-- . -->\n",
1024" <g style=\"fill:#444443;\" transform=\"translate(177.321521 9.451406)scale(0.13 -0.13)\">\n",
1025" <defs>\n",
1026" <path d=\"M 27.09375 15.375 Q 28.765625 15.375 30.25 14.734375 Q 31.734375 14.109375 32.828125 12.984375 Q 33.9375 11.859375 34.5625 10.375 Q 35.203125 8.890625 35.203125 7.171875 Q 35.203125 5.515625 34.5625 4.046875 Q 33.9375 2.59375 32.828125 1.484375 Q 31.734375 0.390625 30.25 -0.234375 Q 28.765625 -0.875 27.09375 -0.875 Q 25.390625 -0.875 23.921875 -0.234375 Q 22.46875 0.390625 21.359375 1.484375 Q 20.265625 2.59375 19.625 4.046875 Q 19 5.515625 19 7.171875 Q 19 8.890625 19.625 10.375 Q 20.265625 11.859375 21.359375 12.984375 Q 22.46875 14.109375 23.921875 14.734375 Q 25.390625 15.375 27.09375 15.375 z \" id=\"Consolas-46\"/>\n",
1027" </defs>\n",
1028" <use xlink:href=\"#Consolas-46\"/>\n",
1029" </g>\n",
1030" </g>\n",
1031" <g id=\"text_23\">\n",
1032" <!-- d -->\n",
1033" <g style=\"fill:#444443;\" transform=\"translate(183.850121 9.451406)scale(0.13 -0.13)\">\n",
1034" <defs>\n",
1035" <path d=\"M 5.328125 23.484375 Q 5.328125 29.734375 7.03125 34.59375 Q 8.734375 39.453125 11.890625 42.796875 Q 15.046875 46.140625 19.453125 47.875 Q 23.875 49.609375 29.296875 49.609375 Q 31.640625 49.609375 33.90625 49.3125 Q 36.1875 49.03125 38.375 48.390625 L 38.375 69 L 46.921875 69 L 46.921875 0 L 39.3125 0 L 39.015625 9.28125 Q 35.453125 4.109375 31.296875 1.609375 Q 27.15625 -0.875 22.3125 -0.875 Q 18.109375 -0.875 14.90625 0.875 Q 11.71875 2.640625 9.59375 5.828125 Q 7.46875 9.03125 6.390625 13.515625 Q 5.328125 18.015625 5.328125 23.484375 z M 14.015625 24.03125 Q 14.015625 15.140625 16.625 10.765625 Q 19.234375 6.390625 24.03125 6.390625 Q 27.25 6.390625 30.828125 9.265625 Q 34.421875 12.15625 38.375 17.828125 L 38.375 40.578125 Q 36.28125 41.546875 33.734375 42.0625 Q 31.203125 42.578125 28.71875 42.578125 Q 21.78125 42.578125 17.890625 38.078125 Q 14.015625 33.59375 14.015625 24.03125 z \" id=\"Consolas-100\"/>\n",
1036" </defs>\n",
1037" <use xlink:href=\"#Consolas-100\"/>\n",
1038" </g>\n",
1039" </g>\n",
1040" <g id=\"text_24\">\n",
1041" <!-- o -->\n",
1042" <g style=\"fill:#444443;\" transform=\"translate(190.378721 9.451406)scale(0.13 -0.13)\">\n",
1043" <defs>\n",
1044" <path d=\"M 50.484375 24.90625 Q 50.484375 19.1875 48.875 14.421875 Q 47.265625 9.671875 44.234375 6.265625 Q 41.21875 2.875 36.859375 1 Q 32.515625 -0.875 27 -0.875 Q 21.734375 -0.875 17.546875 0.75 Q 13.375 2.390625 10.46875 5.5625 Q 7.5625 8.734375 6.03125 13.421875 Q 4.5 18.109375 4.5 24.21875 Q 4.5 29.9375 6.109375 34.640625 Q 7.71875 39.359375 10.734375 42.75 Q 13.765625 46.140625 18.109375 48.015625 Q 22.46875 49.90625 27.984375 49.90625 Q 33.25 49.90625 37.421875 48.265625 Q 41.609375 46.625 44.5 43.46875 Q 47.40625 40.328125 48.9375 35.640625 Q 50.484375 30.953125 50.484375 24.90625 z M 41.796875 24.515625 Q 41.796875 29.046875 40.796875 32.4375 Q 39.796875 35.84375 37.9375 38.109375 Q 36.078125 40.375 33.421875 41.515625 Q 30.765625 42.671875 27.484375 42.671875 Q 23.6875 42.671875 20.96875 41.1875 Q 18.265625 39.703125 16.53125 37.203125 Q 14.796875 34.71875 13.984375 31.421875 Q 13.1875 28.125 13.1875 24.515625 Q 13.1875 19.96875 14.1875 16.546875 Q 15.1875 13.140625 17.03125 10.859375 Q 18.890625 8.59375 21.53125 7.4375 Q 24.171875 6.296875 27.484375 6.296875 Q 31.296875 6.296875 34 7.78125 Q 36.71875 9.28125 38.453125 11.765625 Q 40.1875 14.265625 40.984375 17.546875 Q 41.796875 20.84375 41.796875 24.515625 z \" id=\"Consolas-111\"/>\n",
1045" </defs>\n",
1046" <use xlink:href=\"#Consolas-111\"/>\n",
1047" </g>\n",
1048" </g>\n",
1049" <g id=\"text_25\">\n",
1050" <!-- t -->\n",
1051" <g style=\"fill:#444443;\" transform=\"translate(196.907321 9.451406)scale(0.13 -0.13)\">\n",
1052" <defs>\n",
1053" <path d=\"M 47.3125 0.6875 Q 44.4375 -0.046875 41.359375 -0.359375 Q 38.28125 -0.6875 35.109375 -0.6875 Q 25.875 -0.6875 21.328125 3.484375 Q 16.796875 7.671875 16.796875 16.3125 L 16.796875 41.890625 L 3.078125 41.890625 L 3.078125 49.03125 L 16.796875 49.03125 L 16.796875 62.5 L 25.296875 64.703125 L 25.296875 49.03125 L 47.3125 49.03125 L 47.3125 41.890625 L 25.296875 41.890625 L 25.296875 17 Q 25.296875 11.71875 28.09375 9.109375 Q 30.90625 6.5 36.375 6.5 Q 38.71875 6.5 41.5 6.859375 Q 44.28125 7.234375 47.3125 8.015625 z \" id=\"Consolas-116\"/>\n",
1054" </defs>\n",
1055" <use xlink:href=\"#Consolas-116\"/>\n",
1056" </g>\n",
1057" </g>\n",
1058" <g id=\"text_26\">\n",
1059" <!-- ( -->\n",
1060" <g style=\"fill:#444443;\" transform=\"translate(203.435921 9.451406)scale(0.13 -0.13)\">\n",
1061" <defs>\n",
1062" <path d=\"M 37.15625 -20.515625 Q 14.65625 0.34375 14.65625 25.59375 Q 14.65625 31.5 15.84375 37.375 Q 17.046875 43.265625 19.703125 49.171875 Q 22.359375 55.078125 26.734375 60.984375 Q 31.109375 66.890625 37.359375 72.703125 L 42.28125 67.671875 Q 23.34375 48.96875 23.34375 26.21875 Q 23.34375 14.890625 28.125 4.4375 Q 32.90625 -6 42.28125 -15.28125 z \" id=\"Consolas-40\"/>\n",
1063" </defs>\n",
1064" <use xlink:href=\"#Consolas-40\"/>\n",
1065" </g>\n",
1066" </g>\n",
1067" <g id=\"text_27\">\n",
1068" <!-- h -->\n",
1069" <g style=\"fill:#444443;\" transform=\"translate(218.125271 9.451406)scale(0.13 -0.13)\">\n",
1070" <use xlink:href=\"#Consolas-104\"/>\n",
1071" </g>\n",
1072" </g>\n",
1073" <g id=\"text_28\">\n",
1074" <!-- ) -->\n",
1075" <g style=\"fill:#444443;\" transform=\"translate(232.814621 9.451406)scale(0.13 -0.13)\">\n",
1076" <defs>\n",
1077" <path d=\"M 17.828125 72.703125 Q 40.328125 51.859375 40.328125 26.3125 Q 40.328125 21.046875 39.25 15.375 Q 38.1875 9.71875 35.59375 3.78125 Q 33.015625 -2.15625 28.640625 -8.25 Q 24.265625 -14.359375 17.625 -20.515625 L 12.703125 -15.484375 Q 22.21875 -6.0625 26.90625 4.1875 Q 31.59375 14.453125 31.59375 25.6875 Q 31.59375 48.921875 12.703125 67.484375 z \" id=\"Consolas-41\"/>\n",
1078" </defs>\n",
1079" <use xlink:href=\"#Consolas-41\"/>\n",
1080" </g>\n",
1081" </g>\n",
1082" <g id=\"text_29\">\n",
1083" <!-- 2k -->\n",
1084" <g transform=\"translate(6.442031 38.802528)rotate(-90)scale(0.09 -0.09)\">\n",
1085" <defs>\n",
1086" <path d=\"M 50.34375 8.453125 L 50.34375 0 L 3.03125 0 Q 2.9375 3.171875 4.046875 6.109375 Q 5.859375 10.9375 9.828125 15.625 Q 13.8125 20.3125 21.34375 26.46875 Q 33.015625 36.03125 37.109375 41.625 Q 41.21875 47.21875 41.21875 52.203125 Q 41.21875 57.421875 37.46875 61 Q 33.734375 64.59375 27.734375 64.59375 Q 21.390625 64.59375 17.578125 60.78125 Q 13.765625 56.984375 13.71875 50.25 L 4.6875 51.171875 Q 5.609375 61.28125 11.65625 66.578125 Q 17.71875 71.875 27.9375 71.875 Q 38.234375 71.875 44.234375 66.15625 Q 50.25 60.453125 50.25 52 Q 50.25 47.703125 48.484375 43.546875 Q 46.734375 39.40625 42.65625 34.8125 Q 38.578125 30.21875 29.109375 22.21875 Q 21.1875 15.578125 18.9375 13.203125 Q 16.703125 10.84375 15.234375 8.453125 z \" id=\"ArialMT-50\"/>\n",
1087" <path d=\"M 6.640625 0 L 6.640625 71.578125 L 15.4375 71.578125 L 15.4375 30.765625 L 36.234375 51.859375 L 47.609375 51.859375 L 27.78125 32.625 L 49.609375 0 L 38.765625 0 L 21.625 26.515625 L 15.4375 20.5625 L 15.4375 0 z \" id=\"ArialMT-107\"/>\n",
1088" </defs>\n",
1089" <use xlink:href=\"#ArialMT-50\"/>\n",
1090" <use x=\"55.615234\" xlink:href=\"#ArialMT-107\"/>\n",
1091" </g>\n",
1092" </g>\n",
1093" <g id=\"text_30\">\n",
1094" <!-- 1 -->\n",
1095" <g transform=\"translate(8.339799 21.560896)scale(0.09 -0.09)\">\n",
1096" <defs>\n",
1097" <path d=\"M 37.25 0 L 28.46875 0 L 28.46875 56 Q 25.296875 52.984375 20.140625 49.953125 Q 14.984375 46.921875 10.890625 45.40625 L 10.890625 53.90625 Q 18.265625 57.375 23.78125 62.296875 Q 29.296875 67.234375 31.59375 71.875 L 37.25 71.875 z \" id=\"ArialMT-49\"/>\n",
1098" </defs>\n",
1099" <use xlink:href=\"#ArialMT-49\"/>\n",
1100" </g>\n",
1101" </g>\n",
1102" <g id=\"text_31\">\n",
1103" <!-- 2k -->\n",
1104" <g transform=\"translate(31.903571 38.802528)rotate(-90)scale(0.09 -0.09)\">\n",
1105" <use xlink:href=\"#ArialMT-50\"/>\n",
1106" <use x=\"55.615234\" xlink:href=\"#ArialMT-107\"/>\n",
1107" </g>\n",
1108" </g>\n",
1109" <g id=\"text_32\">\n",
1110" <!-- 2k -->\n",
1111" <g transform=\"translate(40.364949 21.560896)scale(0.09 -0.09)\">\n",
1112" <use xlink:href=\"#ArialMT-50\"/>\n",
1113" <use x=\"55.615234\" xlink:href=\"#ArialMT-107\"/>\n",
1114" </g>\n",
1115" </g>\n",
1116" <g id=\"text_33\">\n",
1117" <!-- 2k -->\n",
1118" <g transform=\"translate(74.992331 38.802528)rotate(-90)scale(0.09 -0.09)\">\n",
1119" <use xlink:href=\"#ArialMT-50\"/>\n",
1120" <use x=\"55.615234\" xlink:href=\"#ArialMT-107\"/>\n",
1121" </g>\n",
1122" </g>\n",
1123" <g id=\"text_34\">\n",
1124" <!-- 1 -->\n",
1125" <g transform=\"translate(76.890099 21.560896)scale(0.09 -0.09)\">\n",
1126" <use xlink:href=\"#ArialMT-49\"/>\n",
1127" </g>\n",
1128" </g>\n",
1129" <g id=\"text_35\">\n",
1130" <!-- 2k -->\n",
1131" <g transform=\"translate(101.106731 38.802528)rotate(-90)scale(0.09 -0.09)\">\n",
1132" <use xlink:href=\"#ArialMT-50\"/>\n",
1133" <use x=\"55.615234\" xlink:href=\"#ArialMT-107\"/>\n",
1134" </g>\n",
1135" </g>\n",
1136" <g id=\"text_36\">\n",
1137" <!-- 1 -->\n",
1138" <g transform=\"translate(103.004499 21.560896)scale(0.09 -0.09)\">\n",
1139" <use xlink:href=\"#ArialMT-49\"/>\n",
1140" </g>\n",
1141" </g>\n",
1142" <g id=\"text_37\">\n",
1143" <!-- 1m -->\n",
1144" <g transform=\"translate(159.64569 21.560896)scale(0.09 -0.09)\">\n",
1145" <defs>\n",
1146" <path d=\"M 6.59375 0 L 6.59375 51.859375 L 14.453125 51.859375 L 14.453125 44.578125 Q 16.890625 48.390625 20.9375 50.703125 Q 25 53.03125 30.171875 53.03125 Q 35.9375 53.03125 39.625 50.640625 Q 43.3125 48.25 44.828125 43.953125 Q 50.984375 53.03125 60.84375 53.03125 Q 68.5625 53.03125 72.703125 48.75 Q 76.859375 44.484375 76.859375 35.59375 L 76.859375 0 L 68.109375 0 L 68.109375 32.671875 Q 68.109375 37.9375 67.25 40.25 Q 66.40625 42.578125 64.15625 43.984375 Q 61.921875 45.40625 58.890625 45.40625 Q 53.421875 45.40625 49.796875 41.765625 Q 46.1875 38.140625 46.1875 30.125 L 46.1875 0 L 37.40625 0 L 37.40625 33.6875 Q 37.40625 39.546875 35.25 42.46875 Q 33.109375 45.40625 28.21875 45.40625 Q 24.515625 45.40625 21.359375 43.453125 Q 18.21875 41.5 16.796875 37.734375 Q 15.375 33.984375 15.375 26.90625 L 15.375 0 z \" id=\"ArialMT-109\"/>\n",
1147" </defs>\n",
1148" <use xlink:href=\"#ArialMT-49\"/>\n",
1149" <use x=\"55.615234\" xlink:href=\"#ArialMT-109\"/>\n",
1150" </g>\n",
1151" </g>\n",
1152" <g id=\"text_38\">\n",
1153" <!-- 1m -->\n",
1154" <g transform=\"translate(215.13879 21.560896)scale(0.09 -0.09)\">\n",
1155" <use xlink:href=\"#ArialMT-49\"/>\n",
1156" <use x=\"55.615234\" xlink:href=\"#ArialMT-109\"/>\n",
1157" </g>\n",
1158" </g>\n",
1159" </g>\n",
1160" </g>\n",
1161" <defs>\n",
1162" <clipPath id=\"pd89de14d64\">\n",
1163" <rect height=\"41.491069\" width=\"238.7403\" x=\"0.602921\" y=\"4.504646\"/>\n",
1164" </clipPath>\n",
1165" </defs>\n",
1166"</svg>"
1167],
1168"text/plain": [
1169"<IPython.core.display.SVG object>"
1170]
1171},
1172"metadata": {},
1173"output_type": "display_data"
1174}
1175],
1176"source": [
1177"W = torch.rand(size=(2000,2000))\n",
1178"b = torch.rand(size=(2000,1))\n",
1179"h = torch.rand(size=(1_000_000,))\n",
1180"x = torch.rand(size=(2000,1))\n",
1181"\n",
1182"with tsensor.explain():\n",
1183" a = torch.relu(x)\n",
1184" b = W @ b + x * 3 + h.dot(h)"
1185]
1186},
1187{
1188"cell_type": "markdown",
1189"id": "8339f350-8eef-4dd4-9356-685b1192df25",
1190"metadata": {},
1191"source": [
1192"## Abstract syntax tree (AST) with operand shapes"
1193]
1194},
1195{
1196"cell_type": "code",
1197"execution_count": 7,
1198"id": "3adf24ee-a9c2-4cf5-bfa5-2b8cf245d00d",
1199"metadata": {},
1200"outputs": [
1201{
1202"data": {
1203"image/svg+xml": [
1204"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
1205"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
1206" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
1207"<!-- Generated by graphviz version 2.49.1 (20210923.0004)\n",
1208" -->\n",
1209"<!-- Title: G Pages: 1 -->\n",
1210"<svg width=\"343pt\" height=\"302pt\"\n",
1211" viewBox=\"0.00 0.00 343.00 302.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
1212"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 298)\">\n",
1213"<title>G</title>\n",
1214"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-298 339,-298 339,4 -4,4\"/>\n",
1215"<!-- leaf140484086217408 -->\n",
1216"<g id=\"node1\" class=\"node\">\n",
1217"<title>leaf140484086217408</title>\n",
1218"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"7,-294 0,-294 0,-258 7,-258 7,-294\"/>\n",
1219"<text text-anchor=\"start\" x=\"0\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">h</text>\n",
1220"</g>\n",
1221"<!-- leaf140484086218128 -->\n",
1222"<g id=\"node2\" class=\"node\">\n",
1223"<title>leaf140484086218128</title>\n",
1224"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"26.5,-294 8.5,-294 8.5,-258 26.5,-258 26.5,-294\"/>\n",
1225"<text text-anchor=\"start\" x=\"14\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">=</text>\n",
1226"</g>\n",
1227"<!-- leaf140484086217408->leaf140484086218128 -->\n",
1228"<!-- leaf140484086218416 -->\n",
1229"<g id=\"node3\" class=\"node\">\n",
1230"<title>leaf140484086218416</title>\n",
1231"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"61,-294 28,-294 28,-258 61,-258 61,-294\"/>\n",
1232"<text text-anchor=\"start\" x=\"28\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">torch</text>\n",
1233"</g>\n",
1234"<!-- leaf140484086218128->leaf140484086218416 -->\n",
1235"<!-- leaf140484086218464 -->\n",
1236"<g id=\"node4\" class=\"node\">\n",
1237"<title>leaf140484086218464</title>\n",
1238"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"69,-294 62,-294 62,-258 69,-258 69,-294\"/>\n",
1239"<text text-anchor=\"start\" x=\"62\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">.</text>\n",
1240"</g>\n",
1241"<!-- leaf140484086218416->leaf140484086218464 -->\n",
1242"<!-- leaf140484086218224 -->\n",
1243"<g id=\"node5\" class=\"node\">\n",
1244"<title>leaf140484086218224</title>\n",
1245"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"97,-294 70,-294 70,-258 97,-258 97,-294\"/>\n",
1246"<text text-anchor=\"start\" x=\"70\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">tanh</text>\n",
1247"</g>\n",
1248"<!-- leaf140484086218464->leaf140484086218224 -->\n",
1249"<!-- leaf140484086218512 -->\n",
1250"<g id=\"node6\" class=\"node\">\n",
1251"<title>leaf140484086218512</title>\n",
1252"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"105,-294 98,-294 98,-258 105,-258 105,-294\"/>\n",
1253"<text text-anchor=\"start\" x=\"98\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">(</text>\n",
1254"</g>\n",
1255"<!-- leaf140484086218224->leaf140484086218512 -->\n",
1256"<!-- leaf140484086217456 -->\n",
1257"<g id=\"node7\" class=\"node\">\n",
1258"<title>leaf140484086217456</title>\n",
1259"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"126.5,-294 106.5,-294 106.5,-258 126.5,-258 126.5,-294\"/>\n",
1260"<text text-anchor=\"start\" x=\"106.5\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">Whh</text>\n",
1261"</g>\n",
1262"<!-- leaf140484086218512->leaf140484086217456 -->\n",
1263"<!-- leaf140484086218608 -->\n",
1264"<g id=\"node8\" class=\"node\">\n",
1265"<title>leaf140484086218608</title>\n",
1266"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"141.5,-294 127.5,-294 127.5,-258 141.5,-258 141.5,-294\"/>\n",
1267"<text text-anchor=\"start\" x=\"131\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">@</text>\n",
1268"</g>\n",
1269"<!-- leaf140484086217456->leaf140484086218608 -->\n",
1270"<!-- leaf140484086217168 -->\n",
1271"<g id=\"node9\" class=\"node\">\n",
1272"<title>leaf140484086217168</title>\n",
1273"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"150,-294 143,-294 143,-258 150,-258 150,-294\"/>\n",
1274"<text text-anchor=\"start\" x=\"143\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">(</text>\n",
1275"</g>\n",
1276"<!-- leaf140484086218608->leaf140484086217168 -->\n",
1277"<!-- leaf140484086218272 -->\n",
1278"<g id=\"node10\" class=\"node\">\n",
1279"<title>leaf140484086218272</title>\n",
1280"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"158,-294 151,-294 151,-258 158,-258 158,-294\"/>\n",
1281"<text text-anchor=\"start\" x=\"151\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">r</text>\n",
1282"</g>\n",
1283"<!-- leaf140484086217168->leaf140484086218272 -->\n",
1284"<!-- leaf140484086218704 -->\n",
1285"<g id=\"node11\" class=\"node\">\n",
1286"<title>leaf140484086218704</title>\n",
1287"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"173.5,-294 159.5,-294 159.5,-258 173.5,-258 173.5,-294\"/>\n",
1288"<text text-anchor=\"start\" x=\"163\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">*</text>\n",
1289"</g>\n",
1290"<!-- leaf140484086218272->leaf140484086218704 -->\n",
1291"<!-- leaf140484086217552 -->\n",
1292"<g id=\"node12\" class=\"node\">\n",
1293"<title>leaf140484086217552</title>\n",
1294"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"182,-294 175,-294 175,-258 182,-258 182,-294\"/>\n",
1295"<text text-anchor=\"start\" x=\"175\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">h</text>\n",
1296"</g>\n",
1297"<!-- leaf140484086218704->leaf140484086217552 -->\n",
1298"<!-- leaf140484086217648 -->\n",
1299"<g id=\"node13\" class=\"node\">\n",
1300"<title>leaf140484086217648</title>\n",
1301"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"190,-294 183,-294 183,-258 190,-258 190,-294\"/>\n",
1302"<text text-anchor=\"start\" x=\"183\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">)</text>\n",
1303"</g>\n",
1304"<!-- leaf140484086217552->leaf140484086217648 -->\n",
1305"<!-- leaf140484086217504 -->\n",
1306"<g id=\"node14\" class=\"node\">\n",
1307"<title>leaf140484086217504</title>\n",
1308"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"220,-294 191,-294 191,-258 220,-258 220,-294\"/>\n",
1309"<text text-anchor=\"start\" x=\"202\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">+</text>\n",
1310"</g>\n",
1311"<!-- leaf140484086217648->leaf140484086217504 -->\n",
1312"<!-- leaf140484086217792 -->\n",
1313"<g id=\"node15\" class=\"node\">\n",
1314"<title>leaf140484086217792</title>\n",
1315"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"241.5,-294 221.5,-294 221.5,-258 241.5,-258 241.5,-294\"/>\n",
1316"<text text-anchor=\"start\" x=\"221.5\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">Uxh</text>\n",
1317"</g>\n",
1318"<!-- leaf140484086217504->leaf140484086217792 -->\n",
1319"<!-- leaf140484086216976 -->\n",
1320"<g id=\"node16\" class=\"node\">\n",
1321"<title>leaf140484086216976</title>\n",
1322"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"256.5,-294 242.5,-294 242.5,-258 256.5,-258 256.5,-294\"/>\n",
1323"<text text-anchor=\"start\" x=\"246\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">@</text>\n",
1324"</g>\n",
1325"<!-- leaf140484086217792->leaf140484086216976 -->\n",
1326"<!-- leaf140484086214864 -->\n",
1327"<g id=\"node17\" class=\"node\">\n",
1328"<title>leaf140484086214864</title>\n",
1329"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"265,-294 258,-294 258,-258 265,-258 265,-294\"/>\n",
1330"<text text-anchor=\"start\" x=\"258\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">X</text>\n",
1331"</g>\n",
1332"<!-- leaf140484086216976->leaf140484086214864 -->\n",
1333"<!-- leaf140484086217072 -->\n",
1334"<g id=\"node18\" class=\"node\">\n",
1335"<title>leaf140484086217072</title>\n",
1336"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"273,-294 266,-294 266,-258 273,-258 273,-294\"/>\n",
1337"<text text-anchor=\"start\" x=\"266\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">.</text>\n",
1338"</g>\n",
1339"<!-- leaf140484086214864->leaf140484086217072 -->\n",
1340"<!-- leaf140484086217024 -->\n",
1341"<g id=\"node19\" class=\"node\">\n",
1342"<title>leaf140484086217024</title>\n",
1343"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"281,-294 274,-294 274,-258 281,-258 281,-294\"/>\n",
1344"<text text-anchor=\"start\" x=\"274\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">T</text>\n",
1345"</g>\n",
1346"<!-- leaf140484086217072->leaf140484086217024 -->\n",
1347"<!-- leaf140484086218176 -->\n",
1348"<g id=\"node20\" class=\"node\">\n",
1349"<title>leaf140484086218176</title>\n",
1350"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"311,-294 282,-294 282,-258 311,-258 311,-294\"/>\n",
1351"<text text-anchor=\"start\" x=\"293\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">+</text>\n",
1352"</g>\n",
1353"<!-- leaf140484086217024->leaf140484086218176 -->\n",
1354"<!-- leaf140484086215008 -->\n",
1355"<g id=\"node21\" class=\"node\">\n",
1356"<title>leaf140484086215008</title>\n",
1357"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"326.5,-294 312.5,-294 312.5,-258 326.5,-258 326.5,-294\"/>\n",
1358"<text text-anchor=\"start\" x=\"312.5\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">bh</text>\n",
1359"</g>\n",
1360"<!-- leaf140484086218176->leaf140484086215008 -->\n",
1361"<!-- leaf140484086217888 -->\n",
1362"<g id=\"node22\" class=\"node\">\n",
1363"<title>leaf140484086217888</title>\n",
1364"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"335,-294 328,-294 328,-258 335,-258 335,-294\"/>\n",
1365"<text text-anchor=\"start\" x=\"328\" y=\"-272.9\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">)</text>\n",
1366"</g>\n",
1367"<!-- leaf140484086215008->leaf140484086217888 -->\n",
1368"<!-- node140484086217360 -->\n",
1369"<g id=\"node23\" class=\"node\">\n",
1370"<title>node140484086217360</title>\n",
1371"<polygon fill=\"none\" stroke=\"black\" stroke-width=\"0\" points=\"78.5,-232.5 60.5,-232.5 60.5,-218.5 78.5,-218.5 78.5,-232.5\"/>\n",
1372"<text text-anchor=\"start\" x=\"66\" y=\"-222.4\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#000000\">.</text>\n",
1373"</g>\n",
1374"<!-- node140484086217360->leaf140484086218416 -->\n",
1375"<g id=\"edge22\" class=\"edge\">\n",
1376"<title>node140484086217360->leaf140484086218416</title>\n",
1377"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M64.77,-235.68C61.58,-241.86 57.29,-250.19 53.47,-257.59\"/>\n",
1378"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"65.79,-235.99 66.23,-232.84 63.92,-235.03 65.79,-235.99\"/>\n",
1379"</g>\n",
1380"<!-- node140484086217360->leaf140484086218224 -->\n",
1381"<g id=\"edge23\" class=\"edge\">\n",
1382"<title>node140484086217360->leaf140484086218224</title>\n",
1383"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M72.25,-236.02C74.02,-242.16 76.38,-250.32 78.47,-257.59\"/>\n",
1384"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"73.17,-235.43 71.33,-232.84 71.15,-236.01 73.17,-235.43\"/>\n",
1385"</g>\n",
1386"<!-- node140484086217744 -->\n",
1387"<g id=\"node24\" class=\"node\">\n",
1388"<title>node140484086217744</title>\n",
1389"<polygon fill=\"#cfe2d4\" stroke=\"black\" stroke-width=\"0\" points=\"176.5,-236 156.5,-236 156.5,-215 176.5,-215 176.5,-236\"/>\n",
1390"<text text-anchor=\"start\" x=\"163\" y=\"-227.4\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">*</text>\n",
1391"<text text-anchor=\"start\" x=\"156.5\" y=\"-217.8\" font-family=\"Arial\" font-size=\"9.00\" fill=\"#444443\">1kx1</text>\n",
1392"</g>\n",
1393"<!-- node140484086217744->leaf140484086218272 -->\n",
1394"<g id=\"edge24\" class=\"edge\">\n",
1395"<title>node140484086217744->leaf140484086218272</title>\n",
1396"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M163.31,-239.39C161.69,-245.92 159.73,-253.87 158.06,-260.6\"/>\n",
1397"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"164.37,-239.48 164.07,-236.31 162.33,-238.97 164.37,-239.48\"/>\n",
1398"</g>\n",
1399"<!-- node140484086217744->leaf140484086217552 -->\n",
1400"<g id=\"edge25\" class=\"edge\">\n",
1401"<title>node140484086217744->leaf140484086217552</title>\n",
1402"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M169.69,-239.39C171.31,-245.92 173.27,-253.87 174.94,-260.6\"/>\n",
1403"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"170.67,-238.97 168.93,-236.31 168.63,-239.48 170.67,-238.97\"/>\n",
1404"</g>\n",
1405"<!-- node140484086215824 -->\n",
1406"<g id=\"node25\" class=\"node\">\n",
1407"<title>node140484086215824</title>\n",
1408"<polygon fill=\"#cfe2d4\" stroke=\"black\" stroke-width=\"0\" points=\"176.5,-193 156.5,-193 156.5,-172 176.5,-172 176.5,-193\"/>\n",
1409"<text text-anchor=\"start\" x=\"163\" y=\"-184.4\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">@</text>\n",
1410"<text text-anchor=\"start\" x=\"156.5\" y=\"-174.8\" font-family=\"Arial\" font-size=\"9.00\" fill=\"#444443\">1kx1</text>\n",
1411"</g>\n",
1412"<!-- node140484086215824->leaf140484086217456 -->\n",
1413"<g id=\"edge26\" class=\"edge\">\n",
1414"<title>node140484086215824->leaf140484086217456</title>\n",
1415"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M159.7,-195.95C150.96,-211.95 135.73,-239.81 125.89,-257.82\"/>\n",
1416"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"160.63,-196.43 161.15,-193.29 158.79,-195.42 160.63,-196.43\"/>\n",
1417"</g>\n",
1418"<!-- node140484086215824->node140484086217744 -->\n",
1419"<g id=\"edge27\" class=\"edge\">\n",
1420"<title>node140484086215824->node140484086217744</title>\n",
1421"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M166.5,-196.21C166.5,-202.19 166.5,-209.21 166.5,-214.76\"/>\n",
1422"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"167.55,-196.01 166.5,-193.01 165.45,-196.01 167.55,-196.01\"/>\n",
1423"</g>\n",
1424"<!-- node140484086218656 -->\n",
1425"<g id=\"node26\" class=\"node\">\n",
1426"<title>node140484086218656</title>\n",
1427"<polygon fill=\"#cfe2d4\" stroke=\"black\" stroke-width=\"0\" points=\"279,-236 244,-236 244,-215 279,-215 279,-236\"/>\n",
1428"<text text-anchor=\"start\" x=\"258\" y=\"-227.4\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">.</text>\n",
1429"<text text-anchor=\"start\" x=\"244\" y=\"-217.8\" font-family=\"Arial\" font-size=\"9.00\" fill=\"#444443\">764x200</text>\n",
1430"</g>\n",
1431"<!-- node140484086218656->leaf140484086214864 -->\n",
1432"<g id=\"edge28\" class=\"edge\">\n",
1433"<title>node140484086218656->leaf140484086214864</title>\n",
1434"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M261.5,-239.35C261.5,-245.05 261.5,-251.83 261.5,-257.93\"/>\n",
1435"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"262.55,-239.31 261.5,-236.31 260.45,-239.31 262.55,-239.31\"/>\n",
1436"</g>\n",
1437"<!-- node140484086218656->leaf140484086217024 -->\n",
1438"<g id=\"edge29\" class=\"edge\">\n",
1439"<title>node140484086218656->leaf140484086217024</title>\n",
1440"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M265.79,-239.49C268.33,-247.21 271.52,-256.89 273.93,-264.19\"/>\n",
1441"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"266.67,-238.83 264.74,-236.31 264.68,-239.49 266.67,-238.83\"/>\n",
1442"</g>\n",
1443"<!-- node140484086218320 -->\n",
1444"<g id=\"node27\" class=\"node\">\n",
1445"<title>node140484086218320</title>\n",
1446"<polygon fill=\"#cfe2d4\" stroke=\"black\" stroke-width=\"0\" points=\"246.5,-193 216.5,-193 216.5,-172 246.5,-172 246.5,-193\"/>\n",
1447"<text text-anchor=\"start\" x=\"228\" y=\"-184.4\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">@</text>\n",
1448"<text text-anchor=\"start\" x=\"216.5\" y=\"-174.8\" font-family=\"Arial\" font-size=\"9.00\" fill=\"#444443\">1kx200</text>\n",
1449"</g>\n",
1450"<!-- node140484086218320->leaf140484086217792 -->\n",
1451"<g id=\"edge30\" class=\"edge\">\n",
1452"<title>node140484086218320->leaf140484086217792</title>\n",
1453"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M231.5,-196.35C231.5,-212.41 231.5,-239.96 231.5,-257.82\"/>\n",
1454"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"232.55,-196.29 231.5,-193.29 230.45,-196.29 232.55,-196.29\"/>\n",
1455"</g>\n",
1456"<!-- node140484086218320->node140484086218656 -->\n",
1457"<g id=\"edge31\" class=\"edge\">\n",
1458"<title>node140484086218320->node140484086218656</title>\n",
1459"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M240.32,-195.55C244.79,-201.67 250.16,-209 254.37,-214.76\"/>\n",
1460"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"241.08,-194.81 238.46,-193.01 239.38,-196.05 241.08,-194.81\"/>\n",
1461"</g>\n",
1462"<!-- node140484630812608 -->\n",
1463"<g id=\"node28\" class=\"node\">\n",
1464"<title>node140484630812608</title>\n",
1465"<polygon fill=\"#cfe2d4\" stroke=\"black\" stroke-width=\"0\" points=\"219.5,-150 189.5,-150 189.5,-129 219.5,-129 219.5,-150\"/>\n",
1466"<text text-anchor=\"start\" x=\"201\" y=\"-141.4\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">+</text>\n",
1467"<text text-anchor=\"start\" x=\"189.5\" y=\"-131.8\" font-family=\"Arial\" font-size=\"9.00\" fill=\"#444443\">1kx200</text>\n",
1468"</g>\n",
1469"<!-- node140484630812608->node140484086215824 -->\n",
1470"<g id=\"edge32\" class=\"edge\">\n",
1471"<title>node140484630812608->node140484086215824</title>\n",
1472"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M193.64,-152.22C187.91,-158.4 180.96,-165.9 175.53,-171.76\"/>\n",
1473"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"194.42,-152.92 195.69,-150.01 192.88,-151.5 194.42,-152.92\"/>\n",
1474"</g>\n",
1475"<!-- node140484630812608->node140484086218320 -->\n",
1476"<g id=\"edge33\" class=\"edge\">\n",
1477"<title>node140484630812608->node140484086218320</title>\n",
1478"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M212.43,-152.55C216.46,-158.67 221.29,-166 225.08,-171.76\"/>\n",
1479"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"213.29,-151.94 210.76,-150.01 211.54,-153.09 213.29,-151.94\"/>\n",
1480"</g>\n",
1481"<!-- node140484630812512 -->\n",
1482"<g id=\"node29\" class=\"node\">\n",
1483"<title>node140484630812512</title>\n",
1484"<polygon fill=\"#cfe2d4\" stroke=\"black\" stroke-width=\"0\" points=\"219.5,-107 189.5,-107 189.5,-86 219.5,-86 219.5,-107\"/>\n",
1485"<text text-anchor=\"start\" x=\"201\" y=\"-98.4\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">+</text>\n",
1486"<text text-anchor=\"start\" x=\"189.5\" y=\"-88.8\" font-family=\"Arial\" font-size=\"9.00\" fill=\"#444443\">1kx200</text>\n",
1487"</g>\n",
1488"<!-- node140484630812512->leaf140484086215008 -->\n",
1489"<g id=\"edge35\" class=\"edge\">\n",
1490"<title>node140484630812512->leaf140484086215008</title>\n",
1491"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M212.39,-109.68C233.69,-142.55 292.1,-232.71 312.42,-264.07\"/>\n",
1492"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"213.2,-108.99 210.68,-107.04 211.43,-110.13 213.2,-108.99\"/>\n",
1493"</g>\n",
1494"<!-- node140484630812512->node140484630812608 -->\n",
1495"<g id=\"edge34\" class=\"edge\">\n",
1496"<title>node140484630812512->node140484630812608</title>\n",
1497"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M204.5,-110.21C204.5,-116.19 204.5,-123.21 204.5,-128.76\"/>\n",
1498"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"205.55,-110.01 204.5,-107.01 203.45,-110.01 205.55,-110.01\"/>\n",
1499"</g>\n",
1500"<!-- node140484630811792 -->\n",
1501"<g id=\"node30\" class=\"node\">\n",
1502"<title>node140484630811792</title>\n",
1503"<polygon fill=\"#cfe2d4\" stroke=\"black\" stroke-width=\"0\" points=\"89.5,-64 49.5,-64 49.5,-43 89.5,-43 89.5,-64\"/>\n",
1504"<text text-anchor=\"start\" x=\"49.5\" y=\"-55.4\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">tanh()</text>\n",
1505"<text text-anchor=\"start\" x=\"54.5\" y=\"-45.8\" font-family=\"Arial\" font-size=\"9.00\" fill=\"#444443\">1kx200</text>\n",
1506"</g>\n",
1507"<!-- node140484630811792->node140484086217360 -->\n",
1508"<g id=\"edge36\" class=\"edge\">\n",
1509"<title>node140484630811792->node140484086217360</title>\n",
1510"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M69.5,-67.24C69.5,-101.35 69.5,-193.81 69.5,-218.42\"/>\n",
1511"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"70.55,-67.13 69.5,-64.13 68.45,-67.13 70.55,-67.13\"/>\n",
1512"</g>\n",
1513"<!-- node140484630811792->node140484630812512 -->\n",
1514"<g id=\"edge37\" class=\"edge\">\n",
1515"<title>node140484630811792->node140484630812512</title>\n",
1516"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M92.66,-61.53C120.26,-69.92 165.61,-83.69 189.19,-90.85\"/>\n",
1517"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"92.89,-60.51 89.71,-60.64 92.28,-62.51 92.89,-60.51\"/>\n",
1518"</g>\n",
1519"<!-- node140484630812848 -->\n",
1520"<g id=\"node31\" class=\"node\">\n",
1521"<title>node140484630812848</title>\n",
1522"<polygon fill=\"#cfe2d4\" stroke=\"black\" stroke-width=\"0\" points=\"44.5,-21 14.5,-21 14.5,0 44.5,0 44.5,-21\"/>\n",
1523"<text text-anchor=\"start\" x=\"26\" y=\"-12.4\" font-family=\"Consolas\" font-size=\"12.00\" fill=\"#444443\">=</text>\n",
1524"<text text-anchor=\"start\" x=\"14.5\" y=\"-2.8\" font-family=\"Arial\" font-size=\"9.00\" fill=\"#444443\">1kx200</text>\n",
1525"</g>\n",
1526"<!-- node140484630812848->leaf140484086217408 -->\n",
1527"<g id=\"edge38\" class=\"edge\">\n",
1528"<title>node140484630812848->leaf140484086217408</title>\n",
1529"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M26.75,-24.38C23.49,-40.81 18.5,-70.13 18.5,-95.5 18.5,-95.5 18.5,-95.5 18.5,-183.5 18.5,-211.67 11.49,-244.08 7.05,-261.78\"/>\n",
1530"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"27.82,-24.42 27.38,-21.27 25.76,-24.01 27.82,-24.42\"/>\n",
1531"</g>\n",
1532"<!-- node140484630812848->node140484630811792 -->\n",
1533"<g id=\"edge39\" class=\"edge\">\n",
1534"<title>node140484630812848->node140484630811792</title>\n",
1535"<path fill=\"none\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" d=\"M40.94,-23.22C46.97,-29.4 54.28,-36.9 60,-42.76\"/>\n",
1536"<polygon fill=\"#6b6b6b\" stroke=\"#6b6b6b\" stroke-width=\"0.5\" points=\"41.62,-22.42 38.78,-21.01 40.12,-23.89 41.62,-22.42\"/>\n",
1537"</g>\n",
1538"</g>\n",
1539"</svg>\n"
1540],
1541"text/plain": [
1542"<tsensor.viz.QuietGraphvizWrapper at 0x7fc56056cca0>"
1543]
1544},
1545"execution_count": 7,
1546"metadata": {},
1547"output_type": "execute_result"
1548}
1549],
1550"source": [
1551"n = 200 # number of instances\n",
1552"d = 764 # number of instance features\n",
1553"nhidden = 1000\n",
1554"\n",
1555"Whh = torch.eye(nhidden, nhidden) # Identity matrix\n",
1556"Uxh = torch.randn(nhidden, d)\n",
1557"bh = torch.zeros(nhidden, 1)\n",
1558"h = torch.randn(nhidden, 1) # fake previous hidden state h\n",
1559"r = torch.randn(nhidden, 1) # fake this computation\n",
1560"X = torch.rand(n,d) # fake input\n",
1561"\n",
1562"tsensor.astviz(\"h = torch.tanh(Whh @ (r*h) + Uxh @ X.T + bh)\")"
1563]
1564},
1565{
1566"cell_type": "markdown",
1567"id": "be09d055-2ab1-422f-a5ab-6559c029a613",
1568"metadata": {},
1569"source": [
1570"## For slides"
1571]
1572},
1573{
1574"cell_type": "markdown",
1575"id": "dec46212-54af-46ac-8c5a-57023b86b6ca",
1576"metadata": {},
1577"source": [
1578"### Try print statements"
1579]
1580},
1581{
1582"cell_type": "code",
1583"execution_count": null,
1584"id": "c85c7bde-ecaf-4d2c-b542-6bdcfe23f1ea",
1585"metadata": {},
1586"outputs": [],
1587"source": [
1588"import torch\n",
1589"\n",
1590"n = 200 # number of instances\n",
1591"d = 764 # number of instance features\n",
1592"nhidden = 256\n",
1593"\n",
1594"Whh = torch.eye(nhidden, nhidden) # Identity matrix\n",
1595"Uxh = torch.randn(d, nhidden)\n",
1596"bh = torch.zeros(nhidden, 1)\n",
1597"h = torch.randn(nhidden, 1) # fake previous hidden state h\n",
1598"r = torch.randn(nhidden, 1) # fake this computation\n",
1599"X = torch.rand(n,d) # fake input\n",
1600"\n",
1601"print(Whh.shape, r.shape, h.shape, Uxh.shape, X.shape, bh.shape)\n",
1602"print((r*h).shape)\n",
1603"print((Whh@(r*h)).shape)\n",
1604"print((Uxh@X.T).shape) # <-- exception!\n",
1605"print((Whh@(r*h)+Uxh@X.T).shape)\n",
1606"print((Whh@(r*h)+Uxh@X.T+bh).shape)\n",
1607"h = torch.tanh(Whh @ (r*h) + Uxh @ X.T + bh)"
1608]
1609}
1610],
1611"metadata": {
1612"kernelspec": {
1613"display_name": "Python 3",
1614"language": "python",
1615"name": "python3"
1616},
1617"language_info": {
1618"codemirror_mode": {
1619"name": "ipython",
1620"version": 3
1621},
1622"file_extension": ".py",
1623"mimetype": "text/x-python",
1624"name": "python",
1625"nbconvert_exporter": "python",
1626"pygments_lexer": "ipython3",
1627"version": "3.8.8"
1628}
1629},
1630"nbformat": 4,
1631"nbformat_minor": 5
1632}
1633