|
a |
|
b/Code/All Qiskit, PennyLane QML Nov 23/35a Photonic QNN 0.0109 Loss kkawchak.ipynb |
|
|
1 |
{ |
|
|
2 |
"cells": [ |
|
|
3 |
{ |
|
|
4 |
"cell_type": "code", |
|
|
5 |
"execution_count": 16, |
|
|
6 |
"metadata": { |
|
|
7 |
"id": "HWPs0TLnfWuf" |
|
|
8 |
}, |
|
|
9 |
"outputs": [], |
|
|
10 |
"source": [ |
|
|
11 |
"# This cell is added by sphinx-gallery\n", |
|
|
12 |
"# It can be customized to whatever you like\n", |
|
|
13 |
"%matplotlib inline\n", |
|
|
14 |
"# !pip install pennylane-sf\n", |
|
|
15 |
"# from google.colab import drive\n", |
|
|
16 |
"# drive.mount('/content/drive')" |
|
|
17 |
] |
|
|
18 |
}, |
|
|
19 |
{ |
|
|
20 |
"cell_type": "markdown", |
|
|
21 |
"metadata": { |
|
|
22 |
"id": "nZNnZLAhfWuh" |
|
|
23 |
}, |
|
|
24 |
"source": [ |
|
|
25 |
"Function fitting with a photonic quantum neural network {#quantum_neural_net}\n", |
|
|
26 |
"=======================================================\n", |
|
|
27 |
"\n", |
|
|
28 |
"::: {.meta}\n", |
|
|
29 |
":property=\\\"og:description\\\": Fit to noisy data with a variational\n", |
|
|
30 |
"quantum circuit. :property=\\\"og:image\\\":\n", |
|
|
31 |
"<https://pennylane.ai/qml/_images/qnn_output_28_0.png>\n", |
|
|
32 |
":::\n", |
|
|
33 |
"\n", |
|
|
34 |
"::: {.related}\n", |
|
|
35 |
"qonn Optimizing a quantum optical neural network pytorch\\_noise PyTorch\n", |
|
|
36 |
"and noisy devices tutorial\\_noisy\\_circuit\\_optimization Optimizing\n", |
|
|
37 |
"noisy circuits with Cirq\n", |
|
|
38 |
":::\n", |
|
|
39 |
"\n", |
|
|
40 |
"*Author: Maria Schuld --- Posted: 11 October 2019. Last updated: 25\n", |
|
|
41 |
"January 2021.*\n", |
|
|
42 |
"\n", |
|
|
43 |
"::: {.warning}\n", |
|
|
44 |
"::: {.title}\n", |
|
|
45 |
"Warning\n", |
|
|
46 |
":::\n", |
|
|
47 |
"\n", |
|
|
48 |
"This demo is only compatible with PennyLane version `0.29` or below.\n", |
|
|
49 |
":::\n", |
|
|
50 |
"\n", |
|
|
51 |
"In this example we show how a variational circuit can be used to learn a\n", |
|
|
52 |
"fit for a one-dimensional function when being trained with noisy samples\n", |
|
|
53 |
"from that function.\n", |
|
|
54 |
"\n", |
|
|
55 |
"The variational circuit we use is the continuous-variable quantum neural\n", |
|
|
56 |
"network model described in [Killoran et al.\n", |
|
|
57 |
"(2018)](https://arxiv.org/abs/1806.06871).\n", |
|
|
58 |
"\n", |
|
|
59 |
"Imports\n", |
|
|
60 |
"-------\n", |
|
|
61 |
"\n", |
|
|
62 |
"We import PennyLane, the wrapped version of NumPy provided by PennyLane,\n", |
|
|
63 |
"and an optimizer.\n" |
|
|
64 |
] |
|
|
65 |
}, |
|
|
66 |
{ |
|
|
67 |
"cell_type": "code", |
|
|
68 |
"execution_count": 17, |
|
|
69 |
"metadata": { |
|
|
70 |
"id": "2k43lK0kfWui" |
|
|
71 |
}, |
|
|
72 |
"outputs": [], |
|
|
73 |
"source": [ |
|
|
74 |
"import pennylane as qml\n", |
|
|
75 |
"from pennylane import numpy as np\n", |
|
|
76 |
"from pennylane.optimize import AdamOptimizer" |
|
|
77 |
] |
|
|
78 |
}, |
|
|
79 |
{ |
|
|
80 |
"cell_type": "markdown", |
|
|
81 |
"metadata": { |
|
|
82 |
"id": "R-ZuYCWbfWuj" |
|
|
83 |
}, |
|
|
84 |
"source": [ |
|
|
85 |
"The device we use is the Strawberry Fields simulator, this time with\n", |
|
|
86 |
"only one quantum mode (or `wire`). You will need to have the Strawberry\n", |
|
|
87 |
"Fields plugin for PennyLane installed.\n" |
|
|
88 |
] |
|
|
89 |
}, |
|
|
90 |
{ |
|
|
91 |
"cell_type": "code", |
|
|
92 |
"execution_count": 18, |
|
|
93 |
"metadata": { |
|
|
94 |
"id": "lGEobKa2fWuj" |
|
|
95 |
}, |
|
|
96 |
"outputs": [], |
|
|
97 |
"source": [ |
|
|
98 |
"dev = qml.device(\"strawberryfields.fock\", wires=1, cutoff_dim=15)" |
|
|
99 |
] |
|
|
100 |
}, |
|
|
101 |
{ |
|
|
102 |
"cell_type": "markdown", |
|
|
103 |
"metadata": { |
|
|
104 |
"id": "1dxF_9rMfWuj" |
|
|
105 |
}, |
|
|
106 |
"source": [ |
|
|
107 |
"Quantum node\n", |
|
|
108 |
"============\n", |
|
|
109 |
"\n", |
|
|
110 |
"For a single quantum mode, each layer of the variational circuit is\n", |
|
|
111 |
"defined as:\n" |
|
|
112 |
] |
|
|
113 |
}, |
|
|
114 |
{ |
|
|
115 |
"cell_type": "code", |
|
|
116 |
"execution_count": 19, |
|
|
117 |
"metadata": { |
|
|
118 |
"id": "Rb5PxNmdfWuj" |
|
|
119 |
}, |
|
|
120 |
"outputs": [], |
|
|
121 |
"source": [ |
|
|
122 |
"def layer(v):\n", |
|
|
123 |
" # Matrix multiplication of input layer\n", |
|
|
124 |
" qml.Rotation(v[0], wires=0)\n", |
|
|
125 |
" qml.Squeezing(v[1], 0.0, wires=0)\n", |
|
|
126 |
" qml.Rotation(v[2], wires=0)\n", |
|
|
127 |
"\n", |
|
|
128 |
" # Bias\n", |
|
|
129 |
" qml.Displacement(v[3], 0.0, wires=0)\n", |
|
|
130 |
"\n", |
|
|
131 |
" # Element-wise nonlinear transformation\n", |
|
|
132 |
" qml.Kerr(v[4], wires=0)" |
|
|
133 |
] |
|
|
134 |
}, |
|
|
135 |
{ |
|
|
136 |
"cell_type": "markdown", |
|
|
137 |
"metadata": { |
|
|
138 |
"id": "LHdBo3oyfWuk" |
|
|
139 |
}, |
|
|
140 |
"source": [ |
|
|
141 |
"The variational circuit in the quantum node first encodes the input into\n", |
|
|
142 |
"the displacement of the mode, and then executes the layers. The output\n", |
|
|
143 |
"is the expectation of the x-quadrature.\n" |
|
|
144 |
] |
|
|
145 |
}, |
|
|
146 |
{ |
|
|
147 |
"cell_type": "code", |
|
|
148 |
"execution_count": 20, |
|
|
149 |
"metadata": { |
|
|
150 |
"id": "-i9PCHTAfWuk" |
|
|
151 |
}, |
|
|
152 |
"outputs": [], |
|
|
153 |
"source": [ |
|
|
154 |
"@qml.qnode(dev)\n", |
|
|
155 |
"def quantum_neural_net(var, x):\n", |
|
|
156 |
" # Encode input x into quantum state\n", |
|
|
157 |
" qml.Displacement(x, 0.0, wires=0)\n", |
|
|
158 |
"\n", |
|
|
159 |
" # \"layer\" subcircuits\n", |
|
|
160 |
" for v in var:\n", |
|
|
161 |
" layer(v)\n", |
|
|
162 |
"\n", |
|
|
163 |
" return qml.expval(qml.X(0))" |
|
|
164 |
] |
|
|
165 |
}, |
|
|
166 |
{ |
|
|
167 |
"cell_type": "markdown", |
|
|
168 |
"metadata": { |
|
|
169 |
"id": "47Y8p6FMfWuk" |
|
|
170 |
}, |
|
|
171 |
"source": [ |
|
|
172 |
"Objective\n", |
|
|
173 |
"=========\n", |
|
|
174 |
"\n", |
|
|
175 |
"As an objective we take the square loss between target labels and model\n", |
|
|
176 |
"predictions.\n" |
|
|
177 |
] |
|
|
178 |
}, |
|
|
179 |
{ |
|
|
180 |
"cell_type": "code", |
|
|
181 |
"execution_count": 21, |
|
|
182 |
"metadata": { |
|
|
183 |
"id": "GJyr7GRufWul" |
|
|
184 |
}, |
|
|
185 |
"outputs": [], |
|
|
186 |
"source": [ |
|
|
187 |
"def square_loss(labels, predictions):\n", |
|
|
188 |
" loss = 0\n", |
|
|
189 |
" for l, p in zip(labels, predictions):\n", |
|
|
190 |
" loss = loss + (l - p) ** 2\n", |
|
|
191 |
"\n", |
|
|
192 |
" loss = loss / len(labels)\n", |
|
|
193 |
" return loss" |
|
|
194 |
] |
|
|
195 |
}, |
|
|
196 |
{ |
|
|
197 |
"cell_type": "markdown", |
|
|
198 |
"metadata": { |
|
|
199 |
"id": "-UglWd2IfWul" |
|
|
200 |
}, |
|
|
201 |
"source": [ |
|
|
202 |
"In the cost function, we compute the outputs from the variational\n", |
|
|
203 |
"circuit. Function fitting is a regression problem, and we interpret the\n", |
|
|
204 |
"expectations from the quantum node as predictions (i.e., without\n", |
|
|
205 |
"applying postprocessing such as thresholding).\n" |
|
|
206 |
] |
|
|
207 |
}, |
|
|
208 |
{ |
|
|
209 |
"cell_type": "code", |
|
|
210 |
"execution_count": 22, |
|
|
211 |
"metadata": { |
|
|
212 |
"id": "58rpUDRsfWul" |
|
|
213 |
}, |
|
|
214 |
"outputs": [], |
|
|
215 |
"source": [ |
|
|
216 |
"def cost(var, features, labels):\n", |
|
|
217 |
" preds = [quantum_neural_net(var, x) for x in features]\n", |
|
|
218 |
" return square_loss(labels, preds)" |
|
|
219 |
] |
|
|
220 |
}, |
|
|
221 |
{ |
|
|
222 |
"cell_type": "markdown", |
|
|
223 |
"metadata": { |
|
|
224 |
"id": "Ct5KCMgbfWul" |
|
|
225 |
}, |
|
|
226 |
"source": [ |
|
|
227 |
"Optimization\n", |
|
|
228 |
"============\n", |
|
|
229 |
"\n", |
|
|
230 |
"We load noisy data samples of a sine function from the external file\n", |
|
|
231 |
"`sine.txt`\n", |
|
|
232 |
"(`<a href=\"https://raw.githubusercontent.com/XanaduAI/pennylane/v0.3.0/examples/data/sine.txt\"\n", |
|
|
233 |
"download=\"sine.txt\" target=\"_blank\">download the file here</a>`{.interpreted-text\n", |
|
|
234 |
"role=\"html\"}).\n" |
|
|
235 |
] |
|
|
236 |
}, |
|
|
237 |
{ |
|
|
238 |
"cell_type": "code", |
|
|
239 |
"execution_count": 23, |
|
|
240 |
"metadata": { |
|
|
241 |
"id": "9N5Hbjb1fWul" |
|
|
242 |
}, |
|
|
243 |
"outputs": [], |
|
|
244 |
"source": [ |
|
|
245 |
"data = np.loadtxt(\"/content/drive/MyDrive/Colab Notebooks/data/sine.txt\")\n", |
|
|
246 |
"X = np.array(data[:, 0], requires_grad=False)\n", |
|
|
247 |
"Y = np.array(data[:, 1], requires_grad=False)" |
|
|
248 |
] |
|
|
249 |
}, |
|
|
250 |
{ |
|
|
251 |
"cell_type": "markdown", |
|
|
252 |
"metadata": { |
|
|
253 |
"id": "_ycy7HL0fWum" |
|
|
254 |
}, |
|
|
255 |
"source": [ |
|
|
256 |
"Before training a model, let\\'s examine the data.\n", |
|
|
257 |
"\n", |
|
|
258 |
"*Note: For the next cell to work you need the matplotlib library.*\n" |
|
|
259 |
] |
|
|
260 |
}, |
|
|
261 |
{ |
|
|
262 |
"cell_type": "code", |
|
|
263 |
"execution_count": 24, |
|
|
264 |
"metadata": { |
|
|
265 |
"colab": { |
|
|
266 |
"base_uri": "https://localhost:8080/", |
|
|
267 |
"height": 465 |
|
|
268 |
}, |
|
|
269 |
"id": "5L8I8Zw4fWum", |
|
|
270 |
"outputId": "200dc176-b72d-4549-9327-8d7e0d3c0ef8" |
|
|
271 |
}, |
|
|
272 |
"outputs": [ |
|
|
273 |
{ |
|
|
274 |
"output_type": "display_data", |
|
|
275 |
"data": { |
|
|
276 |
"text/plain": [ |
|
|
277 |
"<Figure size 640x480 with 1 Axes>" |
|
|
278 |
], |
|
|
279 |
"image/png": "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hBTIfvCDH+iPf/yj6urq9NOf/lRbtmzRgAEDJElOp1NLly7VM888o6SkJK1fv169e/fWkiVLTOm4GZYuXaphw4bpvPPOU3Jysnr37q1HH3006MK1mzdv1rhx49S+fXslJiYqOztb99xzjw4fPmxyzwGEqrbO0Ozl273uG+k+Nnv5dtXWhfzcEwA0K+TCsG3atNGCBQt0yy23+Dzvs88+0/jx4/Xpp58qLi5O3333XbCXNM3kyZM1f/58tWrVSsOHD1dKSopWrVql48ePa/DgwXr33XeVlJTkd3t/+9vfNH78eH333Xfq37+/srOztWnTJn355Zdq37691q5dq4svvtjv9njKEgiv9buPafxzHzd73pLbLtfArm0j0CMALYElT1n26dNHJSUlTYYxSbr00ks9T2HW1dWFcklTvPnmm5o/f75SUlK0YcMG/eMf/9Drr7+uL774Qr169dLatWv14IMP+t3egQMHdNNNN+m7777TM888o+LiYs+TphMmTNChQ4eUn58vEyqMADDJ4crq5k8K4DwACEVIgezjjz/WJZdc4te5rVu31lNPPaXly5eHcklTzJkzR5I0ffp05ebmeo5nZGToT3/6kyRp4cKFqqio8Ku9//mf/9HJkyc1cuRI3X777Z7j8fHxWrRokZxOpzZu3Kh3333XxJ8CQCjapSY2f1IA5wFAKEIKZK1btw74PVdffXUolwzZ/v37tXHjRklSfn5+o9cHDx6sjh07qqamRitWrPCrzcLCQp/tpaSk6JprrpEkvfHGG8F2G4DJBmSnK8uZKF/FLRyqf9pyQHZ6JLsFwKZsV4diy5YtkqT09HRlZ2d7Padfv34Nzm1KZWWldu3a1eB9obQHIDLi4xyaNSZHkhqFMvf3s8bkUI8MQET4HciWLl1q+sX379+v9evXm95uU0pLSyVJnTp18nlOx44dG5zblK+++srzb19tBtIegMjJ65mlRRNylelsOC2Z6UzUogm51CEDEDF+B7IbbrhBffr0UWFhYciL0/fu3au7775bF198sf75z3+G1FagKisrJUnJyck+z0lJSZFU/6SEv+011aY/7dXU1MjlcjX4AhB+eT2ztHbacC257XLN/2kfLbntcq2dNpwwBiCi/K7Un5+fryVLlui//uu/lJmZqfHjx2v8+PHKzc2Vw9H8kP6RI0e0bNkyvfLKK/rwww9V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r1144YVmdBsBWrRokebPn29qm08++aSmTJkih8OhIUOGqH379lqzZo3mzJmj119/XWvXrlVGRkZgjRoAQnLttdcakowRI0YYVVVVnuNvv/22ER8fb8TFxRmffPJJQG0OHTrUkGS8//77JvcWTSksLDQkGSkpKcbmzZs9x48cOWL06tXLkGRMnTrV7/b2799vtGnTxpBkPPPMM57j3333nTFhwgRDktG/f3+jrq7O1J8DzTP7s37xxRcNScZNN90Uht4iFM8995xx//33G6+88orx2WefGTfeeKMhyXjooYeCaq+kpMRwOBxGfHy8sWLFCs/xqqoqY8SIEYYk4/rrrw+4XQIZEIJ//etfhiQjPj7e+Oqrrxq9fuuttxqSjJ/+9KcBtUsgs0b//v0NScbDDz/c6LU1a9YYkoyEhATj+PHjfrX361//2pBkjBw5stFrlZWVhtPpNCQZRUVFIfcdgTH7syaQxY6bbroppEA2btw4Q5Lxi1/8otFrX331lREXF2dIMj777LOA2mUNGRCCwsJCSdKgQYPUuXPnRq/n5+dLkpYvXx70+iNExv79+7Vx40ZJ//7czjR48GB17NhRNTU1WrFihV9tun8/vLWXkpKia665RpL0xhtvBNttBCEcnzXs4dSpU3r77bclef/d6dy5swYNGiTp33///iKQASHYsmWLJKlfv35eX3cfr6qq0hdffBFw+4WFhZo8ebLuuOMO/e53v1NRUZHq6uqC7zB8cn+W6enpys7O9nqO+/N0n9uUyspK7dq1q8H7QmkP5jH7sz7Trl279Nvf/la33367pkyZor/85S86evRoaB1G1Ni5c6dOnjwpyfy/axb1AyEoLS2VJHXq1Mnr62lpaUpLS5PL5VJpaalycnICav+pp55qdOySSy5RQUGB+vfvH3iH4VNzn6UkdezYscG5Tfnqq688//bVZiDtwTxmf9ZnWrdundatW9fgWGJion7/+99r2rRpAfYU0cb9+3DuuecqNTXV6znB/u4wQgaEoLKyUpKUnJzs85yUlBRJksvl8rvdIUOG6LnnntOOHTtUVVWlffv2qbCwUN/73ve0c+dOjRw5Up999llonUcDZn+W7vaaajOY3w2ELhx/t5mZmZo5c6Y2bNigI0eOyOVyaePGjZo4caJqamo0ffp0zZkzJ/TOw1Lh+m++xAgZbOw3v/mNli1b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\n" |
|
|
280 |
}, |
|
|
281 |
"metadata": {} |
|
|
282 |
} |
|
|
283 |
], |
|
|
284 |
"source": [ |
|
|
285 |
"import matplotlib.pyplot as plt\n", |
|
|
286 |
"\n", |
|
|
287 |
"plt.figure()\n", |
|
|
288 |
"plt.scatter(X, Y)\n", |
|
|
289 |
"plt.xlabel(\"x\", fontsize=18)\n", |
|
|
290 |
"plt.ylabel(\"f(x)\", fontsize=18)\n", |
|
|
291 |
"plt.tick_params(axis=\"both\", which=\"major\", labelsize=16)\n", |
|
|
292 |
"plt.tick_params(axis=\"both\", which=\"minor\", labelsize=16)\n", |
|
|
293 |
"plt.show()" |
|
|
294 |
] |
|
|
295 |
}, |
|
|
296 |
{ |
|
|
297 |
"cell_type": "markdown", |
|
|
298 |
"metadata": { |
|
|
299 |
"id": "T-YMfYB5fWum" |
|
|
300 |
}, |
|
|
301 |
"source": [ |
|
|
302 |
"\n", |
|
|
303 |
"\n", |
|
|
304 |
"The network's weights (called `var` here) are initialized with values\n", |
|
|
305 |
"sampled from a normal distribution. We use 4 layers; performance has\n", |
|
|
306 |
"been found to plateau at around 6 layers.\n" |
|
|
307 |
] |
|
|
308 |
}, |
|
|
309 |
{ |
|
|
310 |
"cell_type": "code", |
|
|
311 |
"execution_count": 25, |
|
|
312 |
"metadata": { |
|
|
313 |
"colab": { |
|
|
314 |
"base_uri": "https://localhost:8080/", |
|
|
315 |
"height": 0 |
|
|
316 |
}, |
|
|
317 |
"id": "wvG1NxUafWum", |
|
|
318 |
"outputId": "1b68fd90-ac69-44b8-e23a-3602d2d7dfd8" |
|
|
319 |
}, |
|
|
320 |
"outputs": [ |
|
|
321 |
{ |
|
|
322 |
"output_type": "stream", |
|
|
323 |
"name": "stdout", |
|
|
324 |
"text": [ |
|
|
325 |
"[[ 0.08820262 0.02000786 0.0489369 0.11204466 0.0933779 ]\n", |
|
|
326 |
" [-0.04886389 0.04750442 -0.00756786 -0.00516094 0.02052993]\n", |
|
|
327 |
" [ 0.00720218 0.07271368 0.03805189 0.00608375 0.02219316]\n", |
|
|
328 |
" [ 0.01668372 0.07470395 -0.01025791 0.01565339 -0.04270479]\n", |
|
|
329 |
" [-0.12764949 0.03268093 0.04322181 -0.03710825 0.11348773]\n", |
|
|
330 |
" [-0.07271828 0.00228793 -0.00935919 0.07663896 0.07346794]]\n" |
|
|
331 |
] |
|
|
332 |
} |
|
|
333 |
], |
|
|
334 |
"source": [ |
|
|
335 |
"np.random.seed(0)\n", |
|
|
336 |
"num_layers = 6\n", |
|
|
337 |
"var_init = 0.05 * np.random.randn(num_layers, 5, requires_grad=True)\n", |
|
|
338 |
"print(var_init)" |
|
|
339 |
] |
|
|
340 |
}, |
|
|
341 |
{ |
|
|
342 |
"cell_type": "markdown", |
|
|
343 |
"metadata": { |
|
|
344 |
"id": "ejdl930zfWun" |
|
|
345 |
}, |
|
|
346 |
"source": [ |
|
|
347 |
"::: {.rst-class}\n", |
|
|
348 |
"sphx-glr-script-out\n", |
|
|
349 |
"\n", |
|
|
350 |
"Out:\n", |
|
|
351 |
"\n", |
|
|
352 |
"``` {.none}\n", |
|
|
353 |
"array([[ 0.08820262, 0.02000786, 0.0489369 , 0.11204466, 0.0933779 ],\n", |
|
|
354 |
" [-0.04886389, 0.04750442, -0.00756786, -0.00516094, 0.02052993],\n", |
|
|
355 |
" [ 0.00720218, 0.07271368, 0.03805189, 0.00608375, 0.02219316],\n", |
|
|
356 |
" [ 0.01668372, 0.07470395, -0.01025791, 0.01565339, -0.04270479]])\n", |
|
|
357 |
"```\n", |
|
|
358 |
":::\n", |
|
|
359 |
"\n", |
|
|
360 |
"Using the Adam optimizer, we update the weights for 500 steps (this\n", |
|
|
361 |
"takes some time). More steps will lead to a better fit.\n" |
|
|
362 |
] |
|
|
363 |
}, |
|
|
364 |
{ |
|
|
365 |
"cell_type": "code", |
|
|
366 |
"execution_count": 26, |
|
|
367 |
"metadata": { |
|
|
368 |
"colab": { |
|
|
369 |
"base_uri": "https://localhost:8080/", |
|
|
370 |
"height": 0 |
|
|
371 |
}, |
|
|
372 |
"id": "Dsn2cESrfWun", |
|
|
373 |
"outputId": "362a782e-e5d3-4cd9-e1c1-8a4c83004cd6" |
|
|
374 |
}, |
|
|
375 |
"outputs": [ |
|
|
376 |
{ |
|
|
377 |
"output_type": "stream", |
|
|
378 |
"name": "stdout", |
|
|
379 |
"text": [ |
|
|
380 |
"Iter: 0 | Cost: 0.1953591 \n", |
|
|
381 |
"Iter: 1 | Cost: 0.1760630 \n", |
|
|
382 |
"Iter: 2 | Cost: 0.1280265 \n", |
|
|
383 |
"Iter: 3 | Cost: 0.1033294 \n", |
|
|
384 |
"Iter: 4 | Cost: 0.1076633 \n", |
|
|
385 |
"Iter: 5 | Cost: 0.1139029 \n", |
|
|
386 |
"Iter: 6 | Cost: 0.1083542 \n", |
|
|
387 |
"Iter: 7 | Cost: 0.0949943 \n", |
|
|
388 |
"Iter: 8 | Cost: 0.0832784 \n", |
|
|
389 |
"Iter: 9 | Cost: 0.0767903 \n", |
|
|
390 |
"Iter: 10 | Cost: 0.0712995 \n", |
|
|
391 |
"Iter: 11 | Cost: 0.0637771 \n", |
|
|
392 |
"Iter: 12 | Cost: 0.0566462 \n", |
|
|
393 |
"Iter: 13 | Cost: 0.0534050 \n", |
|
|
394 |
"Iter: 14 | Cost: 0.0541692 \n", |
|
|
395 |
"Iter: 15 | Cost: 0.0555957 \n", |
|
|
396 |
"Iter: 16 | Cost: 0.0545832 \n", |
|
|
397 |
"Iter: 17 | Cost: 0.0511300 \n", |
|
|
398 |
"Iter: 18 | Cost: 0.0473931 \n", |
|
|
399 |
"Iter: 19 | Cost: 0.0449718 \n", |
|
|
400 |
"Iter: 20 | Cost: 0.0435704 \n", |
|
|
401 |
"Iter: 21 | Cost: 0.0420049 \n", |
|
|
402 |
"Iter: 22 | Cost: 0.0398776 \n", |
|
|
403 |
"Iter: 23 | Cost: 0.0379477 \n", |
|
|
404 |
"Iter: 24 | Cost: 0.0371379 \n", |
|
|
405 |
"Iter: 25 | Cost: 0.0374116 \n", |
|
|
406 |
"Iter: 26 | Cost: 0.0377261 \n", |
|
|
407 |
"Iter: 27 | Cost: 0.0371878 \n", |
|
|
408 |
"Iter: 28 | Cost: 0.0359989 \n", |
|
|
409 |
"Iter: 29 | Cost: 0.0349924 \n", |
|
|
410 |
"Iter: 30 | Cost: 0.0344678 \n", |
|
|
411 |
"Iter: 31 | Cost: 0.0338852 \n", |
|
|
412 |
"Iter: 32 | Cost: 0.0327405 \n", |
|
|
413 |
"Iter: 33 | Cost: 0.0313381 \n", |
|
|
414 |
"Iter: 34 | Cost: 0.0303905 \n", |
|
|
415 |
"Iter: 35 | Cost: 0.0299950 \n", |
|
|
416 |
"Iter: 36 | Cost: 0.0295065 \n", |
|
|
417 |
"Iter: 37 | Cost: 0.0286275 \n", |
|
|
418 |
"Iter: 38 | Cost: 0.0278635 \n", |
|
|
419 |
"Iter: 39 | Cost: 0.0274869 \n", |
|
|
420 |
"Iter: 40 | Cost: 0.0269680 \n", |
|
|
421 |
"Iter: 41 | Cost: 0.0259809 \n", |
|
|
422 |
"Iter: 42 | Cost: 0.0250282 \n", |
|
|
423 |
"Iter: 43 | Cost: 0.0244160 \n", |
|
|
424 |
"Iter: 44 | Cost: 0.0236680 \n", |
|
|
425 |
"Iter: 45 | Cost: 0.0227070 \n", |
|
|
426 |
"Iter: 46 | Cost: 0.0220522 \n", |
|
|
427 |
"Iter: 47 | Cost: 0.0215239 \n", |
|
|
428 |
"Iter: 48 | Cost: 0.0206936 \n", |
|
|
429 |
"Iter: 49 | Cost: 0.0199339 \n", |
|
|
430 |
"Iter: 50 | Cost: 0.0193614 \n", |
|
|
431 |
"Iter: 51 | Cost: 0.0185377 \n", |
|
|
432 |
"Iter: 52 | Cost: 0.0177607 \n", |
|
|
433 |
"Iter: 53 | Cost: 0.0171738 \n", |
|
|
434 |
"Iter: 54 | Cost: 0.0164026 \n", |
|
|
435 |
"Iter: 55 | Cost: 0.0157788 \n", |
|
|
436 |
"Iter: 56 | Cost: 0.0153037 \n", |
|
|
437 |
"Iter: 57 | Cost: 0.0147136 \n", |
|
|
438 |
"Iter: 58 | Cost: 0.0143401 \n", |
|
|
439 |
"Iter: 59 | Cost: 0.0139152 \n", |
|
|
440 |
"Iter: 60 | Cost: 0.0134946 \n", |
|
|
441 |
"Iter: 61 | Cost: 0.0131975 \n", |
|
|
442 |
"Iter: 62 | Cost: 0.0127899 \n", |
|
|
443 |
"Iter: 63 | Cost: 0.0125392 \n", |
|
|
444 |
"Iter: 64 | Cost: 0.0122378 \n", |
|
|
445 |
"Iter: 65 | Cost: 0.0120279 \n", |
|
|
446 |
"Iter: 66 | Cost: 0.0118517 \n", |
|
|
447 |
"Iter: 67 | Cost: 0.0116809 \n", |
|
|
448 |
"Iter: 68 | Cost: 0.0115883 \n", |
|
|
449 |
"Iter: 69 | Cost: 0.0114548 \n", |
|
|
450 |
"Iter: 70 | Cost: 0.0114008 \n", |
|
|
451 |
"Iter: 71 | Cost: 0.0112892 \n", |
|
|
452 |
"Iter: 72 | Cost: 0.0112523 \n", |
|
|
453 |
"Iter: 73 | Cost: 0.0111690 \n", |
|
|
454 |
"Iter: 74 | Cost: 0.0111512 \n", |
|
|
455 |
"Iter: 75 | Cost: 0.0110933 \n", |
|
|
456 |
"Iter: 76 | Cost: 0.0110899 \n", |
|
|
457 |
"Iter: 77 | Cost: 0.0110513 \n", |
|
|
458 |
"Iter: 78 | Cost: 0.0110547 \n", |
|
|
459 |
"Iter: 79 | Cost: 0.0110280 \n", |
|
|
460 |
"Iter: 80 | Cost: 0.0110328 \n", |
|
|
461 |
"Iter: 81 | Cost: 0.0110184 \n", |
|
|
462 |
"Iter: 82 | Cost: 0.0110232 \n", |
|
|
463 |
"Iter: 83 | Cost: 0.0110204 \n", |
|
|
464 |
"Iter: 84 | Cost: 0.0110216 \n", |
|
|
465 |
"Iter: 85 | Cost: 0.0110261 \n", |
|
|
466 |
"Iter: 86 | Cost: 0.0110209 \n", |
|
|
467 |
"Iter: 87 | Cost: 0.0110270 \n", |
|
|
468 |
"Iter: 88 | Cost: 0.0110186 \n", |
|
|
469 |
"Iter: 89 | Cost: 0.0110233 \n", |
|
|
470 |
"Iter: 90 | Cost: 0.0110171 \n", |
|
|
471 |
"Iter: 91 | Cost: 0.0110178 \n", |
|
|
472 |
"Iter: 92 | Cost: 0.0110159 \n", |
|
|
473 |
"Iter: 93 | Cost: 0.0110115 \n", |
|
|
474 |
"Iter: 94 | Cost: 0.0110109 \n", |
|
|
475 |
"Iter: 95 | Cost: 0.0110031 \n", |
|
|
476 |
"Iter: 96 | Cost: 0.0110015 \n", |
|
|
477 |
"Iter: 97 | Cost: 0.0109945 \n", |
|
|
478 |
"Iter: 98 | Cost: 0.0109914 \n", |
|
|
479 |
"Iter: 99 | Cost: 0.0109884 \n", |
|
|
480 |
"Iter: 100 | Cost: 0.0109849 \n", |
|
|
481 |
"Iter: 101 | Cost: 0.0109847 \n", |
|
|
482 |
"Iter: 102 | Cost: 0.0109816 \n", |
|
|
483 |
"Iter: 103 | Cost: 0.0109818 \n", |
|
|
484 |
"Iter: 104 | Cost: 0.0109798 \n", |
|
|
485 |
"Iter: 105 | Cost: 0.0109793 \n", |
|
|
486 |
"Iter: 106 | Cost: 0.0109789 \n", |
|
|
487 |
"Iter: 107 | Cost: 0.0109780 \n", |
|
|
488 |
"Iter: 108 | Cost: 0.0109788 \n", |
|
|
489 |
"Iter: 109 | Cost: 0.0109780 \n", |
|
|
490 |
"Iter: 110 | Cost: 0.0109786 \n", |
|
|
491 |
"Iter: 111 | Cost: 0.0109781 \n", |
|
|
492 |
"Iter: 112 | Cost: 0.0109777 \n", |
|
|
493 |
"Iter: 113 | Cost: 0.0109774 \n", |
|
|
494 |
"Iter: 114 | Cost: 0.0109762 \n", |
|
|
495 |
"Iter: 115 | Cost: 0.0109759 \n", |
|
|
496 |
"Iter: 116 | Cost: 0.0109747 \n", |
|
|
497 |
"Iter: 117 | Cost: 0.0109740 \n", |
|
|
498 |
"Iter: 118 | Cost: 0.0109732 \n", |
|
|
499 |
"Iter: 119 | Cost: 0.0109722 \n", |
|
|
500 |
"Iter: 120 | Cost: 0.0109717 \n", |
|
|
501 |
"Iter: 121 | Cost: 0.0109708 \n", |
|
|
502 |
"Iter: 122 | Cost: 0.0109703 \n", |
|
|
503 |
"Iter: 123 | Cost: 0.0109698 \n", |
|
|
504 |
"Iter: 124 | Cost: 0.0109693 \n", |
|
|
505 |
"Iter: 125 | Cost: 0.0109691 \n", |
|
|
506 |
"Iter: 126 | Cost: 0.0109686 \n", |
|
|
507 |
"Iter: 127 | Cost: 0.0109683 \n", |
|
|
508 |
"Iter: 128 | Cost: 0.0109681 \n", |
|
|
509 |
"Iter: 129 | Cost: 0.0109676 \n", |
|
|
510 |
"Iter: 130 | Cost: 0.0109674 \n", |
|
|
511 |
"Iter: 131 | Cost: 0.0109671 \n", |
|
|
512 |
"Iter: 132 | Cost: 0.0109668 \n", |
|
|
513 |
"Iter: 133 | Cost: 0.0109665 \n", |
|
|
514 |
"Iter: 134 | Cost: 0.0109661 \n", |
|
|
515 |
"Iter: 135 | Cost: 0.0109657 \n", |
|
|
516 |
"Iter: 136 | Cost: 0.0109653 \n", |
|
|
517 |
"Iter: 137 | Cost: 0.0109649 \n", |
|
|
518 |
"Iter: 138 | Cost: 0.0109646 \n", |
|
|
519 |
"Iter: 139 | Cost: 0.0109642 \n", |
|
|
520 |
"Iter: 140 | Cost: 0.0109639 \n", |
|
|
521 |
"Iter: 141 | Cost: 0.0109636 \n", |
|
|
522 |
"Iter: 142 | Cost: 0.0109632 \n", |
|
|
523 |
"Iter: 143 | Cost: 0.0109629 \n", |
|
|
524 |
"Iter: 144 | Cost: 0.0109627 \n", |
|
|
525 |
"Iter: 145 | Cost: 0.0109624 \n", |
|
|
526 |
"Iter: 146 | Cost: 0.0109621 \n", |
|
|
527 |
"Iter: 147 | Cost: 0.0109619 \n", |
|
|
528 |
"Iter: 148 | Cost: 0.0109616 \n", |
|
|
529 |
"Iter: 149 | Cost: 0.0109613 \n", |
|
|
530 |
"Iter: 150 | Cost: 0.0109611 \n", |
|
|
531 |
"Iter: 151 | Cost: 0.0109608 \n", |
|
|
532 |
"Iter: 152 | Cost: 0.0109606 \n", |
|
|
533 |
"Iter: 153 | Cost: 0.0109603 \n", |
|
|
534 |
"Iter: 154 | Cost: 0.0109600 \n", |
|
|
535 |
"Iter: 155 | Cost: 0.0109598 \n", |
|
|
536 |
"Iter: 156 | Cost: 0.0109595 \n", |
|
|
537 |
"Iter: 157 | Cost: 0.0109593 \n", |
|
|
538 |
"Iter: 158 | Cost: 0.0109590 \n", |
|
|
539 |
"Iter: 159 | Cost: 0.0109588 \n", |
|
|
540 |
"Iter: 160 | Cost: 0.0109586 \n", |
|
|
541 |
"Iter: 161 | Cost: 0.0109584 \n", |
|
|
542 |
"Iter: 162 | Cost: 0.0109581 \n", |
|
|
543 |
"Iter: 163 | Cost: 0.0109579 \n", |
|
|
544 |
"Iter: 164 | Cost: 0.0109577 \n", |
|
|
545 |
"Iter: 165 | Cost: 0.0109575 \n", |
|
|
546 |
"Iter: 166 | Cost: 0.0109573 \n", |
|
|
547 |
"Iter: 167 | Cost: 0.0109571 \n", |
|
|
548 |
"Iter: 168 | Cost: 0.0109569 \n", |
|
|
549 |
"Iter: 169 | Cost: 0.0109567 \n", |
|
|
550 |
"Iter: 170 | Cost: 0.0109565 \n", |
|
|
551 |
"Iter: 171 | Cost: 0.0109563 \n", |
|
|
552 |
"Iter: 172 | Cost: 0.0109561 \n", |
|
|
553 |
"Iter: 173 | Cost: 0.0109559 \n", |
|
|
554 |
"Iter: 174 | Cost: 0.0109557 \n", |
|
|
555 |
"Iter: 175 | Cost: 0.0109555 \n", |
|
|
556 |
"Iter: 176 | Cost: 0.0109553 \n", |
|
|
557 |
"Iter: 177 | Cost: 0.0109551 \n", |
|
|
558 |
"Iter: 178 | Cost: 0.0109549 \n", |
|
|
559 |
"Iter: 179 | Cost: 0.0109547 \n", |
|
|
560 |
"Iter: 180 | Cost: 0.0109546 \n", |
|
|
561 |
"Iter: 181 | Cost: 0.0109544 \n", |
|
|
562 |
"Iter: 182 | Cost: 0.0109542 \n", |
|
|
563 |
"Iter: 183 | Cost: 0.0109540 \n", |
|
|
564 |
"Iter: 184 | Cost: 0.0109539 \n", |
|
|
565 |
"Iter: 185 | Cost: 0.0109537 \n", |
|
|
566 |
"Iter: 186 | Cost: 0.0109535 \n", |
|
|
567 |
"Iter: 187 | Cost: 0.0109534 \n", |
|
|
568 |
"Iter: 188 | Cost: 0.0109532 \n", |
|
|
569 |
"Iter: 189 | Cost: 0.0109531 \n", |
|
|
570 |
"Iter: 190 | Cost: 0.0109529 \n", |
|
|
571 |
"Iter: 191 | Cost: 0.0109527 \n", |
|
|
572 |
"Iter: 192 | Cost: 0.0109526 \n", |
|
|
573 |
"Iter: 193 | Cost: 0.0109524 \n", |
|
|
574 |
"Iter: 194 | Cost: 0.0109523 \n", |
|
|
575 |
"Iter: 195 | Cost: 0.0109521 \n", |
|
|
576 |
"Iter: 196 | Cost: 0.0109520 \n", |
|
|
577 |
"Iter: 197 | Cost: 0.0109518 \n", |
|
|
578 |
"Iter: 198 | Cost: 0.0109517 \n", |
|
|
579 |
"Iter: 199 | Cost: 0.0109516 \n", |
|
|
580 |
"Iter: 200 | Cost: 0.0109514 \n", |
|
|
581 |
"Iter: 201 | Cost: 0.0109513 \n", |
|
|
582 |
"Iter: 202 | Cost: 0.0109511 \n", |
|
|
583 |
"Iter: 203 | Cost: 0.0109510 \n", |
|
|
584 |
"Iter: 204 | Cost: 0.0109509 \n", |
|
|
585 |
"Iter: 205 | Cost: 0.0109507 \n", |
|
|
586 |
"Iter: 206 | Cost: 0.0109506 \n", |
|
|
587 |
"Iter: 207 | Cost: 0.0109505 \n", |
|
|
588 |
"Iter: 208 | Cost: 0.0109503 \n", |
|
|
589 |
"Iter: 209 | Cost: 0.0109502 \n", |
|
|
590 |
"Iter: 210 | Cost: 0.0109501 \n", |
|
|
591 |
"Iter: 211 | Cost: 0.0109500 \n", |
|
|
592 |
"Iter: 212 | Cost: 0.0109498 \n", |
|
|
593 |
"Iter: 213 | Cost: 0.0109497 \n", |
|
|
594 |
"Iter: 214 | Cost: 0.0109496 \n", |
|
|
595 |
"Iter: 215 | Cost: 0.0109495 \n", |
|
|
596 |
"Iter: 216 | Cost: 0.0109493 \n", |
|
|
597 |
"Iter: 217 | Cost: 0.0109492 \n", |
|
|
598 |
"Iter: 218 | Cost: 0.0109491 \n", |
|
|
599 |
"Iter: 219 | Cost: 0.0109490 \n", |
|
|
600 |
"Iter: 220 | Cost: 0.0109489 \n", |
|
|
601 |
"Iter: 221 | Cost: 0.0109488 \n", |
|
|
602 |
"Iter: 222 | Cost: 0.0109486 \n", |
|
|
603 |
"Iter: 223 | Cost: 0.0109485 \n", |
|
|
604 |
"Iter: 224 | Cost: 0.0109484 \n", |
|
|
605 |
"Iter: 225 | Cost: 0.0109483 \n", |
|
|
606 |
"Iter: 226 | Cost: 0.0109482 \n", |
|
|
607 |
"Iter: 227 | Cost: 0.0109481 \n", |
|
|
608 |
"Iter: 228 | Cost: 0.0109480 \n", |
|
|
609 |
"Iter: 229 | Cost: 0.0109479 \n", |
|
|
610 |
"Iter: 230 | Cost: 0.0109478 \n", |
|
|
611 |
"Iter: 231 | Cost: 0.0109476 \n", |
|
|
612 |
"Iter: 232 | Cost: 0.0109475 \n", |
|
|
613 |
"Iter: 233 | Cost: 0.0109474 \n", |
|
|
614 |
"Iter: 234 | Cost: 0.0109473 \n", |
|
|
615 |
"Iter: 235 | Cost: 0.0109472 \n", |
|
|
616 |
"Iter: 236 | Cost: 0.0109471 \n", |
|
|
617 |
"Iter: 237 | Cost: 0.0109470 \n", |
|
|
618 |
"Iter: 238 | Cost: 0.0109469 \n", |
|
|
619 |
"Iter: 239 | Cost: 0.0109468 \n", |
|
|
620 |
"Iter: 240 | Cost: 0.0109467 \n", |
|
|
621 |
"Iter: 241 | Cost: 0.0109466 \n", |
|
|
622 |
"Iter: 242 | Cost: 0.0109465 \n", |
|
|
623 |
"Iter: 243 | Cost: 0.0109464 \n", |
|
|
624 |
"Iter: 244 | Cost: 0.0109463 \n", |
|
|
625 |
"Iter: 245 | Cost: 0.0109462 \n", |
|
|
626 |
"Iter: 246 | Cost: 0.0109461 \n", |
|
|
627 |
"Iter: 247 | Cost: 0.0109460 \n", |
|
|
628 |
"Iter: 248 | Cost: 0.0109459 \n", |
|
|
629 |
"Iter: 249 | Cost: 0.0109458 \n", |
|
|
630 |
"Iter: 250 | Cost: 0.0109457 \n", |
|
|
631 |
"Iter: 251 | Cost: 0.0109456 \n", |
|
|
632 |
"Iter: 252 | Cost: 0.0109455 \n", |
|
|
633 |
"Iter: 253 | Cost: 0.0109454 \n", |
|
|
634 |
"Iter: 254 | Cost: 0.0109454 \n", |
|
|
635 |
"Iter: 255 | Cost: 0.0109453 \n", |
|
|
636 |
"Iter: 256 | Cost: 0.0109452 \n", |
|
|
637 |
"Iter: 257 | Cost: 0.0109451 \n", |
|
|
638 |
"Iter: 258 | Cost: 0.0109450 \n", |
|
|
639 |
"Iter: 259 | Cost: 0.0109449 \n", |
|
|
640 |
"Iter: 260 | Cost: 0.0109448 \n", |
|
|
641 |
"Iter: 261 | Cost: 0.0109447 \n", |
|
|
642 |
"Iter: 262 | Cost: 0.0109446 \n", |
|
|
643 |
"Iter: 263 | Cost: 0.0109445 \n", |
|
|
644 |
"Iter: 264 | Cost: 0.0109444 \n", |
|
|
645 |
"Iter: 265 | Cost: 0.0109444 \n", |
|
|
646 |
"Iter: 266 | Cost: 0.0109443 \n", |
|
|
647 |
"Iter: 267 | Cost: 0.0109442 \n", |
|
|
648 |
"Iter: 268 | Cost: 0.0109441 \n", |
|
|
649 |
"Iter: 269 | Cost: 0.0109440 \n", |
|
|
650 |
"Iter: 270 | Cost: 0.0109439 \n", |
|
|
651 |
"Iter: 271 | Cost: 0.0109438 \n", |
|
|
652 |
"Iter: 272 | Cost: 0.0109437 \n", |
|
|
653 |
"Iter: 273 | Cost: 0.0109437 \n", |
|
|
654 |
"Iter: 274 | Cost: 0.0109436 \n", |
|
|
655 |
"Iter: 275 | Cost: 0.0109435 \n", |
|
|
656 |
"Iter: 276 | Cost: 0.0109434 \n", |
|
|
657 |
"Iter: 277 | Cost: 0.0109433 \n", |
|
|
658 |
"Iter: 278 | Cost: 0.0109432 \n", |
|
|
659 |
"Iter: 279 | Cost: 0.0109432 \n", |
|
|
660 |
"Iter: 280 | Cost: 0.0109431 \n", |
|
|
661 |
"Iter: 281 | Cost: 0.0109430 \n", |
|
|
662 |
"Iter: 282 | Cost: 0.0109429 \n", |
|
|
663 |
"Iter: 283 | Cost: 0.0109428 \n", |
|
|
664 |
"Iter: 284 | Cost: 0.0109427 \n", |
|
|
665 |
"Iter: 285 | Cost: 0.0109427 \n", |
|
|
666 |
"Iter: 286 | Cost: 0.0109426 \n", |
|
|
667 |
"Iter: 287 | Cost: 0.0109425 \n", |
|
|
668 |
"Iter: 288 | Cost: 0.0109424 \n", |
|
|
669 |
"Iter: 289 | Cost: 0.0109424 \n", |
|
|
670 |
"Iter: 290 | Cost: 0.0109424 \n", |
|
|
671 |
"Iter: 291 | Cost: 0.0109426 \n", |
|
|
672 |
"Iter: 292 | Cost: 0.0109431 \n", |
|
|
673 |
"Iter: 293 | Cost: 0.0109446 \n", |
|
|
674 |
"Iter: 294 | Cost: 0.0109485 \n", |
|
|
675 |
"Iter: 295 | Cost: 0.0109590 \n", |
|
|
676 |
"Iter: 296 | Cost: 0.0109867 \n", |
|
|
677 |
"Iter: 297 | Cost: 0.0110639 \n", |
|
|
678 |
"Iter: 298 | Cost: 0.0112616 \n", |
|
|
679 |
"Iter: 299 | Cost: 0.0118101 \n", |
|
|
680 |
"Iter: 300 | Cost: 0.0128535 \n", |
|
|
681 |
"Iter: 301 | Cost: 0.0147796 \n", |
|
|
682 |
"Iter: 302 | Cost: 0.0141068 \n", |
|
|
683 |
"Iter: 303 | Cost: 0.0118849 \n", |
|
|
684 |
"Iter: 304 | Cost: 0.0111496 \n", |
|
|
685 |
"Iter: 305 | Cost: 0.0127417 \n", |
|
|
686 |
"Iter: 306 | Cost: 0.0121447 \n", |
|
|
687 |
"Iter: 307 | Cost: 0.0110769 \n", |
|
|
688 |
"Iter: 308 | Cost: 0.0124027 \n", |
|
|
689 |
"Iter: 309 | Cost: 0.0116393 \n", |
|
|
690 |
"Iter: 310 | Cost: 0.0112623 \n", |
|
|
691 |
"Iter: 311 | Cost: 0.0121139 \n", |
|
|
692 |
"Iter: 312 | Cost: 0.0111192 \n", |
|
|
693 |
"Iter: 313 | Cost: 0.0115022 \n", |
|
|
694 |
"Iter: 314 | Cost: 0.0115327 \n", |
|
|
695 |
"Iter: 315 | Cost: 0.0109901 \n", |
|
|
696 |
"Iter: 316 | Cost: 0.0115208 \n", |
|
|
697 |
"Iter: 317 | Cost: 0.0110643 \n", |
|
|
698 |
"Iter: 318 | Cost: 0.0111634 \n", |
|
|
699 |
"Iter: 319 | Cost: 0.0113186 \n", |
|
|
700 |
"Iter: 320 | Cost: 0.0109505 \n", |
|
|
701 |
"Iter: 321 | Cost: 0.0112846 \n", |
|
|
702 |
"Iter: 322 | Cost: 0.0110900 \n", |
|
|
703 |
"Iter: 323 | Cost: 0.0110308 \n", |
|
|
704 |
"Iter: 324 | Cost: 0.0112228 \n", |
|
|
705 |
"Iter: 325 | Cost: 0.0109661 \n", |
|
|
706 |
"Iter: 326 | Cost: 0.0111085 \n", |
|
|
707 |
"Iter: 327 | Cost: 0.0110716 \n", |
|
|
708 |
"Iter: 328 | Cost: 0.0109692 \n", |
|
|
709 |
"Iter: 329 | Cost: 0.0111017 \n", |
|
|
710 |
"Iter: 330 | Cost: 0.0109652 \n", |
|
|
711 |
"Iter: 331 | Cost: 0.0110268 \n", |
|
|
712 |
"Iter: 332 | Cost: 0.0110257 \n", |
|
|
713 |
"Iter: 333 | Cost: 0.0109581 \n", |
|
|
714 |
"Iter: 334 | Cost: 0.0110400 \n", |
|
|
715 |
"Iter: 335 | Cost: 0.0109602 \n", |
|
|
716 |
"Iter: 336 | Cost: 0.0109968 \n", |
|
|
717 |
"Iter: 337 | Cost: 0.0109937 \n", |
|
|
718 |
"Iter: 338 | Cost: 0.0109574 \n", |
|
|
719 |
"Iter: 339 | Cost: 0.0110029 \n", |
|
|
720 |
"Iter: 340 | Cost: 0.0109548 \n", |
|
|
721 |
"Iter: 341 | Cost: 0.0109808 \n", |
|
|
722 |
"Iter: 342 | Cost: 0.0109736 \n", |
|
|
723 |
"Iter: 343 | Cost: 0.0109551 \n", |
|
|
724 |
"Iter: 344 | Cost: 0.0109812 \n", |
|
|
725 |
"Iter: 345 | Cost: 0.0109515 \n", |
|
|
726 |
"Iter: 346 | Cost: 0.0109669 \n", |
|
|
727 |
"Iter: 347 | Cost: 0.0109634 \n", |
|
|
728 |
"Iter: 348 | Cost: 0.0109510 \n", |
|
|
729 |
"Iter: 349 | Cost: 0.0109675 \n", |
|
|
730 |
"Iter: 350 | Cost: 0.0109507 \n", |
|
|
731 |
"Iter: 351 | Cost: 0.0109578 \n", |
|
|
732 |
"Iter: 352 | Cost: 0.0109590 \n", |
|
|
733 |
"Iter: 353 | Cost: 0.0109491 \n", |
|
|
734 |
"Iter: 354 | Cost: 0.0109595 \n", |
|
|
735 |
"Iter: 355 | Cost: 0.0109509 \n", |
|
|
736 |
"Iter: 356 | Cost: 0.0109519 \n", |
|
|
737 |
"Iter: 357 | Cost: 0.0109554 \n", |
|
|
738 |
"Iter: 358 | Cost: 0.0109478 \n", |
|
|
739 |
"Iter: 359 | Cost: 0.0109533 \n", |
|
|
740 |
"Iter: 360 | Cost: 0.0109503 \n", |
|
|
741 |
"Iter: 361 | Cost: 0.0109483 \n", |
|
|
742 |
"Iter: 362 | Cost: 0.0109520 \n", |
|
|
743 |
"Iter: 363 | Cost: 0.0109474 \n", |
|
|
744 |
"Iter: 364 | Cost: 0.0109495 \n", |
|
|
745 |
"Iter: 365 | Cost: 0.0109495 \n", |
|
|
746 |
"Iter: 366 | Cost: 0.0109468 \n", |
|
|
747 |
"Iter: 367 | Cost: 0.0109495 \n", |
|
|
748 |
"Iter: 368 | Cost: 0.0109473 \n", |
|
|
749 |
"Iter: 369 | Cost: 0.0109472 \n", |
|
|
750 |
"Iter: 370 | Cost: 0.0109483 \n", |
|
|
751 |
"Iter: 371 | Cost: 0.0109462 \n", |
|
|
752 |
"Iter: 372 | Cost: 0.0109472 \n", |
|
|
753 |
"Iter: 373 | Cost: 0.0109469 \n", |
|
|
754 |
"Iter: 374 | Cost: 0.0109458 \n", |
|
|
755 |
"Iter: 375 | Cost: 0.0109469 \n", |
|
|
756 |
"Iter: 376 | Cost: 0.0109459 \n", |
|
|
757 |
"Iter: 377 | Cost: 0.0109457 \n", |
|
|
758 |
"Iter: 378 | Cost: 0.0109462 \n", |
|
|
759 |
"Iter: 379 | Cost: 0.0109452 \n", |
|
|
760 |
"Iter: 380 | Cost: 0.0109455 \n", |
|
|
761 |
"Iter: 381 | Cost: 0.0109455 \n", |
|
|
762 |
"Iter: 382 | Cost: 0.0109449 \n", |
|
|
763 |
"Iter: 383 | Cost: 0.0109452 \n", |
|
|
764 |
"Iter: 384 | Cost: 0.0109449 \n", |
|
|
765 |
"Iter: 385 | Cost: 0.0109446 \n", |
|
|
766 |
"Iter: 386 | Cost: 0.0109448 \n", |
|
|
767 |
"Iter: 387 | Cost: 0.0109444 \n", |
|
|
768 |
"Iter: 388 | Cost: 0.0109443 \n", |
|
|
769 |
"Iter: 389 | Cost: 0.0109444 \n", |
|
|
770 |
"Iter: 390 | Cost: 0.0109441 \n", |
|
|
771 |
"Iter: 391 | Cost: 0.0109440 \n", |
|
|
772 |
"Iter: 392 | Cost: 0.0109440 \n", |
|
|
773 |
"Iter: 393 | Cost: 0.0109437 \n", |
|
|
774 |
"Iter: 394 | Cost: 0.0109438 \n", |
|
|
775 |
"Iter: 395 | Cost: 0.0109437 \n", |
|
|
776 |
"Iter: 396 | Cost: 0.0109434 \n", |
|
|
777 |
"Iter: 397 | Cost: 0.0109435 \n", |
|
|
778 |
"Iter: 398 | Cost: 0.0109433 \n", |
|
|
779 |
"Iter: 399 | Cost: 0.0109431 \n", |
|
|
780 |
"Iter: 400 | Cost: 0.0109431 \n", |
|
|
781 |
"Iter: 401 | Cost: 0.0109430 \n", |
|
|
782 |
"Iter: 402 | Cost: 0.0109429 \n", |
|
|
783 |
"Iter: 403 | Cost: 0.0109428 \n", |
|
|
784 |
"Iter: 404 | Cost: 0.0109427 \n", |
|
|
785 |
"Iter: 405 | Cost: 0.0109426 \n", |
|
|
786 |
"Iter: 406 | Cost: 0.0109426 \n", |
|
|
787 |
"Iter: 407 | Cost: 0.0109424 \n", |
|
|
788 |
"Iter: 408 | Cost: 0.0109423 \n", |
|
|
789 |
"Iter: 409 | Cost: 0.0109423 \n", |
|
|
790 |
"Iter: 410 | Cost: 0.0109422 \n", |
|
|
791 |
"Iter: 411 | Cost: 0.0109421 \n", |
|
|
792 |
"Iter: 412 | Cost: 0.0109420 \n", |
|
|
793 |
"Iter: 413 | Cost: 0.0109419 \n", |
|
|
794 |
"Iter: 414 | Cost: 0.0109418 \n", |
|
|
795 |
"Iter: 415 | Cost: 0.0109417 \n", |
|
|
796 |
"Iter: 416 | Cost: 0.0109416 \n", |
|
|
797 |
"Iter: 417 | Cost: 0.0109415 \n", |
|
|
798 |
"Iter: 418 | Cost: 0.0109415 \n", |
|
|
799 |
"Iter: 419 | Cost: 0.0109414 \n", |
|
|
800 |
"Iter: 420 | Cost: 0.0109413 \n", |
|
|
801 |
"Iter: 421 | Cost: 0.0109412 \n", |
|
|
802 |
"Iter: 422 | Cost: 0.0109411 \n", |
|
|
803 |
"Iter: 423 | Cost: 0.0109410 \n", |
|
|
804 |
"Iter: 424 | Cost: 0.0109410 \n", |
|
|
805 |
"Iter: 425 | Cost: 0.0109409 \n", |
|
|
806 |
"Iter: 426 | Cost: 0.0109408 \n", |
|
|
807 |
"Iter: 427 | Cost: 0.0109407 \n", |
|
|
808 |
"Iter: 428 | Cost: 0.0109406 \n", |
|
|
809 |
"Iter: 429 | Cost: 0.0109406 \n", |
|
|
810 |
"Iter: 430 | Cost: 0.0109405 \n", |
|
|
811 |
"Iter: 431 | Cost: 0.0109404 \n", |
|
|
812 |
"Iter: 432 | Cost: 0.0109403 \n", |
|
|
813 |
"Iter: 433 | Cost: 0.0109402 \n", |
|
|
814 |
"Iter: 434 | Cost: 0.0109402 \n", |
|
|
815 |
"Iter: 435 | Cost: 0.0109401 \n", |
|
|
816 |
"Iter: 436 | Cost: 0.0109400 \n", |
|
|
817 |
"Iter: 437 | Cost: 0.0109399 \n", |
|
|
818 |
"Iter: 438 | Cost: 0.0109398 \n", |
|
|
819 |
"Iter: 439 | Cost: 0.0109398 \n", |
|
|
820 |
"Iter: 440 | Cost: 0.0109397 \n", |
|
|
821 |
"Iter: 441 | Cost: 0.0109396 \n", |
|
|
822 |
"Iter: 442 | Cost: 0.0109395 \n", |
|
|
823 |
"Iter: 443 | Cost: 0.0109395 \n", |
|
|
824 |
"Iter: 444 | Cost: 0.0109394 \n", |
|
|
825 |
"Iter: 445 | Cost: 0.0109393 \n", |
|
|
826 |
"Iter: 446 | Cost: 0.0109392 \n", |
|
|
827 |
"Iter: 447 | Cost: 0.0109392 \n", |
|
|
828 |
"Iter: 448 | Cost: 0.0109391 \n", |
|
|
829 |
"Iter: 449 | Cost: 0.0109390 \n", |
|
|
830 |
"Iter: 450 | Cost: 0.0109389 \n", |
|
|
831 |
"Iter: 451 | Cost: 0.0109389 \n", |
|
|
832 |
"Iter: 452 | Cost: 0.0109388 \n", |
|
|
833 |
"Iter: 453 | Cost: 0.0109387 \n", |
|
|
834 |
"Iter: 454 | Cost: 0.0109386 \n", |
|
|
835 |
"Iter: 455 | Cost: 0.0109386 \n", |
|
|
836 |
"Iter: 456 | Cost: 0.0109385 \n", |
|
|
837 |
"Iter: 457 | Cost: 0.0109384 \n", |
|
|
838 |
"Iter: 458 | Cost: 0.0109384 \n", |
|
|
839 |
"Iter: 459 | Cost: 0.0109383 \n", |
|
|
840 |
"Iter: 460 | Cost: 0.0109382 \n", |
|
|
841 |
"Iter: 461 | Cost: 0.0109381 \n", |
|
|
842 |
"Iter: 462 | Cost: 0.0109381 \n", |
|
|
843 |
"Iter: 463 | Cost: 0.0109380 \n", |
|
|
844 |
"Iter: 464 | Cost: 0.0109379 \n", |
|
|
845 |
"Iter: 465 | Cost: 0.0109378 \n", |
|
|
846 |
"Iter: 466 | Cost: 0.0109378 \n", |
|
|
847 |
"Iter: 467 | Cost: 0.0109377 \n", |
|
|
848 |
"Iter: 468 | Cost: 0.0109376 \n", |
|
|
849 |
"Iter: 469 | Cost: 0.0109376 \n", |
|
|
850 |
"Iter: 470 | Cost: 0.0109375 \n", |
|
|
851 |
"Iter: 471 | Cost: 0.0109374 \n", |
|
|
852 |
"Iter: 472 | Cost: 0.0109374 \n", |
|
|
853 |
"Iter: 473 | Cost: 0.0109373 \n", |
|
|
854 |
"Iter: 474 | Cost: 0.0109372 \n", |
|
|
855 |
"Iter: 475 | Cost: 0.0109371 \n", |
|
|
856 |
"Iter: 476 | Cost: 0.0109371 \n", |
|
|
857 |
"Iter: 477 | Cost: 0.0109370 \n", |
|
|
858 |
"Iter: 478 | Cost: 0.0109369 \n", |
|
|
859 |
"Iter: 479 | Cost: 0.0109369 \n", |
|
|
860 |
"Iter: 480 | Cost: 0.0109368 \n", |
|
|
861 |
"Iter: 481 | Cost: 0.0109367 \n", |
|
|
862 |
"Iter: 482 | Cost: 0.0109367 \n", |
|
|
863 |
"Iter: 483 | Cost: 0.0109366 \n", |
|
|
864 |
"Iter: 484 | Cost: 0.0109365 \n", |
|
|
865 |
"Iter: 485 | Cost: 0.0109365 \n", |
|
|
866 |
"Iter: 486 | Cost: 0.0109364 \n", |
|
|
867 |
"Iter: 487 | Cost: 0.0109363 \n", |
|
|
868 |
"Iter: 488 | Cost: 0.0109363 \n", |
|
|
869 |
"Iter: 489 | Cost: 0.0109362 \n", |
|
|
870 |
"Iter: 490 | Cost: 0.0109361 \n", |
|
|
871 |
"Iter: 491 | Cost: 0.0109360 \n", |
|
|
872 |
"Iter: 492 | Cost: 0.0109360 \n", |
|
|
873 |
"Iter: 493 | Cost: 0.0109359 \n", |
|
|
874 |
"Iter: 494 | Cost: 0.0109358 \n", |
|
|
875 |
"Iter: 495 | Cost: 0.0109358 \n", |
|
|
876 |
"Iter: 496 | Cost: 0.0109357 \n", |
|
|
877 |
"Iter: 497 | Cost: 0.0109356 \n", |
|
|
878 |
"Iter: 498 | Cost: 0.0109356 \n", |
|
|
879 |
"Iter: 499 | Cost: 0.0109355 \n" |
|
|
880 |
] |
|
|
881 |
} |
|
|
882 |
], |
|
|
883 |
"source": [ |
|
|
884 |
"opt = AdamOptimizer(0.01, beta1=0.9, beta2=0.999)\n", |
|
|
885 |
"\n", |
|
|
886 |
"var = var_init\n", |
|
|
887 |
"for it in range(500):\n", |
|
|
888 |
" (var, _, _), _cost = opt.step_and_cost(cost, var, X, Y)\n", |
|
|
889 |
" print(\"Iter: {:5d} | Cost: {:0.7f} \".format(it, _cost.item()))" |
|
|
890 |
] |
|
|
891 |
}, |
|
|
892 |
{ |
|
|
893 |
"cell_type": "markdown", |
|
|
894 |
"metadata": { |
|
|
895 |
"id": "_TpBOMX8fWun" |
|
|
896 |
}, |
|
|
897 |
"source": [ |
|
|
898 |
"::: {.rst-class}\n", |
|
|
899 |
"sphx-glr-script-out\n", |
|
|
900 |
"\n", |
|
|
901 |
"Out:\n", |
|
|
902 |
"\n", |
|
|
903 |
"``` {.none}\n", |
|
|
904 |
"Iter: 0 | Cost: 0.3006065\n", |
|
|
905 |
"Iter: 1 | Cost: 0.2689702\n", |
|
|
906 |
"Iter: 2 | Cost: 0.2472125\n", |
|
|
907 |
"Iter: 3 | Cost: 0.2300139\n", |
|
|
908 |
"Iter: 4 | Cost: 0.2157100\n", |
|
|
909 |
"Iter: 5 | Cost: 0.2035455\n", |
|
|
910 |
"Iter: 6 | Cost: 0.1931103\n", |
|
|
911 |
"Iter: 7 | Cost: 0.1841536\n", |
|
|
912 |
"Iter: 8 | Cost: 0.1765061\n", |
|
|
913 |
"Iter: 9 | Cost: 0.1700410\n", |
|
|
914 |
"Iter: 10 | Cost: 0.1646527\n", |
|
|
915 |
"Iter: 11 | Cost: 0.1602444\n", |
|
|
916 |
"Iter: 12 | Cost: 0.1567201\n", |
|
|
917 |
"Iter: 13 | Cost: 0.1539806\n", |
|
|
918 |
"Iter: 14 | Cost: 0.1519220\n", |
|
|
919 |
"Iter: 15 | Cost: 0.1504356\n", |
|
|
920 |
"Iter: 16 | Cost: 0.1494099\n", |
|
|
921 |
"Iter: 17 | Cost: 0.1487330\n", |
|
|
922 |
"Iter: 18 | Cost: 0.1482962\n", |
|
|
923 |
"Iter: 19 | Cost: 0.1479980\n", |
|
|
924 |
"Iter: 20 | Cost: 0.1477470\n", |
|
|
925 |
"Iter: 21 | Cost: 0.1474655\n", |
|
|
926 |
"Iter: 22 | Cost: 0.1470914\n", |
|
|
927 |
"Iter: 23 | Cost: 0.1465799\n", |
|
|
928 |
"Iter: 24 | Cost: 0.1459034\n", |
|
|
929 |
"Iter: 25 | Cost: 0.1450506\n", |
|
|
930 |
"Iter: 26 | Cost: 0.1440251\n", |
|
|
931 |
"Iter: 27 | Cost: 0.1428427\n", |
|
|
932 |
"Iter: 28 | Cost: 0.1415282\n", |
|
|
933 |
"Iter: 29 | Cost: 0.1401125\n", |
|
|
934 |
"Iter: 30 | Cost: 0.1386296\n", |
|
|
935 |
"Iter: 31 | Cost: 0.1371132\n", |
|
|
936 |
"Iter: 32 | Cost: 0.1355946\n", |
|
|
937 |
"Iter: 33 | Cost: 0.1341006\n", |
|
|
938 |
"Iter: 34 | Cost: 0.1326526\n", |
|
|
939 |
"Iter: 35 | Cost: 0.1312654\n", |
|
|
940 |
"Iter: 36 | Cost: 0.1299478\n", |
|
|
941 |
"Iter: 37 | Cost: 0.1287022\n", |
|
|
942 |
"Iter: 38 | Cost: 0.1275259\n", |
|
|
943 |
"Iter: 39 | Cost: 0.1264120\n", |
|
|
944 |
"Iter: 40 | Cost: 0.1253502\n", |
|
|
945 |
"Iter: 41 | Cost: 0.1243284\n", |
|
|
946 |
"Iter: 42 | Cost: 0.1233333\n", |
|
|
947 |
"Iter: 43 | Cost: 0.1223521\n", |
|
|
948 |
"Iter: 44 | Cost: 0.1213726\n", |
|
|
949 |
"Iter: 45 | Cost: 0.1203843\n", |
|
|
950 |
"Iter: 46 | Cost: 0.1193790\n", |
|
|
951 |
"Iter: 47 | Cost: 0.1183506\n", |
|
|
952 |
"Iter: 48 | Cost: 0.1172959\n", |
|
|
953 |
"Iter: 49 | Cost: 0.1162138\n", |
|
|
954 |
"Iter: 50 | Cost: 0.1151057\n", |
|
|
955 |
"Iter: 51 | Cost: 0.1139748\n", |
|
|
956 |
"Iter: 52 | Cost: 0.1128259\n", |
|
|
957 |
"Iter: 53 | Cost: 0.1116647\n", |
|
|
958 |
"Iter: 54 | Cost: 0.1104972\n", |
|
|
959 |
"Iter: 55 | Cost: 0.1093295\n", |
|
|
960 |
"Iter: 56 | Cost: 0.1081673\n", |
|
|
961 |
"Iter: 57 | Cost: 0.1070151\n", |
|
|
962 |
"Iter: 58 | Cost: 0.1058764\n", |
|
|
963 |
"Iter: 59 | Cost: 0.1047533\n", |
|
|
964 |
"Iter: 60 | Cost: 0.1036464\n", |
|
|
965 |
"Iter: 61 | Cost: 0.1025554\n", |
|
|
966 |
"Iter: 62 | Cost: 0.1014787\n", |
|
|
967 |
"Iter: 63 | Cost: 0.1004141\n", |
|
|
968 |
"Iter: 64 | Cost: 0.0993591\n", |
|
|
969 |
"Iter: 65 | Cost: 0.0983111\n", |
|
|
970 |
"Iter: 66 | Cost: 0.0972679\n", |
|
|
971 |
"Iter: 67 | Cost: 0.0962278\n", |
|
|
972 |
"Iter: 68 | Cost: 0.0951896\n", |
|
|
973 |
"Iter: 69 | Cost: 0.0941534\n", |
|
|
974 |
"Iter: 70 | Cost: 0.0931195\n", |
|
|
975 |
"Iter: 71 | Cost: 0.0920891\n", |
|
|
976 |
"Iter: 72 | Cost: 0.0910638\n", |
|
|
977 |
"Iter: 73 | Cost: 0.0900453\n", |
|
|
978 |
"Iter: 74 | Cost: 0.0890357\n", |
|
|
979 |
"Iter: 75 | Cost: 0.0880366\n", |
|
|
980 |
"Iter: 76 | Cost: 0.0870493\n", |
|
|
981 |
"Iter: 77 | Cost: 0.0860751\n", |
|
|
982 |
"Iter: 78 | Cost: 0.0851144\n", |
|
|
983 |
"Iter: 79 | Cost: 0.0841675\n", |
|
|
984 |
"Iter: 80 | Cost: 0.0832342\n", |
|
|
985 |
"Iter: 81 | Cost: 0.0823143\n", |
|
|
986 |
"Iter: 82 | Cost: 0.0814072\n", |
|
|
987 |
"Iter: 83 | Cost: 0.0805125\n", |
|
|
988 |
"Iter: 84 | Cost: 0.0796296\n", |
|
|
989 |
"Iter: 85 | Cost: 0.0787583\n", |
|
|
990 |
"Iter: 86 | Cost: 0.0778983\n", |
|
|
991 |
"Iter: 87 | Cost: 0.0770497\n", |
|
|
992 |
"Iter: 88 | Cost: 0.0762127\n", |
|
|
993 |
"Iter: 89 | Cost: 0.0753874\n", |
|
|
994 |
"Iter: 90 | Cost: 0.0745742\n", |
|
|
995 |
"Iter: 91 | Cost: 0.0737733\n", |
|
|
996 |
"Iter: 92 | Cost: 0.0729849\n", |
|
|
997 |
"Iter: 93 | Cost: 0.0722092\n", |
|
|
998 |
"Iter: 94 | Cost: 0.0714462\n", |
|
|
999 |
"Iter: 95 | Cost: 0.0706958\n", |
|
|
1000 |
"Iter: 96 | Cost: 0.0699578\n", |
|
|
1001 |
"Iter: 97 | Cost: 0.0692319\n", |
|
|
1002 |
"Iter: 98 | Cost: 0.0685177\n", |
|
|
1003 |
"Iter: 99 | Cost: 0.0678151\n", |
|
|
1004 |
"Iter: 100 | Cost: 0.0671236\n", |
|
|
1005 |
"Iter: 101 | Cost: 0.0664430\n", |
|
|
1006 |
"Iter: 102 | Cost: 0.0657732\n", |
|
|
1007 |
"Iter: 103 | Cost: 0.0651139\n", |
|
|
1008 |
"Iter: 104 | Cost: 0.0644650\n", |
|
|
1009 |
"Iter: 105 | Cost: 0.0638264\n", |
|
|
1010 |
"Iter: 106 | Cost: 0.0631981\n", |
|
|
1011 |
"Iter: 107 | Cost: 0.0625800\n", |
|
|
1012 |
"Iter: 108 | Cost: 0.0619719\n", |
|
|
1013 |
"Iter: 109 | Cost: 0.0613737\n", |
|
|
1014 |
"Iter: 110 | Cost: 0.0607853\n", |
|
|
1015 |
"Iter: 111 | Cost: 0.0602064\n", |
|
|
1016 |
"Iter: 112 | Cost: 0.0596368\n", |
|
|
1017 |
"Iter: 113 | Cost: 0.0590764\n", |
|
|
1018 |
"Iter: 114 | Cost: 0.0585249\n", |
|
|
1019 |
"Iter: 115 | Cost: 0.0579820\n", |
|
|
1020 |
"Iter: 116 | Cost: 0.0574476\n", |
|
|
1021 |
"Iter: 117 | Cost: 0.0569214\n", |
|
|
1022 |
"Iter: 118 | Cost: 0.0564033\n", |
|
|
1023 |
"Iter: 119 | Cost: 0.0558932\n", |
|
|
1024 |
"Iter: 120 | Cost: 0.0553908\n", |
|
|
1025 |
"Iter: 121 | Cost: 0.0548960\n", |
|
|
1026 |
"Iter: 122 | Cost: 0.0544086\n", |
|
|
1027 |
"Iter: 123 | Cost: 0.0539286\n", |
|
|
1028 |
"Iter: 124 | Cost: 0.0534557\n", |
|
|
1029 |
"Iter: 125 | Cost: 0.0529897\n", |
|
|
1030 |
"Iter: 126 | Cost: 0.0525306\n", |
|
|
1031 |
"Iter: 127 | Cost: 0.0520781\n", |
|
|
1032 |
"Iter: 128 | Cost: 0.0516320\n", |
|
|
1033 |
"Iter: 129 | Cost: 0.0511923\n", |
|
|
1034 |
"Iter: 130 | Cost: 0.0507587\n", |
|
|
1035 |
"Iter: 131 | Cost: 0.0503311\n", |
|
|
1036 |
"Iter: 132 | Cost: 0.0499094\n", |
|
|
1037 |
"Iter: 133 | Cost: 0.0494934\n", |
|
|
1038 |
"Iter: 134 | Cost: 0.0490830\n", |
|
|
1039 |
"Iter: 135 | Cost: 0.0486781\n", |
|
|
1040 |
"Iter: 136 | Cost: 0.0482785\n", |
|
|
1041 |
"Iter: 137 | Cost: 0.0478842\n", |
|
|
1042 |
"Iter: 138 | Cost: 0.0474949\n", |
|
|
1043 |
"Iter: 139 | Cost: 0.0471107\n", |
|
|
1044 |
"Iter: 140 | Cost: 0.0467313\n", |
|
|
1045 |
"Iter: 141 | Cost: 0.0463567\n", |
|
|
1046 |
"Iter: 142 | Cost: 0.0459868\n", |
|
|
1047 |
"Iter: 143 | Cost: 0.0456214\n", |
|
|
1048 |
"Iter: 144 | Cost: 0.0452604\n", |
|
|
1049 |
"Iter: 145 | Cost: 0.0449038\n", |
|
|
1050 |
"Iter: 146 | Cost: 0.0445514\n", |
|
|
1051 |
"Iter: 147 | Cost: 0.0442032\n", |
|
|
1052 |
"Iter: 148 | Cost: 0.0438590\n", |
|
|
1053 |
"Iter: 149 | Cost: 0.0435188\n", |
|
|
1054 |
"Iter: 150 | Cost: 0.0431825\n", |
|
|
1055 |
"Iter: 151 | Cost: 0.0428499\n", |
|
|
1056 |
"Iter: 152 | Cost: 0.0425211\n", |
|
|
1057 |
"Iter: 153 | Cost: 0.0421960\n", |
|
|
1058 |
"Iter: 154 | Cost: 0.0418744\n", |
|
|
1059 |
"Iter: 155 | Cost: 0.0415563\n", |
|
|
1060 |
"Iter: 156 | Cost: 0.0412416\n", |
|
|
1061 |
"Iter: 157 | Cost: 0.0409302\n", |
|
|
1062 |
"Iter: 158 | Cost: 0.0406222\n", |
|
|
1063 |
"Iter: 159 | Cost: 0.0403173\n", |
|
|
1064 |
"Iter: 160 | Cost: 0.0400156\n", |
|
|
1065 |
"Iter: 161 | Cost: 0.0397169\n", |
|
|
1066 |
"Iter: 162 | Cost: 0.0394213\n", |
|
|
1067 |
"Iter: 163 | Cost: 0.0391286\n", |
|
|
1068 |
"Iter: 164 | Cost: 0.0388389\n", |
|
|
1069 |
"Iter: 165 | Cost: 0.0385520\n", |
|
|
1070 |
"Iter: 166 | Cost: 0.0382679\n", |
|
|
1071 |
"Iter: 167 | Cost: 0.0379866\n", |
|
|
1072 |
"Iter: 168 | Cost: 0.0377079\n", |
|
|
1073 |
"Iter: 169 | Cost: 0.0374319\n", |
|
|
1074 |
"Iter: 170 | Cost: 0.0371585\n", |
|
|
1075 |
"Iter: 171 | Cost: 0.0368877\n", |
|
|
1076 |
"Iter: 172 | Cost: 0.0366194\n", |
|
|
1077 |
"Iter: 173 | Cost: 0.0363535\n", |
|
|
1078 |
"Iter: 174 | Cost: 0.0360901\n", |
|
|
1079 |
"Iter: 175 | Cost: 0.0358291\n", |
|
|
1080 |
"Iter: 176 | Cost: 0.0355704\n", |
|
|
1081 |
"Iter: 177 | Cost: 0.0353140\n", |
|
|
1082 |
"Iter: 178 | Cost: 0.0350599\n", |
|
|
1083 |
"Iter: 179 | Cost: 0.0348081\n", |
|
|
1084 |
"Iter: 180 | Cost: 0.0345585\n", |
|
|
1085 |
"Iter: 181 | Cost: 0.0343110\n", |
|
|
1086 |
"Iter: 182 | Cost: 0.0340658\n", |
|
|
1087 |
"Iter: 183 | Cost: 0.0338226\n", |
|
|
1088 |
"Iter: 184 | Cost: 0.0335815\n", |
|
|
1089 |
"Iter: 185 | Cost: 0.0333425\n", |
|
|
1090 |
"Iter: 186 | Cost: 0.0331056\n", |
|
|
1091 |
"Iter: 187 | Cost: 0.0328706\n", |
|
|
1092 |
"Iter: 188 | Cost: 0.0326377\n", |
|
|
1093 |
"Iter: 189 | Cost: 0.0324067\n", |
|
|
1094 |
"Iter: 190 | Cost: 0.0321777\n", |
|
|
1095 |
"Iter: 191 | Cost: 0.0319506\n", |
|
|
1096 |
"Iter: 192 | Cost: 0.0317255\n", |
|
|
1097 |
"Iter: 193 | Cost: 0.0315022\n", |
|
|
1098 |
"Iter: 194 | Cost: 0.0312808\n", |
|
|
1099 |
"Iter: 195 | Cost: 0.0310613\n", |
|
|
1100 |
"Iter: 196 | Cost: 0.0308436\n", |
|
|
1101 |
"Iter: 197 | Cost: 0.0306278\n", |
|
|
1102 |
"Iter: 198 | Cost: 0.0304138\n", |
|
|
1103 |
"Iter: 199 | Cost: 0.0302016\n", |
|
|
1104 |
"Iter: 200 | Cost: 0.0299912\n", |
|
|
1105 |
"Iter: 201 | Cost: 0.0297826\n", |
|
|
1106 |
"Iter: 202 | Cost: 0.0295757\n", |
|
|
1107 |
"Iter: 203 | Cost: 0.0293707\n", |
|
|
1108 |
"Iter: 204 | Cost: 0.0291674\n", |
|
|
1109 |
"Iter: 205 | Cost: 0.0289659\n", |
|
|
1110 |
"Iter: 206 | Cost: 0.0287661\n", |
|
|
1111 |
"Iter: 207 | Cost: 0.0285681\n", |
|
|
1112 |
"Iter: 208 | Cost: 0.0283718\n", |
|
|
1113 |
"Iter: 209 | Cost: 0.0281772\n", |
|
|
1114 |
"Iter: 210 | Cost: 0.0279844\n", |
|
|
1115 |
"Iter: 211 | Cost: 0.0277933\n", |
|
|
1116 |
"Iter: 212 | Cost: 0.0276039\n", |
|
|
1117 |
"Iter: 213 | Cost: 0.0274163\n", |
|
|
1118 |
"Iter: 214 | Cost: 0.0272304\n", |
|
|
1119 |
"Iter: 215 | Cost: 0.0270461\n", |
|
|
1120 |
"Iter: 216 | Cost: 0.0268636\n", |
|
|
1121 |
"Iter: 217 | Cost: 0.0266829\n", |
|
|
1122 |
"Iter: 218 | Cost: 0.0265038\n", |
|
|
1123 |
"Iter: 219 | Cost: 0.0263264\n", |
|
|
1124 |
"Iter: 220 | Cost: 0.0261508\n", |
|
|
1125 |
"Iter: 221 | Cost: 0.0259768\n", |
|
|
1126 |
"Iter: 222 | Cost: 0.0258046\n", |
|
|
1127 |
"Iter: 223 | Cost: 0.0256341\n", |
|
|
1128 |
"Iter: 224 | Cost: 0.0254652\n", |
|
|
1129 |
"Iter: 225 | Cost: 0.0252981\n", |
|
|
1130 |
"Iter: 226 | Cost: 0.0251327\n", |
|
|
1131 |
"Iter: 227 | Cost: 0.0249690\n", |
|
|
1132 |
"Iter: 228 | Cost: 0.0248070\n", |
|
|
1133 |
"Iter: 229 | Cost: 0.0246467\n", |
|
|
1134 |
"Iter: 230 | Cost: 0.0244881\n", |
|
|
1135 |
"Iter: 231 | Cost: 0.0243312\n", |
|
|
1136 |
"Iter: 232 | Cost: 0.0241760\n", |
|
|
1137 |
"Iter: 233 | Cost: 0.0240225\n", |
|
|
1138 |
"Iter: 234 | Cost: 0.0238707\n", |
|
|
1139 |
"Iter: 235 | Cost: 0.0237206\n", |
|
|
1140 |
"Iter: 236 | Cost: 0.0235721\n", |
|
|
1141 |
"Iter: 237 | Cost: 0.0234254\n", |
|
|
1142 |
"Iter: 238 | Cost: 0.0232803\n", |
|
|
1143 |
"Iter: 239 | Cost: 0.0231369\n", |
|
|
1144 |
"Iter: 240 | Cost: 0.0229952\n", |
|
|
1145 |
"Iter: 241 | Cost: 0.0228552\n", |
|
|
1146 |
"Iter: 242 | Cost: 0.0227168\n", |
|
|
1147 |
"Iter: 243 | Cost: 0.0225801\n", |
|
|
1148 |
"Iter: 244 | Cost: 0.0224450\n", |
|
|
1149 |
"Iter: 245 | Cost: 0.0223116\n", |
|
|
1150 |
"Iter: 246 | Cost: 0.0221798\n", |
|
|
1151 |
"Iter: 247 | Cost: 0.0220496\n", |
|
|
1152 |
"Iter: 248 | Cost: 0.0219211\n", |
|
|
1153 |
"Iter: 249 | Cost: 0.0217942\n", |
|
|
1154 |
"Iter: 250 | Cost: 0.0216688\n", |
|
|
1155 |
"Iter: 251 | Cost: 0.0215451\n", |
|
|
1156 |
"Iter: 252 | Cost: 0.0214230\n", |
|
|
1157 |
"Iter: 253 | Cost: 0.0213024\n", |
|
|
1158 |
"Iter: 254 | Cost: 0.0211835\n", |
|
|
1159 |
"Iter: 255 | Cost: 0.0210660\n", |
|
|
1160 |
"Iter: 256 | Cost: 0.0209502\n", |
|
|
1161 |
"Iter: 257 | Cost: 0.0208358\n", |
|
|
1162 |
"Iter: 258 | Cost: 0.0207230\n", |
|
|
1163 |
"Iter: 259 | Cost: 0.0206117\n", |
|
|
1164 |
"Iter: 260 | Cost: 0.0205019\n", |
|
|
1165 |
"Iter: 261 | Cost: 0.0203936\n", |
|
|
1166 |
"Iter: 262 | Cost: 0.0202867\n", |
|
|
1167 |
"Iter: 263 | Cost: 0.0201813\n", |
|
|
1168 |
"Iter: 264 | Cost: 0.0200773\n", |
|
|
1169 |
"Iter: 265 | Cost: 0.0199748\n", |
|
|
1170 |
"Iter: 266 | Cost: 0.0198737\n", |
|
|
1171 |
"Iter: 267 | Cost: 0.0197740\n", |
|
|
1172 |
"Iter: 268 | Cost: 0.0196757\n", |
|
|
1173 |
"Iter: 269 | Cost: 0.0195787\n", |
|
|
1174 |
"Iter: 270 | Cost: 0.0194831\n", |
|
|
1175 |
"Iter: 271 | Cost: 0.0193889\n", |
|
|
1176 |
"Iter: 272 | Cost: 0.0192959\n", |
|
|
1177 |
"Iter: 273 | Cost: 0.0192043\n", |
|
|
1178 |
"Iter: 274 | Cost: 0.0191140\n", |
|
|
1179 |
"Iter: 275 | Cost: 0.0190249\n", |
|
|
1180 |
"Iter: 276 | Cost: 0.0189371\n", |
|
|
1181 |
"Iter: 277 | Cost: 0.0188505\n", |
|
|
1182 |
"Iter: 278 | Cost: 0.0187651\n", |
|
|
1183 |
"Iter: 279 | Cost: 0.0186810\n", |
|
|
1184 |
"Iter: 280 | Cost: 0.0185980\n", |
|
|
1185 |
"Iter: 281 | Cost: 0.0185163\n", |
|
|
1186 |
"Iter: 282 | Cost: 0.0184356\n", |
|
|
1187 |
"Iter: 283 | Cost: 0.0183561\n", |
|
|
1188 |
"Iter: 284 | Cost: 0.0182777\n", |
|
|
1189 |
"Iter: 285 | Cost: 0.0182004\n", |
|
|
1190 |
"Iter: 286 | Cost: 0.0181242\n", |
|
|
1191 |
"Iter: 287 | Cost: 0.0180491\n", |
|
|
1192 |
"Iter: 288 | Cost: 0.0179750\n", |
|
|
1193 |
"Iter: 289 | Cost: 0.0179020\n", |
|
|
1194 |
"Iter: 290 | Cost: 0.0178299\n", |
|
|
1195 |
"Iter: 291 | Cost: 0.0177589\n", |
|
|
1196 |
"Iter: 292 | Cost: 0.0176888\n", |
|
|
1197 |
"Iter: 293 | Cost: 0.0176197\n", |
|
|
1198 |
"Iter: 294 | Cost: 0.0175515\n", |
|
|
1199 |
"Iter: 295 | Cost: 0.0174843\n", |
|
|
1200 |
"Iter: 296 | Cost: 0.0174180\n", |
|
|
1201 |
"Iter: 297 | Cost: 0.0173525\n", |
|
|
1202 |
"Iter: 298 | Cost: 0.0172880\n", |
|
|
1203 |
"Iter: 299 | Cost: 0.0172243\n", |
|
|
1204 |
"Iter: 300 | Cost: 0.0171614\n", |
|
|
1205 |
"Iter: 301 | Cost: 0.0170994\n", |
|
|
1206 |
"Iter: 302 | Cost: 0.0170382\n", |
|
|
1207 |
"Iter: 303 | Cost: 0.0169777\n", |
|
|
1208 |
"Iter: 304 | Cost: 0.0169181\n", |
|
|
1209 |
"Iter: 305 | Cost: 0.0168592\n", |
|
|
1210 |
"Iter: 306 | Cost: 0.0168010\n", |
|
|
1211 |
"Iter: 307 | Cost: 0.0167436\n", |
|
|
1212 |
"Iter: 308 | Cost: 0.0166869\n", |
|
|
1213 |
"Iter: 309 | Cost: 0.0166309\n", |
|
|
1214 |
"Iter: 310 | Cost: 0.0165756\n", |
|
|
1215 |
"Iter: 311 | Cost: 0.0165209\n", |
|
|
1216 |
"Iter: 312 | Cost: 0.0164669\n", |
|
|
1217 |
"Iter: 313 | Cost: 0.0164136\n", |
|
|
1218 |
"Iter: 314 | Cost: 0.0163608\n", |
|
|
1219 |
"Iter: 315 | Cost: 0.0163087\n", |
|
|
1220 |
"Iter: 316 | Cost: 0.0162572\n", |
|
|
1221 |
"Iter: 317 | Cost: 0.0162063\n", |
|
|
1222 |
"Iter: 318 | Cost: 0.0161559\n", |
|
|
1223 |
"Iter: 319 | Cost: 0.0161061\n", |
|
|
1224 |
"Iter: 320 | Cost: 0.0160568\n", |
|
|
1225 |
"Iter: 321 | Cost: 0.0160080\n", |
|
|
1226 |
"Iter: 322 | Cost: 0.0159598\n", |
|
|
1227 |
"Iter: 323 | Cost: 0.0159121\n", |
|
|
1228 |
"Iter: 324 | Cost: 0.0158649\n", |
|
|
1229 |
"Iter: 325 | Cost: 0.0158181\n", |
|
|
1230 |
"Iter: 326 | Cost: 0.0157719\n", |
|
|
1231 |
"Iter: 327 | Cost: 0.0157260\n", |
|
|
1232 |
"Iter: 328 | Cost: 0.0156807\n", |
|
|
1233 |
"Iter: 329 | Cost: 0.0156357\n", |
|
|
1234 |
"Iter: 330 | Cost: 0.0155912\n", |
|
|
1235 |
"Iter: 331 | Cost: 0.0155471\n", |
|
|
1236 |
"Iter: 332 | Cost: 0.0155034\n", |
|
|
1237 |
"Iter: 333 | Cost: 0.0154601\n", |
|
|
1238 |
"Iter: 334 | Cost: 0.0154172\n", |
|
|
1239 |
"Iter: 335 | Cost: 0.0153747\n", |
|
|
1240 |
"Iter: 336 | Cost: 0.0153325\n", |
|
|
1241 |
"Iter: 337 | Cost: 0.0152907\n", |
|
|
1242 |
"Iter: 338 | Cost: 0.0152492\n", |
|
|
1243 |
"Iter: 339 | Cost: 0.0152081\n", |
|
|
1244 |
"Iter: 340 | Cost: 0.0151673\n", |
|
|
1245 |
"Iter: 341 | Cost: 0.0151269\n", |
|
|
1246 |
"Iter: 342 | Cost: 0.0150867\n", |
|
|
1247 |
"Iter: 343 | Cost: 0.0150469\n", |
|
|
1248 |
"Iter: 344 | Cost: 0.0150073\n", |
|
|
1249 |
"Iter: 345 | Cost: 0.0149681\n", |
|
|
1250 |
"Iter: 346 | Cost: 0.0149291\n", |
|
|
1251 |
"Iter: 347 | Cost: 0.0148905\n", |
|
|
1252 |
"Iter: 348 | Cost: 0.0148521\n", |
|
|
1253 |
"Iter: 349 | Cost: 0.0148140\n", |
|
|
1254 |
"Iter: 350 | Cost: 0.0147761\n", |
|
|
1255 |
"Iter: 351 | Cost: 0.0147385\n", |
|
|
1256 |
"Iter: 352 | Cost: 0.0147012\n", |
|
|
1257 |
"Iter: 353 | Cost: 0.0146641\n", |
|
|
1258 |
"Iter: 354 | Cost: 0.0146273\n", |
|
|
1259 |
"Iter: 355 | Cost: 0.0145907\n", |
|
|
1260 |
"Iter: 356 | Cost: 0.0145543\n", |
|
|
1261 |
"Iter: 357 | Cost: 0.0145182\n", |
|
|
1262 |
"Iter: 358 | Cost: 0.0144824\n", |
|
|
1263 |
"Iter: 359 | Cost: 0.0144467\n", |
|
|
1264 |
"Iter: 360 | Cost: 0.0144113\n", |
|
|
1265 |
"Iter: 361 | Cost: 0.0143762\n", |
|
|
1266 |
"Iter: 362 | Cost: 0.0143412\n", |
|
|
1267 |
"Iter: 363 | Cost: 0.0143065\n", |
|
|
1268 |
"Iter: 364 | Cost: 0.0142720\n", |
|
|
1269 |
"Iter: 365 | Cost: 0.0142378\n", |
|
|
1270 |
"Iter: 366 | Cost: 0.0142037\n", |
|
|
1271 |
"Iter: 367 | Cost: 0.0141699\n", |
|
|
1272 |
"Iter: 368 | Cost: 0.0141363\n", |
|
|
1273 |
"Iter: 369 | Cost: 0.0141030\n", |
|
|
1274 |
"Iter: 370 | Cost: 0.0140699\n", |
|
|
1275 |
"Iter: 371 | Cost: 0.0140370\n", |
|
|
1276 |
"Iter: 372 | Cost: 0.0140043\n", |
|
|
1277 |
"Iter: 373 | Cost: 0.0139719\n", |
|
|
1278 |
"Iter: 374 | Cost: 0.0139397\n", |
|
|
1279 |
"Iter: 375 | Cost: 0.0139077\n", |
|
|
1280 |
"Iter: 376 | Cost: 0.0138760\n", |
|
|
1281 |
"Iter: 377 | Cost: 0.0138445\n", |
|
|
1282 |
"Iter: 378 | Cost: 0.0138132\n", |
|
|
1283 |
"Iter: 379 | Cost: 0.0137822\n", |
|
|
1284 |
"Iter: 380 | Cost: 0.0137515\n", |
|
|
1285 |
"Iter: 381 | Cost: 0.0137210\n", |
|
|
1286 |
"Iter: 382 | Cost: 0.0136907\n", |
|
|
1287 |
"Iter: 383 | Cost: 0.0136607\n", |
|
|
1288 |
"Iter: 384 | Cost: 0.0136310\n", |
|
|
1289 |
"Iter: 385 | Cost: 0.0136015\n", |
|
|
1290 |
"Iter: 386 | Cost: 0.0135723\n", |
|
|
1291 |
"Iter: 387 | Cost: 0.0135433\n", |
|
|
1292 |
"Iter: 388 | Cost: 0.0135146\n", |
|
|
1293 |
"Iter: 389 | Cost: 0.0134863\n", |
|
|
1294 |
"Iter: 390 | Cost: 0.0134581\n", |
|
|
1295 |
"Iter: 391 | Cost: 0.0134303\n", |
|
|
1296 |
"Iter: 392 | Cost: 0.0134027\n", |
|
|
1297 |
"Iter: 393 | Cost: 0.0133755\n", |
|
|
1298 |
"Iter: 394 | Cost: 0.0133485\n", |
|
|
1299 |
"Iter: 395 | Cost: 0.0133218\n", |
|
|
1300 |
"Iter: 396 | Cost: 0.0132954\n", |
|
|
1301 |
"Iter: 397 | Cost: 0.0132694\n", |
|
|
1302 |
"Iter: 398 | Cost: 0.0132436\n", |
|
|
1303 |
"Iter: 399 | Cost: 0.0132181\n", |
|
|
1304 |
"Iter: 400 | Cost: 0.0131929\n", |
|
|
1305 |
"Iter: 401 | Cost: 0.0131681\n", |
|
|
1306 |
"Iter: 402 | Cost: 0.0131435\n", |
|
|
1307 |
"Iter: 403 | Cost: 0.0131193\n", |
|
|
1308 |
"Iter: 404 | Cost: 0.0130953\n", |
|
|
1309 |
"Iter: 405 | Cost: 0.0130717\n", |
|
|
1310 |
"Iter: 406 | Cost: 0.0130484\n", |
|
|
1311 |
"Iter: 407 | Cost: 0.0130254\n", |
|
|
1312 |
"Iter: 408 | Cost: 0.0130028\n", |
|
|
1313 |
"Iter: 409 | Cost: 0.0129804\n", |
|
|
1314 |
"Iter: 410 | Cost: 0.0129584\n", |
|
|
1315 |
"Iter: 411 | Cost: 0.0129367\n", |
|
|
1316 |
"Iter: 412 | Cost: 0.0129153\n", |
|
|
1317 |
"Iter: 413 | Cost: 0.0128942\n", |
|
|
1318 |
"Iter: 414 | Cost: 0.0128735\n", |
|
|
1319 |
"Iter: 415 | Cost: 0.0128530\n", |
|
|
1320 |
"Iter: 416 | Cost: 0.0128329\n", |
|
|
1321 |
"Iter: 417 | Cost: 0.0128131\n", |
|
|
1322 |
"Iter: 418 | Cost: 0.0127935\n", |
|
|
1323 |
"Iter: 419 | Cost: 0.0127743\n", |
|
|
1324 |
"Iter: 420 | Cost: 0.0127554\n", |
|
|
1325 |
"Iter: 421 | Cost: 0.0127368\n", |
|
|
1326 |
"Iter: 422 | Cost: 0.0127185\n", |
|
|
1327 |
"Iter: 423 | Cost: 0.0127006\n", |
|
|
1328 |
"Iter: 424 | Cost: 0.0126829\n", |
|
|
1329 |
"Iter: 425 | Cost: 0.0126655\n", |
|
|
1330 |
"Iter: 426 | Cost: 0.0126483\n", |
|
|
1331 |
"Iter: 427 | Cost: 0.0126315\n", |
|
|
1332 |
"Iter: 428 | Cost: 0.0126150\n", |
|
|
1333 |
"Iter: 429 | Cost: 0.0125987\n", |
|
|
1334 |
"Iter: 430 | Cost: 0.0125827\n", |
|
|
1335 |
"Iter: 431 | Cost: 0.0125670\n", |
|
|
1336 |
"Iter: 432 | Cost: 0.0125516\n", |
|
|
1337 |
"Iter: 433 | Cost: 0.0125364\n", |
|
|
1338 |
"Iter: 434 | Cost: 0.0125215\n", |
|
|
1339 |
"Iter: 435 | Cost: 0.0125068\n", |
|
|
1340 |
"Iter: 436 | Cost: 0.0124924\n", |
|
|
1341 |
"Iter: 437 | Cost: 0.0124782\n", |
|
|
1342 |
"Iter: 438 | Cost: 0.0124643\n", |
|
|
1343 |
"Iter: 439 | Cost: 0.0124507\n", |
|
|
1344 |
"Iter: 440 | Cost: 0.0124372\n", |
|
|
1345 |
"Iter: 441 | Cost: 0.0124240\n", |
|
|
1346 |
"Iter: 442 | Cost: 0.0124110\n", |
|
|
1347 |
"Iter: 443 | Cost: 0.0123983\n", |
|
|
1348 |
"Iter: 444 | Cost: 0.0123857\n", |
|
|
1349 |
"Iter: 445 | Cost: 0.0123734\n", |
|
|
1350 |
"Iter: 446 | Cost: 0.0123613\n", |
|
|
1351 |
"Iter: 447 | Cost: 0.0123494\n", |
|
|
1352 |
"Iter: 448 | Cost: 0.0123377\n", |
|
|
1353 |
"Iter: 449 | Cost: 0.0123262\n", |
|
|
1354 |
"Iter: 450 | Cost: 0.0123149\n", |
|
|
1355 |
"Iter: 451 | Cost: 0.0123038\n", |
|
|
1356 |
"Iter: 452 | Cost: 0.0122929\n", |
|
|
1357 |
"Iter: 453 | Cost: 0.0122821\n", |
|
|
1358 |
"Iter: 454 | Cost: 0.0122715\n", |
|
|
1359 |
"Iter: 455 | Cost: 0.0122611\n", |
|
|
1360 |
"Iter: 456 | Cost: 0.0122509\n", |
|
|
1361 |
"Iter: 457 | Cost: 0.0122409\n", |
|
|
1362 |
"Iter: 458 | Cost: 0.0122310\n", |
|
|
1363 |
"Iter: 459 | Cost: 0.0122212\n", |
|
|
1364 |
"Iter: 460 | Cost: 0.0122116\n", |
|
|
1365 |
"Iter: 461 | Cost: 0.0122022\n", |
|
|
1366 |
"Iter: 462 | Cost: 0.0121929\n", |
|
|
1367 |
"Iter: 463 | Cost: 0.0121838\n", |
|
|
1368 |
"Iter: 464 | Cost: 0.0121748\n", |
|
|
1369 |
"Iter: 465 | Cost: 0.0121660\n", |
|
|
1370 |
"Iter: 466 | Cost: 0.0121572\n", |
|
|
1371 |
"Iter: 467 | Cost: 0.0121487\n", |
|
|
1372 |
"Iter: 468 | Cost: 0.0121402\n", |
|
|
1373 |
"Iter: 469 | Cost: 0.0121319\n", |
|
|
1374 |
"Iter: 470 | Cost: 0.0121237\n", |
|
|
1375 |
"Iter: 471 | Cost: 0.0121156\n", |
|
|
1376 |
"Iter: 472 | Cost: 0.0121076\n", |
|
|
1377 |
"Iter: 473 | Cost: 0.0120998\n", |
|
|
1378 |
"Iter: 474 | Cost: 0.0120921\n", |
|
|
1379 |
"Iter: 475 | Cost: 0.0120844\n", |
|
|
1380 |
"Iter: 476 | Cost: 0.0120769\n", |
|
|
1381 |
"Iter: 477 | Cost: 0.0120695\n", |
|
|
1382 |
"Iter: 478 | Cost: 0.0120622\n", |
|
|
1383 |
"Iter: 479 | Cost: 0.0120550\n", |
|
|
1384 |
"Iter: 480 | Cost: 0.0120479\n", |
|
|
1385 |
"Iter: 481 | Cost: 0.0120409\n", |
|
|
1386 |
"Iter: 482 | Cost: 0.0120340\n", |
|
|
1387 |
"Iter: 483 | Cost: 0.0120272\n", |
|
|
1388 |
"Iter: 484 | Cost: 0.0120205\n", |
|
|
1389 |
"Iter: 485 | Cost: 0.0120138\n", |
|
|
1390 |
"Iter: 486 | Cost: 0.0120073\n", |
|
|
1391 |
"Iter: 487 | Cost: 0.0120008\n", |
|
|
1392 |
"Iter: 488 | Cost: 0.0119944\n", |
|
|
1393 |
"Iter: 489 | Cost: 0.0119881\n", |
|
|
1394 |
"Iter: 490 | Cost: 0.0119819\n", |
|
|
1395 |
"Iter: 491 | Cost: 0.0119758\n", |
|
|
1396 |
"Iter: 492 | Cost: 0.0119697\n", |
|
|
1397 |
"Iter: 493 | Cost: 0.0119637\n", |
|
|
1398 |
"Iter: 494 | Cost: 0.0119578\n", |
|
|
1399 |
"Iter: 495 | Cost: 0.0119520\n", |
|
|
1400 |
"Iter: 496 | Cost: 0.0119462\n", |
|
|
1401 |
"Iter: 497 | Cost: 0.0119405\n", |
|
|
1402 |
"Iter: 498 | Cost: 0.0119349\n", |
|
|
1403 |
"Iter: 499 | Cost: 0.0119293\n", |
|
|
1404 |
"```\n", |
|
|
1405 |
":::\n", |
|
|
1406 |
"\n", |
|
|
1407 |
"Finally, we collect the predictions of the trained model for 50 values\n", |
|
|
1408 |
"in the range $[-1,1]$:\n" |
|
|
1409 |
] |
|
|
1410 |
}, |
|
|
1411 |
{ |
|
|
1412 |
"cell_type": "code", |
|
|
1413 |
"execution_count": 27, |
|
|
1414 |
"metadata": { |
|
|
1415 |
"id": "Hdmj8HXwfWup" |
|
|
1416 |
}, |
|
|
1417 |
"outputs": [], |
|
|
1418 |
"source": [ |
|
|
1419 |
"x_pred = np.linspace(-1, 1, 50)\n", |
|
|
1420 |
"predictions = [quantum_neural_net(var, x_) for x_ in x_pred]" |
|
|
1421 |
] |
|
|
1422 |
}, |
|
|
1423 |
{ |
|
|
1424 |
"cell_type": "markdown", |
|
|
1425 |
"metadata": { |
|
|
1426 |
"id": "aVcaS0sJfWup" |
|
|
1427 |
}, |
|
|
1428 |
"source": [ |
|
|
1429 |
"and plot the shape of the function that the model has \"learned\" from the\n", |
|
|
1430 |
"noisy data (green dots).\n" |
|
|
1431 |
] |
|
|
1432 |
}, |
|
|
1433 |
{ |
|
|
1434 |
"cell_type": "code", |
|
|
1435 |
"execution_count": 28, |
|
|
1436 |
"metadata": { |
|
|
1437 |
"colab": { |
|
|
1438 |
"base_uri": "https://localhost:8080/", |
|
|
1439 |
"height": 449 |
|
|
1440 |
}, |
|
|
1441 |
"id": "mERucZDLfWup", |
|
|
1442 |
"outputId": "367aece5-3a63-4c84-a8a8-c278c0c8497f" |
|
|
1443 |
}, |
|
|
1444 |
"outputs": [ |
|
|
1445 |
{ |
|
|
1446 |
"output_type": "display_data", |
|
|
1447 |
"data": { |
|
|
1448 |
"text/plain": [ |
|
|
1449 |
"<Figure size 640x480 with 1 Axes>" |
|
|
1450 |
], |
|
|
1451 |
"image/png": "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\n" |
|
|
1452 |
}, |
|
|
1453 |
"metadata": {} |
|
|
1454 |
} |
|
|
1455 |
], |
|
|
1456 |
"source": [ |
|
|
1457 |
"plt.figure()\n", |
|
|
1458 |
"plt.scatter(X, Y)\n", |
|
|
1459 |
"plt.scatter(x_pred, predictions, color=\"green\")\n", |
|
|
1460 |
"plt.xlabel(\"x\")\n", |
|
|
1461 |
"plt.ylabel(\"f(x)\")\n", |
|
|
1462 |
"plt.tick_params(axis=\"both\", which=\"major\")\n", |
|
|
1463 |
"plt.tick_params(axis=\"both\", which=\"minor\")\n", |
|
|
1464 |
"plt.show()" |
|
|
1465 |
] |
|
|
1466 |
}, |
|
|
1467 |
{ |
|
|
1468 |
"cell_type": "markdown", |
|
|
1469 |
"metadata": { |
|
|
1470 |
"id": "IeCZDqxufWup" |
|
|
1471 |
}, |
|
|
1472 |
"source": [ |
|
|
1473 |
"\n", |
|
|
1474 |
"\n", |
|
|
1475 |
"The model has learned to smooth the noisy data.\n", |
|
|
1476 |
"\n", |
|
|
1477 |
"In fact, we can use PennyLane to look at typical functions that the\n", |
|
|
1478 |
"model produces without being trained at all. The shape of these\n", |
|
|
1479 |
"functions varies significantly with the variance hyperparameter for the\n", |
|
|
1480 |
"weight initialization.\n", |
|
|
1481 |
"\n", |
|
|
1482 |
"Setting this hyperparameter to a small value produces almost linear\n", |
|
|
1483 |
"functions, since all quantum gates in the variational circuit\n", |
|
|
1484 |
"approximately perform the identity transformation in that case. Larger\n", |
|
|
1485 |
"values produce smoothly oscillating functions with a period that depends\n", |
|
|
1486 |
"on the number of layers used (generically, the more layers, the smaller\n", |
|
|
1487 |
"the period).\n" |
|
|
1488 |
] |
|
|
1489 |
}, |
|
|
1490 |
{ |
|
|
1491 |
"cell_type": "code", |
|
|
1492 |
"execution_count": 29, |
|
|
1493 |
"metadata": { |
|
|
1494 |
"colab": { |
|
|
1495 |
"base_uri": "https://localhost:8080/", |
|
|
1496 |
"height": 449 |
|
|
1497 |
}, |
|
|
1498 |
"id": "OpPoqtDOfWuq", |
|
|
1499 |
"outputId": "b9cb01b1-8d45-4635-877c-770c931b3bcc" |
|
|
1500 |
}, |
|
|
1501 |
"outputs": [ |
|
|
1502 |
{ |
|
|
1503 |
"output_type": "display_data", |
|
|
1504 |
"data": { |
|
|
1505 |
"text/plain": [ |
|
|
1506 |
"<Figure size 640x480 with 1 Axes>" |
|
|
1507 |
], |
|
|
1508 |
"image/png": "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\n" |
|
|
1509 |
}, |
|
|
1510 |
"metadata": {} |
|
|
1511 |
} |
|
|
1512 |
], |
|
|
1513 |
"source": [ |
|
|
1514 |
"variance = 1.0\n", |
|
|
1515 |
"\n", |
|
|
1516 |
"plt.figure()\n", |
|
|
1517 |
"x_pred = np.linspace(-2, 2, 50)\n", |
|
|
1518 |
"for i in range(7):\n", |
|
|
1519 |
" rnd_var = variance * np.random.randn(num_layers, 7)\n", |
|
|
1520 |
" predictions = [quantum_neural_net(rnd_var, x_) for x_ in x_pred]\n", |
|
|
1521 |
" plt.plot(x_pred, predictions, color=\"black\")\n", |
|
|
1522 |
"plt.xlabel(\"x\")\n", |
|
|
1523 |
"plt.ylabel(\"f(x)\")\n", |
|
|
1524 |
"plt.tick_params(axis=\"both\", which=\"major\")\n", |
|
|
1525 |
"plt.tick_params(axis=\"both\", which=\"minor\")\n", |
|
|
1526 |
"plt.show()" |
|
|
1527 |
] |
|
|
1528 |
}, |
|
|
1529 |
{ |
|
|
1530 |
"cell_type": "markdown", |
|
|
1531 |
"metadata": { |
|
|
1532 |
"id": "I3YGFq3rfWuq" |
|
|
1533 |
}, |
|
|
1534 |
"source": [ |
|
|
1535 |
"\n" |
|
|
1536 |
] |
|
|
1537 |
}, |
|
|
1538 |
{ |
|
|
1539 |
"cell_type": "markdown", |
|
|
1540 |
"metadata": { |
|
|
1541 |
"id": "V_KB0XdPfWuq" |
|
|
1542 |
}, |
|
|
1543 |
"source": [ |
|
|
1544 |
"About the author\n", |
|
|
1545 |
"================\n" |
|
|
1546 |
] |
|
|
1547 |
} |
|
|
1548 |
], |
|
|
1549 |
"metadata": { |
|
|
1550 |
"kernelspec": { |
|
|
1551 |
"display_name": "Python 3", |
|
|
1552 |
"language": "python", |
|
|
1553 |
"name": "python3" |
|
|
1554 |
}, |
|
|
1555 |
"language_info": { |
|
|
1556 |
"codemirror_mode": { |
|
|
1557 |
"name": "ipython", |
|
|
1558 |
"version": 3 |
|
|
1559 |
}, |
|
|
1560 |
"file_extension": ".py", |
|
|
1561 |
"mimetype": "text/x-python", |
|
|
1562 |
"name": "python", |
|
|
1563 |
"nbconvert_exporter": "python", |
|
|
1564 |
"pygments_lexer": "ipython3", |
|
|
1565 |
"version": "3.9.17" |
|
|
1566 |
}, |
|
|
1567 |
"colab": { |
|
|
1568 |
"provenance": [] |
|
|
1569 |
} |
|
|
1570 |
}, |
|
|
1571 |
"nbformat": 4, |
|
|
1572 |
"nbformat_minor": 0 |
|
|
1573 |
} |