{ "cells": [ { "cell_type": "markdown", "id": "41eb6323", "metadata": { "collapsed": true, "customInput": null, "originalKey": "ac61b043-8ebf-43b9-9fa5-ed9a42a184ce", "papermill": { "duration": 0.007252, "end_time": "2023-12-09T18:40:47.585361", "exception": false, "start_time": "2023-12-09T18:40:47.578109", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "# Tune a CNN on MNIST\n", "\n", "This tutorial walks through using Ax to tune two hyperparameters (learning rate and momentum) for a PyTorch CNN on the MNIST dataset trained using SGD with momentum." ] }, { "cell_type": "code", "execution_count": 1, "id": "34eac0d3", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:40:47.599198Z", "iopub.status.busy": "2023-12-09T18:40:47.598712Z", "iopub.status.idle": "2023-12-09T18:40:50.785735Z", "shell.execute_reply": "2023-12-09T18:40:50.784772Z" }, "executionStartTime": 1690415246079, "executionStopTime": 1690415266324, "originalKey": "c2b37f0f-3644-4367-912f-f775082f6676", "papermill": { "duration": 3.211351, "end_time": "2023-12-09T18:40:50.802975", "exception": false, "start_time": "2023-12-09T18:40:47.591624", "status": "completed" }, "requestMsgId": "0b481630-f0f4-436a-a205-a25aa163a364", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:40:50] ax.utils.notebook.plotting: Injecting Plotly library into cell. Do not overwrite or delete cell.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:40:50] ax.utils.notebook.plotting: Please see\n", " (https://ax.dev/tutorials/visualizations.html#Fix-for-plots-that-are-not-rendering)\n", " if visualizations are not rendering.\n" ] }, { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import torch\n", "\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "\n", "from ax.service.ax_client import AxClient, ObjectiveProperties\n", "from ax.service.utils.report_utils import exp_to_df\n", "from ax.utils.notebook.plotting import init_notebook_plotting, render\n", "from ax.utils.tutorials.cnn_utils import evaluate, load_mnist, train\n", "from torch._tensor import Tensor\n", "from torch.utils.data import DataLoader\n", "\n", "init_notebook_plotting()" ] }, { "cell_type": "code", "execution_count": 2, "id": "8fa9e641", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:40:50.884491Z", "iopub.status.busy": "2023-12-09T18:40:50.883919Z", "iopub.status.idle": "2023-12-09T18:40:50.888780Z", "shell.execute_reply": "2023-12-09T18:40:50.888131Z" }, "executionStartTime": 1690415266521, "executionStopTime": 1690415266529, "originalKey": "4d0a27c4-a6ce-4b7d-97eb-1c229aabb375", "papermill": { "duration": 0.048216, "end_time": "2023-12-09T18:40:50.890399", "exception": false, "start_time": "2023-12-09T18:40:50.842183", "status": "completed" }, "requestMsgId": "fd975d25-a185-4b09-a50f-7b2bcd89f93f", "showInput": true, "tags": [] }, "outputs": [], "source": [ "torch.manual_seed(42)\n", "dtype = torch.float\n", "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")" ] }, { "cell_type": "markdown", "id": "dfa07683", "metadata": { "customInput": null, "originalKey": "10384e51-444c-4265-b56d-ad078d05d2a1", "papermill": { "duration": 0.039062, "end_time": "2023-12-09T18:40:50.967987", "exception": false, "start_time": "2023-12-09T18:40:50.928925", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 1. Load MNIST data\n", "First, we need to load the MNIST data and partition it into training, validation, and test sets.\n", "\n", "Note: this will download the dataset if necessary." ] }, { "cell_type": "code", "execution_count": 3, "id": "dfc658bb", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:40:51.047442Z", "iopub.status.busy": "2023-12-09T18:40:51.046891Z", "iopub.status.idle": "2023-12-09T18:40:52.030073Z", "shell.execute_reply": "2023-12-09T18:40:52.029308Z" }, "executionStartTime": 1690415266733, "executionStopTime": 1690415266902, "originalKey": "6f0949e2-1064-44b8-99c0-f6ce23df7c63", "papermill": { "duration": 1.024956, "end_time": "2023-12-09T18:40:52.031834", "exception": false, "start_time": "2023-12-09T18:40:51.006878", "status": "completed" }, "requestMsgId": "8ce7dd21-9afb-4379-ad11-4112b4d27f8a", "showInput": true, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\n", "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to ./data/MNIST/raw/train-images-idx3-ubyte.gz\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0/9912422 [00:00= p2\" or \"p1 + p2 <= some_bound\".\n", " # outcome_constraints: Optional, a list of strings of form \"constrained_metric <= some_bound\".\n", ")" ] }, { "cell_type": "markdown", "id": "360d0fe0", "metadata": { "customInput": null, "originalKey": "af441a83-50fd-4385-a380-d8ebc570c0e5", "papermill": { "duration": 0.039973, "end_time": "2023-12-09T18:40:52.449201", "exception": false, "start_time": "2023-12-09T18:40:52.409228", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 4. Define how to evaluate trials\n" ] }, { "cell_type": "markdown", "id": "a59b6b86", "metadata": { "customInput": null, "originalKey": "c7630dfd-548b-408a-badf-b6abf79275e2", "papermill": { "duration": 0.039933, "end_time": "2023-12-09T18:40:52.529248", "exception": false, "start_time": "2023-12-09T18:40:52.489315", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "First we define a simple CNN class to classify the MNIST images" ] }, { "cell_type": "code", "execution_count": 6, "id": "f186de08", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:40:52.610668Z", "iopub.status.busy": "2023-12-09T18:40:52.610383Z", "iopub.status.idle": "2023-12-09T18:40:52.615845Z", "shell.execute_reply": "2023-12-09T18:40:52.615225Z" }, "executionStartTime": 1690415267282, "executionStopTime": 1690415267286, "originalKey": "e41fea0a-ae71-4e6f-8c0a-6eb6ae143fb0", "papermill": { "duration": 0.048335, "end_time": "2023-12-09T18:40:52.617485", "exception": false, "start_time": "2023-12-09T18:40:52.569150", "status": "completed" }, "requestMsgId": "60f14ec9-eb1b-4e88-95c5-15c91f999c90", "showInput": true, "tags": [] }, "outputs": [], "source": [ "class CNN(nn.Module):\n", " \n", " def __init__(self) -> None:\n", " super().__init__()\n", " self.conv1 = nn.Conv2d(1, 20, kernel_size=5, stride=1)\n", " self.fc1 = nn.Linear(8 * 8 * 20, 64)\n", " self.fc2 = nn.Linear(64, 10)\n", "\n", " def forward(self, x: Tensor) -> Tensor:\n", " x = F.relu(self.conv1(x))\n", " x = F.max_pool2d(x, 3, 3)\n", " x = x.view(-1, 8 * 8 * 20)\n", " x = F.relu(self.fc1(x))\n", " x = self.fc2(x)\n", " return F.log_softmax(x, dim=-1)" ] }, { "cell_type": "markdown", "id": "a035ccfc", "metadata": { "customInput": null, "originalKey": "8ef6bcb9-c492-4874-b8c7-a07f7e6291ad", "papermill": { "duration": 0.039916, "end_time": "2023-12-09T18:40:52.697129", "exception": false, "start_time": "2023-12-09T18:40:52.657213", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "In this tutorial, we want to optimize classification accuracy on the validation set as a function of the learning rate and momentum. The `train_evaluate` function takes in a parameterization (set of parameter values), computes the classification accuracy, and returns that metric. " ] }, { "cell_type": "code", "execution_count": 7, "id": "ac35919b", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:40:52.779188Z", "iopub.status.busy": "2023-12-09T18:40:52.778568Z", "iopub.status.idle": "2023-12-09T18:40:52.783252Z", "shell.execute_reply": "2023-12-09T18:40:52.782607Z" }, "executionStartTime": 1690415267388, "executionStopTime": 1690415267395, "originalKey": "a7e4bcc4-7494-429b-bb93-7ad84d0985af", "papermill": { "duration": 0.047372, "end_time": "2023-12-09T18:40:52.784645", "exception": false, "start_time": "2023-12-09T18:40:52.737273", "status": "completed" }, "requestMsgId": "5d486dbf-60cb-453d-8f24-8605f974b0a7", "showInput": true, "tags": [] }, "outputs": [], "source": [ "def train_evaluate(parameterization):\n", " \"\"\"\n", " Train the model and then compute an evaluation metric.\n", "\n", " In this tutorial, the CNN utils package is doing a lot of work\n", " under the hood:\n", " - `train` initializes the network, defines the loss function\n", " and optimizer, performs the training loop, and returns the\n", " trained model.\n", " - `evaluate` computes the accuracy of the model on the\n", " evaluation dataset and returns the metric.\n", "\n", " For your use case, you can define training and evaluation functions\n", " of your choosing.\n", "\n", " \"\"\"\n", " net = CNN()\n", " net = train(\n", " net=net,\n", " train_loader=train_loader,\n", " parameters=parameterization,\n", " dtype=dtype,\n", " device=device,\n", " )\n", "\n", " return evaluate(\n", " net=net, \n", " data_loader=valid_loader, \n", " dtype=dtype, \n", " device=device,\n", " )\n" ] }, { "cell_type": "markdown", "id": "b6d14a21", "metadata": { "customInput": null, "originalKey": "9ab127a8-021f-4ec8-9f4e-f4256a2e322a", "papermill": { "duration": 0.03985, "end_time": "2023-12-09T18:40:52.864459", "exception": false, "start_time": "2023-12-09T18:40:52.824609", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 5. Run optimization loop\n" ] }, { "cell_type": "markdown", "id": "4262c6c0", "metadata": { "customInput": null, "originalKey": "411a2fb4-e8a3-4414-bc17-09f0b5ba3e74", "papermill": { "duration": 0.039955, "end_time": "2023-12-09T18:40:52.944945", "exception": false, "start_time": "2023-12-09T18:40:52.904990", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "First we use `attach_trial` to attach a custom trial with manually-chosen parameters. This step is optional, but we include it here to demonstrate adding manual trials and to serve as a baseline model with decent performance. " ] }, { "cell_type": "code", "execution_count": 8, "id": "3ae664f0", "metadata": { "customInput": null, "execution": { "iopub.execute_input": "2023-12-09T18:40:53.026409Z", "iopub.status.busy": "2023-12-09T18:40:53.025895Z", "iopub.status.idle": "2023-12-09T18:40:59.795089Z", "shell.execute_reply": "2023-12-09T18:40:59.794478Z" }, "executionStartTime": 1690415267533, "executionStopTime": 1690415287786, "originalKey": "1388ef55-5642-46ab-b297-c76a73a48aca", "papermill": { "duration": 6.811763, "end_time": "2023-12-09T18:40:59.796571", "exception": false, "start_time": "2023-12-09T18:40:52.984808", "status": "completed" }, "requestMsgId": "b32a4981-ad59-46e1-b701-fa5a5f118d8b", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:40:53] ax.core.experiment: Attached custom parameterizations [{'lr': 2.6e-05, 'momentum': 0.58}] as trial 0.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:40:59] ax.service.ax_client: Completed trial 0 with data: {'accuracy': (0.841833, None)}.\n" ] } ], "source": [ "# Attach the trial\n", "ax_client.attach_trial(\n", " parameters={\"lr\": 0.000026, \"momentum\": 0.58}\n", ")\n", "\n", "# Get the parameters and run the trial \n", "baseline_parameters = ax_client.get_trial_parameters(trial_index=0)\n", "ax_client.complete_trial(trial_index=0, raw_data=train_evaluate(baseline_parameters))" ] }, { "cell_type": "markdown", "id": "eb4f7716", "metadata": { "customInput": null, "originalKey": "f0f886a1-c5c8-44bb-b2fd-9fa3f140357a", "papermill": { "duration": 0.040708, "end_time": "2023-12-09T18:40:59.877673", "exception": false, "start_time": "2023-12-09T18:40:59.836965", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "Now we start the optimization loop.\n", "\n", "At each step, the user queries the client for a new trial then submits the evaluation of that trial back to the client.\n", "\n", "Note that Ax auto-selects an appropriate optimization algorithm based on the search space. For more advanced use cases that require a specific optimization algorithm, pass a `generation_strategy` argument into the `AxClient` constructor. Note that when Bayesian Optimization is used, generating new trials may take a few minutes." ] }, { "cell_type": "code", "execution_count": 9, "id": "7efd735d", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:40:59.960236Z", "iopub.status.busy": "2023-12-09T18:40:59.959925Z", "iopub.status.idle": "2023-12-09T18:43:59.453467Z", "shell.execute_reply": "2023-12-09T18:43:59.452755Z" }, "executionStartTime": 1690415287908, "executionStopTime": 1690415945107, "originalKey": "bff5d714-1ab3-43d3-b9b3-8c3a53c81dcb", "papermill": { "duration": 179.536717, "end_time": "2023-12-09T18:43:59.455020", "exception": false, "start_time": "2023-12-09T18:40:59.918303", "status": "completed" }, "requestMsgId": "a203534f-85dd-4dfa-9fa6-6aa46a0200a3", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:40:59] ax.service.ax_client: Generated new trial 1 with parameters {'lr': 0.009955, 'momentum': 0.633423}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:06] ax.service.ax_client: Completed trial 1 with data: {'accuracy': (0.100333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:06] ax.service.ax_client: Generated new trial 2 with parameters {'lr': 5e-06, 'momentum': 0.022851}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:12] ax.service.ax_client: Completed trial 2 with data: {'accuracy': (0.318667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:12] ax.service.ax_client: Generated new trial 3 with parameters {'lr': 7e-06, 'momentum': 0.176948}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:19] ax.service.ax_client: Completed trial 3 with data: {'accuracy': (0.4585, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:19] ax.service.ax_client: Generated new trial 4 with parameters {'lr': 8.2e-05, 'momentum': 0.90883}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:26] ax.service.ax_client: Completed trial 4 with data: {'accuracy': (0.926, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:26] ax.service.ax_client: Generated new trial 5 with parameters {'lr': 0.000302, 'momentum': 0.341904}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:32] ax.service.ax_client: Completed trial 5 with data: {'accuracy': (0.929, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:32] ax.service.ax_client: Generated new trial 6 with parameters {'lr': 0.000137, 'momentum': 0.590917}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:39] ax.service.ax_client: Completed trial 6 with data: {'accuracy': (0.92, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:39] ax.service.ax_client: Generated new trial 7 with parameters {'lr': 1e-05, 'momentum': 1.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:46] ax.service.ax_client: Completed trial 7 with data: {'accuracy': (0.860167, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:46] ax.service.ax_client: Generated new trial 8 with parameters {'lr': 0.000246, 'momentum': 0.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:53] ax.service.ax_client: Completed trial 8 with data: {'accuracy': (0.888833, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:41:53] ax.service.ax_client: Generated new trial 9 with parameters {'lr': 0.000149, 'momentum': 0.286357}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:00] ax.service.ax_client: Completed trial 9 with data: {'accuracy': (0.901667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:00] ax.service.ax_client: Generated new trial 10 with parameters {'lr': 1e-06, 'momentum': 1.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:07] ax.service.ax_client: Completed trial 10 with data: {'accuracy': (0.560333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:08] ax.service.ax_client: Generated new trial 11 with parameters {'lr': 3.7e-05, 'momentum': 1.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:14] ax.service.ax_client: Completed trial 11 with data: {'accuracy': (0.759333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:15] ax.service.ax_client: Generated new trial 12 with parameters {'lr': 0.000261, 'momentum': 0.913716}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:22] ax.service.ax_client: Completed trial 12 with data: {'accuracy': (0.947667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:22] ax.service.ax_client: Generated new trial 13 with parameters {'lr': 0.000171, 'momentum': 0.802859}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:29] ax.service.ax_client: Completed trial 13 with data: {'accuracy': (0.942667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:30] ax.service.ax_client: Generated new trial 14 with parameters {'lr': 0.000161, 'momentum': 1.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:37] ax.service.ax_client: Completed trial 14 with data: {'accuracy': (0.843, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:37] ax.service.ax_client: Generated new trial 15 with parameters {'lr': 0.000312, 'momentum': 0.667594}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:44] ax.service.ax_client: Completed trial 15 with data: {'accuracy': (0.9475, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:45] ax.service.ax_client: Generated new trial 16 with parameters {'lr': 0.000834, 'momentum': 0.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:51] ax.service.ax_client: Completed trial 16 with data: {'accuracy': (0.741333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:52] ax.service.ax_client: Generated new trial 17 with parameters {'lr': 0.000743, 'momentum': 1.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:42:59] ax.service.ax_client: Completed trial 17 with data: {'accuracy': (0.102667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:00] ax.service.ax_client: Generated new trial 18 with parameters {'lr': 0.000235, 'momentum': 0.66382}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:06] ax.service.ax_client: Completed trial 18 with data: {'accuracy': (0.936667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:07] ax.modelbridge.base: Untransformed parameter 0.40000000000000013 greater than upper bound 0.4, clamping\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:07] ax.service.ax_client: Generated new trial 19 with parameters {'lr': 0.4, 'momentum': 0.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:13] ax.service.ax_client: Completed trial 19 with data: {'accuracy': (0.101, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:14] ax.service.ax_client: Generated new trial 20 with parameters {'lr': 6.4e-05, 'momentum': 0.453937}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:21] ax.service.ax_client: Completed trial 20 with data: {'accuracy': (0.897, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:22] ax.service.ax_client: Generated new trial 21 with parameters {'lr': 4.7e-05, 'momentum': 0.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:29] ax.service.ax_client: Completed trial 21 with data: {'accuracy': (0.790333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:29] ax.service.ax_client: Generated new trial 22 with parameters {'lr': 4e-06, 'momentum': 1.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:36] ax.service.ax_client: Completed trial 22 with data: {'accuracy': (0.830667, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:37] ax.service.ax_client: Generated new trial 23 with parameters {'lr': 8.4e-05, 'momentum': 0.692917}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:43] ax.service.ax_client: Completed trial 23 with data: {'accuracy': (0.920333, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:45] ax.service.ax_client: Generated new trial 24 with parameters {'lr': 0.000412, 'momentum': 0.0}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:51] ax.service.ax_client: Completed trial 24 with data: {'accuracy': (0.849, None)}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:52] ax.service.ax_client: Generated new trial 25 with parameters {'lr': 0.000237, 'momentum': 0.507928}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:43:59] ax.service.ax_client: Completed trial 25 with data: {'accuracy': (0.928333, None)}.\n" ] } ], "source": [ "for i in range(25):\n", " parameters, trial_index = ax_client.get_next_trial()\n", " # Local evaluation here can be replaced with deployment to external system.\n", " ax_client.complete_trial(trial_index=trial_index, raw_data=train_evaluate(parameters))" ] }, { "cell_type": "markdown", "id": "16bb6fcf", "metadata": { "customInput": null, "originalKey": "ccd16059-db9f-475b-b527-75afb320e0f4", "papermill": { "duration": 0.041967, "end_time": "2023-12-09T18:43:59.539274", "exception": false, "start_time": "2023-12-09T18:43:59.497307", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "### How many trials can run in parallel?\n", "By default, Ax restricts number of trials that can run in parallel for some optimization stages, in order to improve the optimization performance and reduce the number of trials that the optimization will require. To check the maximum parallelism for each optimization stage:" ] }, { "cell_type": "code", "execution_count": 10, "id": "0e03ef5e", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:43:59.625446Z", "iopub.status.busy": "2023-12-09T18:43:59.624758Z", "iopub.status.idle": "2023-12-09T18:43:59.633503Z", "shell.execute_reply": "2023-12-09T18:43:59.632802Z" }, "executionStartTime": 1690415945269, "executionStopTime": 1690415945336, "originalKey": "7182d2f9-912c-464c-b5ad-f65ce6f00017", "papermill": { "duration": 0.053586, "end_time": "2023-12-09T18:43:59.634918", "exception": false, "start_time": "2023-12-09T18:43:59.581332", "status": "completed" }, "requestMsgId": "4cb4ff79-e45b-4c7d-86a1-7f8007eb2c81", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[(5, 5), (-1, 3)]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ax_client.get_max_parallelism()" ] }, { "cell_type": "markdown", "id": "acddb454", "metadata": { "customInput": null, "originalKey": "e2f429e6-2ec8-4af2-906b-52a36a53d329", "papermill": { "duration": 0.042436, "end_time": "2023-12-09T18:43:59.720096", "exception": false, "start_time": "2023-12-09T18:43:59.677660", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "The output of this function is a list of tuples of form (number of trials, max parallelism), so the example above means \"the max parallelism is 5 for the first 5 trials and 3 for all subsequent trials.\" This is because the first 5 trials are produced quasi-randomly and can all be evaluated at once, and subsequent trials are produced via Bayesian optimization, which converges on optimal point in fewer trials when parallelism is limited. MaxParallelismReachedException indicates that the parallelism limit has been reached –– refer to the 'Service API Exceptions Meaning and Handling' section at the end of the tutorial for handling.\n", "\n" ] }, { "cell_type": "markdown", "id": "7b0a9449", "metadata": { "customInput": null, "originalKey": "86c7aef9-993a-411e-add5-05839b00d3cf", "papermill": { "duration": 0.042306, "end_time": "2023-12-09T18:43:59.805001", "exception": false, "start_time": "2023-12-09T18:43:59.762695", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "### How to view all existing trials during optimization?" ] }, { "cell_type": "code", "execution_count": 11, "id": "e6a214f4", "metadata": { "customInput": null, "execution": { "iopub.execute_input": "2023-12-09T18:43:59.897362Z", "iopub.status.busy": "2023-12-09T18:43:59.891884Z", "iopub.status.idle": "2023-12-09T18:43:59.933833Z", "shell.execute_reply": "2023-12-09T18:43:59.932237Z" }, "executionStartTime": 1690415945532, "executionStopTime": 1690415946199, "originalKey": "3fbad5dc-863a-494e-b04f-d7dc1e47936c", "papermill": { "duration": 0.087844, "end_time": "2023-12-09T18:43:59.935463", "exception": false, "start_time": "2023-12-09T18:43:59.847619", "status": "completed" }, "requestMsgId": "905ea8b6-add0-473e-8516-5be6ad7d7658", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[WARNING 12-09 18:43:59] ax.service.utils.report_utils: Column reason missing for all trials. Not appending column.\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
trial_indexarm_nametrial_statusgeneration_methodaccuracylrmomentum
000_0COMPLETEDManual0.8418330.0000260.580000
111_0COMPLETEDSobol0.1003330.0099550.633423
222_0COMPLETEDSobol0.3186670.0000050.022851
333_0COMPLETEDSobol0.4585000.0000070.176948
444_0COMPLETEDSobol0.9260000.0000820.908830
555_0COMPLETEDSobol0.9290000.0003020.341904
666_0COMPLETEDBoTorch0.9200000.0001370.590917
777_0COMPLETEDBoTorch0.8601670.0000101.000000
888_0COMPLETEDBoTorch0.8888330.0002460.000000
999_0COMPLETEDBoTorch0.9016670.0001490.286357
101010_0COMPLETEDBoTorch0.5603330.0000011.000000
111111_0COMPLETEDBoTorch0.7593330.0000371.000000
121212_0COMPLETEDBoTorch0.9476670.0002610.913716
131313_0COMPLETEDBoTorch0.9426670.0001710.802859
141414_0COMPLETEDBoTorch0.8430000.0001611.000000
151515_0COMPLETEDBoTorch0.9475000.0003120.667594
161616_0COMPLETEDBoTorch0.7413330.0008340.000000
171717_0COMPLETEDBoTorch0.1026670.0007431.000000
181818_0COMPLETEDBoTorch0.9366670.0002350.663820
191919_0COMPLETEDBoTorch0.1010000.4000000.000000
202020_0COMPLETEDBoTorch0.8970000.0000640.453937
212121_0COMPLETEDBoTorch0.7903330.0000470.000000
222222_0COMPLETEDBoTorch0.8306670.0000041.000000
232323_0COMPLETEDBoTorch0.9203330.0000840.692917
242424_0COMPLETEDBoTorch0.8490000.0004120.000000
252525_0COMPLETEDBoTorch0.9283330.0002370.507928
\n", "
" ], "text/plain": [ " trial_index arm_name trial_status generation_method accuracy lr \\\n", "0 0 0_0 COMPLETED Manual 0.841833 0.000026 \n", "1 1 1_0 COMPLETED Sobol 0.100333 0.009955 \n", "2 2 2_0 COMPLETED Sobol 0.318667 0.000005 \n", "3 3 3_0 COMPLETED Sobol 0.458500 0.000007 \n", "4 4 4_0 COMPLETED Sobol 0.926000 0.000082 \n", "5 5 5_0 COMPLETED Sobol 0.929000 0.000302 \n", "6 6 6_0 COMPLETED BoTorch 0.920000 0.000137 \n", "7 7 7_0 COMPLETED BoTorch 0.860167 0.000010 \n", "8 8 8_0 COMPLETED BoTorch 0.888833 0.000246 \n", "9 9 9_0 COMPLETED BoTorch 0.901667 0.000149 \n", "10 10 10_0 COMPLETED BoTorch 0.560333 0.000001 \n", "11 11 11_0 COMPLETED BoTorch 0.759333 0.000037 \n", "12 12 12_0 COMPLETED BoTorch 0.947667 0.000261 \n", "13 13 13_0 COMPLETED BoTorch 0.942667 0.000171 \n", "14 14 14_0 COMPLETED BoTorch 0.843000 0.000161 \n", "15 15 15_0 COMPLETED BoTorch 0.947500 0.000312 \n", "16 16 16_0 COMPLETED BoTorch 0.741333 0.000834 \n", "17 17 17_0 COMPLETED BoTorch 0.102667 0.000743 \n", "18 18 18_0 COMPLETED BoTorch 0.936667 0.000235 \n", "19 19 19_0 COMPLETED BoTorch 0.101000 0.400000 \n", "20 20 20_0 COMPLETED BoTorch 0.897000 0.000064 \n", "21 21 21_0 COMPLETED BoTorch 0.790333 0.000047 \n", "22 22 22_0 COMPLETED BoTorch 0.830667 0.000004 \n", "23 23 23_0 COMPLETED BoTorch 0.920333 0.000084 \n", "24 24 24_0 COMPLETED BoTorch 0.849000 0.000412 \n", "25 25 25_0 COMPLETED BoTorch 0.928333 0.000237 \n", "\n", " momentum \n", "0 0.580000 \n", "1 0.633423 \n", "2 0.022851 \n", "3 0.176948 \n", "4 0.908830 \n", "5 0.341904 \n", "6 0.590917 \n", "7 1.000000 \n", "8 0.000000 \n", "9 0.286357 \n", "10 1.000000 \n", "11 1.000000 \n", "12 0.913716 \n", "13 0.802859 \n", "14 1.000000 \n", "15 0.667594 \n", "16 0.000000 \n", "17 1.000000 \n", "18 0.663820 \n", "19 0.000000 \n", "20 0.453937 \n", "21 0.000000 \n", "22 1.000000 \n", "23 0.692917 \n", "24 0.000000 \n", "25 0.507928 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ax_client.get_trials_data_frame()" ] }, { "cell_type": "markdown", "id": "b0e797fd", "metadata": { "customInput": null, "originalKey": "9f1ebc55-e6f2-498f-9185-569227c2f3d5", "papermill": { "duration": 0.043229, "end_time": "2023-12-09T18:44:00.021888", "exception": false, "start_time": "2023-12-09T18:43:59.978659", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 6. Retrieve best parameters\n", "\n", "Once it's complete, we can access the best parameters found, as well as the corresponding metric values. Note that these parameters may not necessarily be the set that yielded the highest _observed_ accuracy because Ax uses the highest model _predicted_ accuracy to choose the best parameters (see [here](https://ax.dev/api/service.html#module-ax.service.utils.best_point_mixin) for more details). Due to randomness in the data or the algorithm itself, using observed accuracy may result in choosing an outlier for the best set of parameters. Using the model predicted best will use the model to regularize the observations and reduce the likelihood of picking some outlier in the data." ] }, { "cell_type": "code", "execution_count": 12, "id": "6fdb65be", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:00.110079Z", "iopub.status.busy": "2023-12-09T18:44:00.109387Z", "iopub.status.idle": "2023-12-09T18:44:00.456972Z", "shell.execute_reply": "2023-12-09T18:44:00.456228Z" }, "executionStartTime": 1690415946312, "executionStopTime": 1690415949198, "originalKey": "8fdf0023-2bf5-4cdd-93ea-a8a708dc6845", "papermill": { "duration": 0.393351, "end_time": "2023-12-09T18:44:00.458670", "exception": false, "start_time": "2023-12-09T18:44:00.065319", "status": "completed" }, "requestMsgId": "c0b8c25d-c6ae-476e-be23-f1b963df296b", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'lr': 0.00023468478584700203, 'momentum': 0.6638197948979379}" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "best_parameters, values = ax_client.get_best_parameters()\n", "best_parameters" ] }, { "cell_type": "code", "execution_count": 13, "id": "0f32d37d", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:00.545634Z", "iopub.status.busy": "2023-12-09T18:44:00.545328Z", "iopub.status.idle": "2023-12-09T18:44:00.550361Z", "shell.execute_reply": "2023-12-09T18:44:00.549677Z" }, "executionStartTime": 1690415949308, "executionStopTime": 1690415949313, "originalKey": "f3eb18fc-be99-494a-aeac-e9b05a3bc182", "papermill": { "duration": 0.050289, "end_time": "2023-12-09T18:44:00.551787", "exception": false, "start_time": "2023-12-09T18:44:00.501498", "status": "completed" }, "requestMsgId": "ac214ea0-ea8c-46f2-a988-b42893ef6d6d", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "{'accuracy': 0.9503630011366103}" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean, covariance = values\n", "mean" ] }, { "cell_type": "markdown", "id": "1d451937", "metadata": { "customInput": null, "originalKey": "6be3b006-d090-4c73-a64a-12901d1af817", "papermill": { "duration": 0.042611, "end_time": "2023-12-09T18:44:00.637274", "exception": false, "start_time": "2023-12-09T18:44:00.594663", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 7. Plot the response surface and optimization trace\n", "\n", "Contour plot showing classification accuracy as a function of the two hyperparameters.\n", "\n", "The black squares show points that we have actually run; notice how they are clustered in the optimal region." ] }, { "cell_type": "code", "execution_count": 14, "id": "495e0351", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:00.724642Z", "iopub.status.busy": "2023-12-09T18:44:00.724046Z", "iopub.status.idle": "2023-12-09T18:44:01.348874Z", "shell.execute_reply": "2023-12-09T18:44:01.348187Z" }, "executionStartTime": 1690415949431, "executionStopTime": 1690415953540, "originalKey": "1beca759-2fa5-48d1-bfed-c9b13a054733", "papermill": { "duration": 0.673027, "end_time": "2023-12-09T18:44:01.353094", "exception": false, "start_time": "2023-12-09T18:44:00.680067", "status": "completed" }, "requestMsgId": "fa48963e-b43c-4079-81a4-079d347fe9ba", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:00] ax.service.ax_client: Retrieving contour plot with parameter 'lr' on X-axis and 'momentum' on Y-axis, for metric 'accuracy'. Remaining parameters are affixed to the middle of their range.\n" ] }, { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "autocolorscale": false, "autocontour": true, "colorbar": { "tickfont": { "size": 8 }, "ticksuffix": "", "x": 0.45, "y": 0.5 }, "colorscale": [ [ 0.0, "rgb(247,252,253)" ], [ 0.125, "rgb(229,245,249)" ], [ 0.25, "rgb(204,236,230)" ], [ 0.375, "rgb(153,216,201)" ], [ 0.5, "rgb(102,194,164)" ], [ 0.625, "rgb(65,174,118)" ], [ 0.75, "rgb(35,139,69)" ], [ 0.875, "rgb(0,109,44)" ], [ 1.0, "rgb(0,68,27)" ] ], "contours": { "coloring": "heatmap" }, "hoverinfo": "x+y+z", "ncontours": 25, "type": "contour", "x": [ 1e-06, 1.3011511650442548e-06, 1.692994354296022e-06, 2.2028415765056147e-06, 2.866229883678204e-06, 3.729398352432554e-06, 4.852511011181743e-06, 6.3138503555892e-06, 8.215273746089953e-06, 1.0689313005882424e-05, 1.390841207112662e-05, 1.809694657026198e-05, 2.354686311364001e-05, 3.063802837345029e-05, 3.986470631277378e-05, 5.1870009063012666e-05, 6.749072272319499e-05, 8.781563250096393e-05, 0.00011426141253772724, 0.00014867137004306603, 0.00019344392634026088, 0.0002516997901283655, 0.0003274994751669172, 0.0004261263236648159, 0.0005544547624925005, 0.0007214294601814526, 0.000938688782612345, 0.0012213760031100258, 0.0015891948094037057, 0.002067782677737912, 0.0026904978401970136, 0.0035007443993213955, 0.004554997653699184, 0.005926740503884541, 0.007711585311544345, 0.010033938212454078, 0.013055670395116691, 0.01698740074503987, 0.02210317627048227, 0.028759573555516536, 0.03742055263793628, 0.04868979566145066, 0.06335278435066323, 0.0824315491666629, 0.10725590623460621, 0.13955614735503497, 0.18158364372009145, 0.23626776957937787, 0.3074200836506151, 0.4 ], "xaxis": "x", "y": [ 0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0 ], "yaxis": "y", "z": [ [ 0.5256642119348456, 0.5159895766716118, 0.5050273038455311, 0.493071731887314, 0.4811434511370768, 0.47134600874695065, 0.46710372955363555, 0.4730723362084759, 0.49375069070893235, 0.5296368831295909, 0.5766481636864247, 0.6288814470643971, 0.680716779836127, 0.727780005814056, 0.7672981112903788, 0.7982796230588876, 0.8217908655273106, 0.8404603684871171, 0.8567689219618715, 0.8713170030770441, 0.8817130947083197, 0.8831143127854921, 0.8712502115564172, 0.8456372159136138, 0.809187971475473, 0.7665326052852435, 0.7225863805170128, 0.6813228958239829, 0.6452094082673714, 0.6153623689714974, 0.5918862498177738, 0.5742434283968706, 0.5615809132395756, 0.5529632946902268, 0.5474969174801194, 0.544362505166171, 0.5427964268769443, 0.5420666813179642, 0.5414728032367964, 0.5403710299331783, 0.5382099520131858, 0.5345650729138645, 0.5291719573272644, 0.5219652256674197, 0.5131311583304743, 0.5031757622289087, 0.49299720579122847, 0.4839273123201285, 0.4776621380444475, 0.475920197203412 ], [ 0.5249186153362111, 0.5153547934298999, 0.5044813781882909, 0.4925513306456718, 0.48055975009772367, 0.4706326481980821, 0.4663068615252122, 0.4724635634710903, 0.4938120104526522, 0.5307400201266416, 0.5788756512354519, 0.6320949808696451, 0.6846510405703876, 0.7321144091214623, 0.7717149986061204, 0.8025136474555015, 0.8256719371169026, 0.8439582819215675, 0.8600252104738155, 0.8746033226302756, 0.8852801691857617, 0.8869996169801206, 0.8751984955639432, 0.8491966049167449, 0.8119168558005301, 0.7681567491434688, 0.7230449555192898, 0.6807334872120174, 0.6437958984836385, 0.6133805882842023, 0.5895709957885552, 0.5717823336906354, 0.5591103725550961, 0.5505775341598969, 0.5452611294553961, 0.5423231020047425, 0.5409853487888207, 0.5405012442557049, 0.5401550303035263, 0.5392892171992976, 0.5373424878891984, 0.5338850345544071, 0.5286511378023147, 0.5215769723010861, 0.5128519742682535, 0.502985873400595, 0.49288031350678374, 0.48386964641050395, 0.477650755956074, 0.47594025571219 ], [ 0.5242472290739641, 0.514837497859325, 0.5041059589213903, 0.49226132611403817, 0.48026820730448067, 0.47026818087339706, 0.4659044778077386, 0.47228622659888636, 0.49432068714342614, 0.5322658870571251, 0.5814654766679374, 0.6355923462745638, 0.6887857083190823, 0.7365686288765595, 0.7761794153587026, 0.8067364502757338, 0.8294945104590602, 0.8473527706428117, 0.8631353605403158, 0.8777111024979676, 0.8886549137082582, 0.8907006018325011, 0.8789866007454602, 0.8526102208613717, 0.8144961597768127, 0.7696177092794032, 0.7233261865001354, 0.6799592250728087, 0.6422012011206379, 0.6112315484361012, 0.5871089383054467, 0.5691973000517537, 0.5565380636079611, 0.5481098928027277, 0.5429608530244467, 0.5402347102448428, 0.5391395884920223, 0.5389145966410386, 0.5388287763026802, 0.5382110630514555, 0.5364906499597164, 0.5332330975902648, 0.5281722321341018, 0.5212466255177264, 0.5126495705890022, 0.5028948545909675, 0.49288718613534926, 0.48396162457006553, 0.4778115011189357, 0.47614272965337356 ], [ 0.5236535873383148, 0.5144438933389465, 0.5039112383828313, 0.49221754209619145, 0.4802922214464593, 0.47028552417738956, 0.46593948035164917, 0.4725875002774616, 0.4953186359847059, 0.5342444033926438, 0.5844352609401218, 0.6393815846547053, 0.6931225165958058, 0.7411412346735267, 0.780689656994569, 0.8109478044863232, 0.8332601506122721, 0.8506472808591578, 0.8661040476124026, 0.8806454857001863, 0.8918425975004326, 0.8942217084837869, 0.8826145905872992, 0.8558733049702656, 0.8169172861053031, 0.7709043676315087, 0.7234182606766989, 0.6789893506649916, 0.6404165751516712, 0.6089089210295663, 0.5844960886238153, 0.5664863130633746, 0.5538634589032767, 0.5455608476256774, 0.5405971753762369, 0.5380987560220513, 0.5372607387201165, 0.5373083683444538, 0.5374955906836869, 0.5371379377342773, 0.5356555628730617, 0.5326101065849614, 0.5277357895993529, 0.5209744268971241, 0.5125238557492154, 0.5029022279864439, 0.4930168635603372, 0.4842016487606856, 0.4781419149212343, 0.47652433801275196 ], [ 0.5231409113980108, 0.514179752443842, 0.5039068596349241, 0.49243516565458334, 0.48065458799378574, 0.47071738486647435, 0.4664556521616929, 0.4734152634697833, 0.4968469027777098, 0.5367033913726145, 0.5878002691419749, 0.6434685790226857, 0.6976614479112865, 0.7458296196884907, 0.7852435756851025, 0.815147685909446, 0.8369711023166885, 0.8538464363611281, 0.8689376802640617, 0.8834138547102252, 0.8948511160759834, 0.8975697922094599, 0.8860840617533423, 0.8589816160353575, 0.8191715221935316, 0.7720051601279844, 0.7233088749212785, 0.677812792277307, 0.6384331886953889, 0.6064064707077492, 0.5817286765566171, 0.5636476479472398, 0.551086349948308, 0.542931194414473, 0.5381714821940716, 0.5359169318552659, 0.5353506197129674, 0.5356843713373147, 0.5361571526798334, 0.5360712839761909, 0.5348383632207644, 0.5320168528511188, 0.5273422310047244, 0.5207603951489546, 0.5124743886588912, 0.5030069894455018, 0.4932676091176052, 0.48458699487418133, 0.4786379699811567, 0.4770800192531248 ], [ 0.5227120674574377, 0.5140503386663977, 0.5041017771737148, 0.4929285008112992, 0.48137705520005847, 0.47159542406607996, 0.46749597062090437, 0.47481664019342573, 0.49894445017359473, 0.5396677414716202, 0.5915729089555403, 0.6478567315780736, 0.7024004905425213, 0.7506297656980435, 0.7898382630621538, 0.8193359369693182, 0.8406300978929584, 0.8569559099657695, 0.8716442931492605, 0.8860256772048984, 0.8976906090874145, 0.9007534868005806, 0.8893978224715058, 0.861931347325469, 0.821250036679071, 0.7729081479102693, 0.7229853359084706, 0.6764182347867467, 0.636242178875968, 0.6037181085094108, 0.5788031957009963, 0.5606799060872627, 0.5482068762153348, 0.5402220708884901, 0.5356854762808555, 0.5336912114332759, 0.5334112904892422, 0.53404460744832, 0.5348152757507222, 0.5350126189775284, 0.5340402003395495, 0.5314540753491455, 0.5269918509113128, 0.5206043311143056, 0.5125003887481692, 0.5032076280225547, 0.4936369481828621, 0.48511389460816334, 0.4792942673908348, 0.47780327878445383 ], [ 0.5223695265816709, 0.514060329988147, 0.5045041182247133, 0.49371071811481587, 0.48247985884457306, 0.47294933964521346, 0.46910083806161035, 0.4768362312322781, 0.5016467416695576, 0.5431585535926461, 0.595762245896308, 0.652546656903626, 0.7073354012507767, 0.7555360015516065, 0.7944697372661529, 0.8235119514903584, 0.8442401376155209, 0.8599822620637994, 0.8742333988964371, 0.8884923002939794, 0.9003730356027354, 0.9037826508123434, 0.8925595342178291, 0.8647190106783139, 0.8231438771881198, 0.7736010872643265, 0.7224346582243515, 0.6747942009508174, 0.6338347205435219, 0.6008379509685735, 0.5757164519051461, 0.5575820529712316, 0.5452255544067485, 0.5374349796405651, 0.5331411957952279, 0.5314238639430069, 0.531445059587097, 0.5323912754864897, 0.5334719113604997, 0.5339635358847797, 0.5332622369391493, 0.5309224619192177, 0.5266848209107953, 0.5205058249064873, 0.5126007499669945, 0.5035021525854193, 0.4941217196449292, 0.48577764032504817, 0.48010425924910666, 0.47868649162517574 ], [ 0.5221153275268743, 0.5142137459136732, 0.5051210480015988, 0.4947936079788941, 0.4839812572294152, 0.474805939915777, 0.47130637934398917, 0.4795141169021656, 0.5049841740884761, 0.5471923017339793, 0.6003735558465919, 0.657535900836762, 0.7124594814159482, 0.7605407667152557, 0.7991326539087059, 0.8276743877195283, 0.8478042560607024, 0.8629327509851655, 0.876715801147951, 0.890826704492149, 0.9029117494850418, 0.9066678875811045, 0.8955733539921529, 0.8673413024369636, 0.8248439665883114, 0.7740714933985996, 0.7216436573180017, 0.6729291409665931, 0.6312021029901815, 0.5977603846335388, 0.5724656147092062, 0.5543534572583432, 0.5421433077167707, 0.5345718105800292, 0.5305410318625667, 0.5291174677399026, 0.5294544950909292, 0.530726777554826, 0.532129151935818, 0.5329257046323713, 0.5325056494711083, 0.5304226507733889, 0.5264211938573212, 0.5204642650157221, 0.5127740583415541, 0.5038881246309539, 0.49471813785668556, 0.4865727052644196, 0.4810604720955942, 0.47972116510785884 ], [ 0.5219510433103852, 0.5145138795870273, 0.5059586423661467, 0.4961873459901662, 0.4858970890798429, 0.47718828101088656, 0.474142894828033, 0.4828836669154908, 0.5089804649265726, 0.5517800785593613, 0.6054079356607562, 0.6628186949209537, 0.7177633741510092, 0.7656343906142775, 0.8038200492581654, 0.8318209108646594, 0.8513252857762497, 0.8658151208856861, 0.879103371193245, 0.8930432269708326, 0.9053210961205769, 0.9094201327842999, 0.898443603218415, 0.8697949658819808, 0.8263410970932887, 0.7743066976033269, 0.7205990377885597, 0.6708115276089827, 0.6283358137321684, 0.5944801355945726, 0.5690482714294074, 0.5509939306306388, 0.538961494742336, 0.5316348625610938, 0.527887745295783, 0.5267749231368302, 0.5274424337398496, 0.5290537243584152, 0.5307892328335385, 0.5319008720268392, 0.5317716281499966, 0.529955232167675, 0.526200908942554, 0.5204788491658774, 0.5130186126352778, 0.5043626962490864, 0.4954218623884879, 0.48749287170451766, 0.4821547170003958, 0.48089816600620877 ], [ 0.5218777523301543, 0.5149632365650675, 0.5070217712285929, 0.4979002781174872, 0.4882403757576817, 0.4801149283102038, 0.47763357802094875, 0.4869691791922802, 0.5136511858091903, 0.5569269784955869, 0.6108619912099766, 0.668385755723823, 0.7232348896922988, 0.7708048969203807, 0.808523119504728, 0.8359479658983973, 0.8548056270646509, 0.8686373736412476, 0.8814087906817568, 0.8951572602431118, 0.9076160374460625, 0.91205030567936, 0.9011744796264166, 0.8720766634629851, 0.8276259232155923, 0.7742938987863444, 0.7192874783545764, 0.6684299552454526, 0.6252276284730762, 0.5909923435491502, 0.5654624834955284, 0.547503768038473, 0.5356819376540753, 0.5286268638412444, 0.5251844821299592, 0.5243994640619865, 0.5254119888893758, 0.5273749392889991, 0.5294545331347731, 0.5308908609435683, 0.5310613765367448, 0.529520750169125, 0.5260237974878634, 0.5205485966822745, 0.5133324476058048, 0.5049226520915683, 0.49622807285642423, 0.4885313606554901, 0.48337827963504787, 0.482207916028103 ], [ 0.5218960147972529, 0.5155634817221856, 0.5083139957716183, 0.4999387329624579, 0.49102098590313004, 0.48359938526581164, 0.4817936148458718, 0.4917836705652581, 0.519002710610418, 0.562631670912913, 0.6167276191067792, 0.6742241372356665, 0.728858865799251, 0.776037840216983, 0.8132310385930843, 0.8400505817163954, 0.8582470305331334, 0.8714075319151975, 0.8836452631737015, 0.897184928196217, 0.9098118047136925, 0.9145690227963528, 0.9037698222382479, 0.8741828698969443, 0.8286889552858628, 0.7740202107851044, 0.7176957150332774, 0.6657732419171063, 0.6218697064829073, 0.5872926398949254, 0.5617068445981714, 0.5438837879046974, 0.5323069491977774, 0.5255509909757811, 0.5224347876421455, 0.5219946683084513, 0.5233665570716091, 0.525693461045103, 0.5281275750694585, 0.5298975685039142, 0.5303761105944786, 0.5291197044304955, 0.5258895893179643, 0.5206723621084806, 0.5137133593137242, 0.5055644541679656, 0.4971315462285359, 0.489680958029192, 0.48472208816309087, 0.48364055922697824 ], [ 0.5220058551790023, 0.5163153956109203, 0.5098374821836248, 0.5023068669475974, 0.49424537586104944, 0.48764971420764786, 0.4866297472513281, 0.49732815338270214, 0.5250318174072294, 0.5688861980732784, 0.622991893752119, 0.6803171431207456, 0.7346170691319824, 0.7813161809572912, 0.8179308168729409, 0.8441222082024286, 0.8616503975426815, 0.8741334011704827, 0.8858261985450865, 0.8991427369317768, 0.9119235756952886, 0.9169863755608263, 0.9062329363033415, 0.8761097943044747, 0.8295205550464615, 0.7734727068990779, 0.7158106240891768, 0.662830534357395, 0.6182546907823983, 0.5833772293180389, 0.5577805401540835, 0.5401353718100642, 0.5288393580580804, 0.5224108857154321, 0.5196426184929595, 0.5195644660680354, 0.5213098228706148, 0.5240125445227584, 0.5268110218649575, 0.5289229631010786, 0.5297170571305767, 0.5287525518853367, 0.5257979195745011, 0.5208488497972369, 0.5141589319240327, 0.506284288312423, 0.4981267342791978, 0.4909341336503107, 0.4861768591448304, 0.48518610452797634 ], [ 0.5222067512659943, 0.5172188414100232, 0.5115929340746406, 0.5050065467706606, 0.4979164137281909, 0.49226835512462225, 0.4921403092551326, 0.5035928237099003, 0.5317259930675277, 0.5756760087045762, 0.6296370657881445, 0.6866443039105397, 0.7404881427033632, 0.7866202034231876, 0.8226072029476608, 0.8481545881982848, 0.8650156026687129, 0.8768223388317418, 0.8879648775837414, 0.901047193610399, 0.9139661740481295, 0.9193117757004343, 0.9085664836541156, 0.8778533359599261, 0.8301109338886716, 0.7726384630044713, 0.7136193063185612, 0.6595914162837576, 0.6143758126786247, 0.5792429743309218, 0.5536834075537618, 0.5362605031442205, 0.5252825320806895, 0.5192106694345752, 0.5168123525899213, 0.517113146409807, 0.5192457617986949, 0.5223356596870407, 0.5255076738039812, 0.5279690801472157, 0.5290854515449619, 0.5284197082792197, 0.5257483358262736, 0.5210766291961837, 0.5146665654458713, 0.5070781112319922, 0.4992078392139777, 0.49228315075096546, 0.4877332227604349, 0.48683454624256933 ], [ 0.5224976303764324, 0.5182727433645808, 0.5135795451547869, 0.5080372717072543, 0.5020332892607988, 0.4974521317418175, 0.4983156615215524, 0.5105587374806436, 0.5390642653477461, 0.5829802129324463, 0.6366406721966914, 0.6931814224528334, 0.7464476036133033, 0.7919274804936621, 0.8272426313088623, 0.8521376667664975, 0.8683413415612178, 0.8794810388122974, 0.8900741105034774, 0.9029143826455424, 0.9159537933131106, 0.9215538736163404, 0.9107724436204532, 0.8794090736218922, 0.830450152931158, 0.771504600511724, 0.7111091742511141, 0.6560460205839259, 0.6102270003305763, 0.5748874822019293, 0.5494159966147354, 0.5322618041733231, 0.521640398818433, 0.5159549545786817, 0.5139487962335954, 0.514645361328843, 0.5171786408254827, 0.5206664881095013, 0.524220462272553, 0.5270380164225877, 0.5284825348141102, 0.5281215494584777, 0.5257403053349148, 0.5213541505524455, 0.5152335038780238, 0.5079416971501105, 0.5003688858772365, 0.4937201646334, 0.48938182910938927, 0.4885759651529583 ], [ 0.5228768730991706, 0.5194750773727352, 0.5157949731191521, 0.5113961365691087, 0.5065915067806175, 0.5031924211097425, 0.505138900574788, 0.5181993413593541, 0.5470183030338802, 0.5907720239925915, 0.6439757528633534, 0.6999006892168795, 0.7524678944439369, 0.7972128883864088, 0.8318172184994164, 0.85605954045344, 0.8716250069885103, 0.8821153388477114, 0.8921659120448444, 0.9047594852677485, 0.9178997557520734, 0.9237205537766546, 0.9128521497514763, 0.8807722823346196, 0.8305281226848509, 0.7700583303835143, 0.7082680438812001, 0.6521851461733339, 0.6058029911161102, 0.570309193701997, 0.5449796296248709, 0.5281425709475949, 0.5179174628417449, 0.5126488525821508, 0.5110571880664995, 0.5121661269531346, 0.5151130161750554, 0.519008916831899, 0.5229524415790796, 0.5261319229208823, 0.5279095496530534, 0.5278584123461737, 0.5257732223406808, 0.5216797607707119, 0.5158568632640912, 0.508870683185897, 0.5016037893444664, 0.4952373099764579, 0.49111343747014685, 0.49040061248267863 ], [ 0.5233423248558816, 0.5208228741114336, 0.5182353350422314, 0.5150778344566123, 0.5115829540223775, 0.5094754545516547, 0.5125867142204571, 0.5264818156270441, 0.5555535805566967, 0.5990193405651084, 0.651611164009768, 0.7067708675391434, 0.7585184909870119, 0.8024486740874436, 0.8363088105632829, 0.8599064494922577, 0.8748625952672517, 0.8847300561814152, 0.8942512227842802, 0.9065962336061703, 0.9198163223873764, 0.9258190047564275, 0.9148064075799797, 0.8819379638419471, 0.8303345989088786, 0.7682869995125181, 0.7050842325895597, 0.648000380358982, 0.6010994476158316, 0.5655074730650995, 0.5403764603215057, 0.5239068054509888, 0.5141188192377362, 0.5092979776730343, 0.5081431993012339, 0.5096808214558486, 0.5130537279663432, 0.5173670291935601, 0.5217067783325575, 0.5252529961037671, 0.5273677358138531, 0.5276305955458658, 0.5258464152422311, 0.5220517191762468, 0.5165336592089528, 0.5098606127505166, 0.5029064170640103, 0.49682677682620224, 0.4929189903714197, 0.49229897883010343 ], [ 0.5238913154366851, 0.5223122348310314, 0.5208952239755753, 0.5190746969894975, 0.5169960368107902, 0.5162827144273422, 0.52063028081419, 0.5353682457857882, 0.5646304946680625, 0.6076854211988182, 0.6595119758257387, 0.7137575476778448, 0.7645660684362577, 0.8076045778903105, 0.8406930843377702, 0.8636628159961497, 0.8780486447038387, 0.8873288539798041, 0.8963397024983369, 0.9084364916100109, 0.9217145658909706, 0.9278558442173835, 0.9166356965513807, 0.8829008681284995, 0.8298591708376534, 0.7661781410113333, 0.7015466649757721, 0.6434842275313476, 0.5961130770214814, 0.5604826985149951, 0.535609531113128, 0.5195592443814524, 0.5102501627164027, 0.5059084459512444, 0.5052129296583039, 0.5071951791759826, 0.51100589122881, 0.515745092239988, 0.5204867381834868, 0.5244034675030458, 0.5268583244985913, 0.5274383595268993, 0.5259591535564885, 0.5224682129562093, 0.5172608334638266, 0.5109069763865548, 0.5042706450319859, 0.4984808756908524, 0.494789674221509, 0.4942618499246083 ], [ 0.524520686535547, 0.523938359695435, 0.523767745893376, 0.5233767685320275, 0.5228158676023552, 0.5235913920805468, 0.529236144552309, 0.5448166406657934, 0.5742053854623401, 0.6167296068878595, 0.6676399399727858, 0.7208234676799903, 0.7705747278410884, 0.8126480133110512, 0.8449437046374948, 0.8673113311055202, 0.881176207150816, 0.8899141365761238, 0.8984396014198975, 0.910290314350711, 0.92360429660409, 0.9298372439186301, 0.918340440919813, 0.8836554767746734, 0.8290912385953655, 0.7637195304103718, 0.6976449883811588, 0.6386302449317025, 0.5908417537159548, 0.5552363526474382, 0.5306828278099285, 0.5151053839451971, 0.5063177917506375, 0.5024868691044215, 0.5022728983955911, 0.5047152804024261, 0.5089748827785694, 0.5141475403165503, 0.5192956697575067, 0.5235855916409333, 0.5263825318876465, 0.5272819263600669, 0.5261106545593127, 0.522927372078557, 0.5180352792477333, 0.51200524961748, 0.5056904077524245, 0.5001920923986183, 0.49671696810729765, 0.4962803508690457 ], [ 0.5252268271849934, 0.5256955883098071, 0.526844575665075, 0.527971910087089, 0.5290244951997697, 0.5313748762707691, 0.5383670282766853, 0.5547818132141061, 0.5842314476334489, 0.6261080561558197, 0.675954012200492, 0.7279288985467567, 0.7765062845042972, 0.8175443066336917, 0.849032538490565, 0.8708330935876545, 0.884236853419534, 0.892486966691221, 0.9005576866556929, 0.9121661360252368, 0.9254940037651698, 0.9317689538090292, 0.9199212314080731, 0.8841959182859771, 0.828019978492796, 0.7608992503737877, 0.6933696999226617, 0.6334331861115597, 0.5852846446602855, 0.5497711118729481, 0.5256013310874911, 0.5105515000528753, 0.5023286072019277, 0.49904034211464227, 0.4993300297604664, 0.5022475362241277, 0.5069663233898664, 0.5125789544469097, 0.5181369856517332, 0.5228016322783282, 0.5259415518095993, 0.5271614789891329, 0.526300089524254, 0.523427283516456, 0.5188538650355508, 0.5131509275061666, 0.5071597419506944, 0.5019531335120653, 0.4986926822313044, 0.4983459803549528 ], [ 0.5260057168665655, 0.527577451868222, 0.5301160303656984, 0.5328459280225804, 0.5356011631681661, 0.5396032469480648, 0.5479825655151492, 0.5652161385010372, 0.5946595326522448, 0.6357744661370167, 0.6844109157697769, 0.7350320909431544, 0.7823206201240482, 0.8222569984986579, 0.8529299262708799, 0.8742078011336294, 0.8872207132148997, 0.8950469926592223, 0.9026991804478993, 0.9140708447752103, 0.9273907588589039, 0.9336561144360054, 0.9213786873835694, 0.8845157952481957, 0.8266342979433056, 0.7577057672676496, 0.6887122868564267, 0.6278891525128332, 0.5794423370615113, 0.5440909340198351, 0.5203710638642665, 0.5059046633206576, 0.4982901049295534, 0.49557642431509036, 0.4963916321424656, 0.4997986677919129, 0.5049860546436307, 0.5110440371066325, 0.5170141404200026, 0.5220538470475427, 0.5255365476069718, 0.5270771600414148, 0.5265265894944711, 0.5239660046363386, 0.5197134566046457, 0.5143395557402848, 0.5086728241753073, 0.5037569631550673, 0.5007089873140618, 0.5004506361768617 ], [ 0.5268529759558813, 0.5295767361735696, 0.5335711579696293, 0.5379827225926669, 0.5425225854252165, 0.5482437552329636, 0.558039945842833, 0.5760702019895649, 0.6054388482744617, 0.6456807613147088, 0.6929657322973702, 0.7420897805975071, 0.7879761008267957, 0.8267482103089189, 0.8566050078573443, 0.8774139926612536, 0.8901165505907834, 0.8975923687584081, 0.9048676630169108, 0.9160097284356102, 0.9293000345678083, 0.9355028215970267, 0.9227128354648363, 0.884607922326002, 0.824922785563126, 0.7541280236494569, 0.6836653820164952, 0.6219957533474822, 0.5733169675863713, 0.5382011430712841, 0.5149991337288311, 0.501172748305674, 0.4942103619514822, 0.49210311318638406, 0.49346537015015135, 0.4973756792749355, 0.5030401097796978, 0.5095475820354182, 0.5159306055483914, 0.5213444705793162, 0.5251686432814298, 0.5270290701987912, 0.5267892505413567, 0.5245415756384704, 0.5206109371912253, 0.5155667581659127, 0.510224002546678, 0.5055968321214045, 0.502758436155073, 0.5025866332276796 ], [ 0.5277639230501809, 0.531685554633462, 0.5371978393104997, 0.543364451285818, 0.5497632289028773, 0.5572612761103042, 0.5684944746183691, 0.5872933497915476, 0.6165175635515209, 0.6557777379962147, 0.7015725076258588, 0.7490577493550554, 0.793430063798488, 0.8309790788261443, 0.860026099987337, 0.8804293336469252, 0.8929118767194836, 0.9001196473192394, 0.9070649006679641, 0.9179862867415632, 0.931225412490005, 0.9373115119145777, 0.9239222960850175, 0.8844639959549653, 0.8228736660254911, 0.7501555513676101, 0.6782229358982269, 0.6157522736385121, 0.5669123521314212, 0.5321085098655634, 0.5094937695083257, 0.49636443644354694, 0.4900980158233471, 0.4886288103479648, 0.49055922878217195, 0.4949858237260895, 0.5011346778247658, 0.5080944387966695, 0.5148898415186883, 0.5206756962931162, 0.5248389140321281, 0.5270172661685337, 0.5270871384819313, 0.5251520309691239, 0.5215432256625175, 0.5168282607781707, 0.5118078229978036, 0.5074663001146689, 0.5048339784208575, 0.5047467150268337 ], [ 0.5287336386221833, 0.5338954302187072, 0.5409829011213052, 0.5489717023200595, 0.557295594869939, 0.5666187252058786, 0.5793000518216689, 0.5988341514817292, 0.6278433276434993, 0.6660156571875897, 0.7101848610693005, 0.755891438265322, 0.7986393759707129, 0.8349102631615768, 0.8631611190074534, 0.8832309248917292, 0.8955931024770162, 0.9026236182293151, 0.9092905710371474, 0.9200019062714773, 0.9331681728433043, 0.9390822740188723, 0.9250035018236961, 0.8840742325712441, 0.8204747727276261, 0.7457786103272298, 0.6723804066478666, 0.6091598498949269, 0.560234114862997, 0.5258213274279209, 0.5038643510264211, 0.49148921220584907, 0.4859622370303506, 0.4851622793146696, 0.4876814688136583, 0.4926365609951937, 0.49927606021922993, 0.5066894719035775, 0.5138952671761028, 0.5200496570829924, 0.5245483763304053, 0.5270417583106024, 0.5274192930450461, 0.5257954096523876, 0.5225072926605854, 0.5181199122491575, 0.5134190504077905, 0.509359251929477, 0.5069289696139259, 0.5069240597155256 ], [ 0.5297570343463736, 0.5361973852826112, 0.5449122379823277, 0.5547836740580501, 0.5650904922832682, 0.5762774349418756, 0.5904095765087296, 0.6106407850525855, 0.6393637102447316, 0.6763447815504289, 0.7187565866967771, 0.7625466076422631, 0.8035610691160442, 0.8385025293569333, 0.8659780415028974, 0.8857955993944621, 0.8981457222595424, 0.9050970720675678, 0.9115418671520015, 0.9220553950835297, 0.9351267733192754, 0.9408121607617531, 0.9259499995182029, 0.8834270183746394, 0.8177135537056401, 0.7409883579678462, 0.6661349687539502, 0.6022216524277405, 0.5532898149038847, 0.5193494794303124, 0.49812143105970513, 0.4865573520565536, 0.4818126943462655, 0.48171259476983264, 0.48484057248316265, 0.4903355067455521, 0.49747061913271445, 0.5053375145025338, 0.512950226757712, 0.5194684051961445, 0.5242979777017365, 0.5271025079938169, 0.5277847314933444, 0.5264697645165733, 0.5235001747172895, 0.5194377011298633, 0.5150526850608048, 0.5112699083324819, 0.5090371750718368, 0.5091122813477497 ], [ 0.5308289273513949, 0.5385820380759512, 0.5489709410846535, 0.5607783566764947, 0.5731172982702692, 0.5861974883932383, 0.601775284159729, 0.6226613527670883, 0.6510265707775013, 0.6867158539862, 0.727242235158716, 0.7689800361451361, 0.8081530566891042, 0.8417174186497163, 0.8684453938442731, 0.8881001631583735, 0.9005544152751958, 0.907530470821756, 0.9138129699303219, 0.9241423746518299, 0.9370962320112802, 0.942494542022378, 0.9267518429643353, 0.8825086119235139, 0.814577127103675, 0.7357770540098192, 0.6594857405956538, 0.5949430727706311, 0.5460890686718681, 0.5127045000960879, 0.49227674846811315, 0.4815799058575659, 0.4776595133017281, 0.4782890833742713, 0.4820451785591318, 0.4880903715376099, 0.4957247166601864, 0.5040433168553091, 0.5120579550966047, 0.5189338916645609, 0.52408858641029, 0.5271994247670037, 0.5281824517232997, 0.5271731703146154, 0.5245189863773494, 0.5207777699054106, 0.5167039748758526, 0.5131928323440708, 0.5111527697504343, 0.5113054272106323 ], [ 0.5319441185630065, 0.5410397047481456, 0.5531434318466295, 0.5669327130471724, 0.5813442024487705, 0.5963380114130341, 0.6133490244218864, 0.6348441359985129, 0.6627803628914763, 0.6970805165057937, 0.7355976640622321, 0.7751502459135813, 0.812374938688202, 0.8445180056512962, 0.8705327602055507, 0.8901215507508069, 0.9028028503665506, 0.9099115269094701, 0.9160943862565223, 0.9262545275840633, 0.9390674338584468, 0.9441185192478951, 0.9273950798356908, 0.8813029358781252, 0.8110524017026923, 0.7301383040033752, 0.6524340301814257, 0.5873319140486302, 0.5386436654745428, 0.5058996236875859, 0.4863432314510445, 0.4765686704522393, 0.47351322811452945, 0.4749012565055593, 0.4793040059225328, 0.48590888884180583, 0.4940446441668002, 0.5028114902076666, 0.5112215416862507, 0.5184479457075752, 0.5239209812611462, 0.527332363442198, 0.52861143487909, 0.527903730759387, 0.5255609303975493, 0.5221364261134944, 0.5183684238514322, 0.5151229315618826, 0.5132703344593357, 0.5134979718221913 ], [ 0.5330974742138179, 0.5435605055934222, 0.557413598581859, 0.5732228564294168, 0.5897384332151938, 0.6066574252119855, 0.625082486714819, 0.6471377966325865, 0.6745743803211159, 0.7073916687554354, 0.7437805443515678, 0.7810182331688821, 0.8161889013194032, 0.8468697502099413, 0.8722112965403447, 0.8918369027569107, 0.9048733017491319, 0.9122247140971397, 0.9183721592829102, 0.9283787012247482, 0.9410263847303848, 0.9456684174023078, 0.9278613403647227, 0.87979148938252, 0.8071262755389703, 0.7240673436522258, 0.6449835974138312, 0.5793985814456009, 0.5309676735425565, 0.49894982154321155, 0.48033498986984524, 0.4715361552396531, 0.4693847276564734, 0.4715587358179122, 0.47662576499294856, 0.4837987307301698, 0.49243654127543884, 0.5016464470830232, 0.5104438944588352, 0.5180122545703452, 0.5237958417487797, 0.5275011211947603, 0.5290706475272449, 0.5286595845132671, 0.5266233061151002, 0.5235101507559449, 0.5200417971573447, 0.5170554571077981, 0.5153848491400888, 0.5156848081778177 ], [ 0.5342840095058004, 0.5461344742741934, 0.5617649345929424, 0.5796242232035499, 0.5982664653586918, 0.6171136627117755, 0.636927381025664, 0.6594915322418404, 0.6863589498432868, 0.7176037661599513, 0.7517508099627498, 0.7865481737968972, 0.8195607166361776, 0.8487414367096484, 0.8734542351574969, 0.8932236007783984, 0.9067462859893808, 0.9144507556170187, 0.9206269738300256, 0.9304958706117636, 0.9429534445462356, 0.9471233693980627, 0.9281275417985945, 0.8779534089123111, 0.8027859215851632, 0.7175613638335351, 0.6371409300615409, 0.5711562691641049, 0.5230775332499585, 0.491871824476446, 0.4742672955837574, 0.4664955396384714, 0.4652851962481558, 0.46827117312602246, 0.4740190567869362, 0.4817674098714011, 0.4909063045079144, 0.5005523395867029, 0.5097277042840409, 0.5176283442953082, 0.5237137387865364, 0.5277054347894425, 0.5295590434477349, 0.5294389101864696, 0.5277035160973716, 0.524895604244608, 0.5217201232869224, 0.5189859997225894, 0.5174916837074706, 0.5178612367479094 ], [ 0.5354989733163263, 0.5487516687246919, 0.5661806762389958, 0.586111739467436, 0.6068942093902057, 0.6276643527703729, 0.6488355810564637, 0.6718551920179218, 0.698085576958127, 0.7276730583059893, 0.7594710386560262, 0.7917080633585462, 0.8224608346844915, 0.8501061650708377, 0.8742373617616849, 0.8942592984004222, 0.9084002717155416, 0.9165661486002141, 0.9228332128450479, 0.9325799725067002, 0.9448225809344966, 0.9484570070627079, 0.9281657321502268, 0.8757657018204559, 0.7980191639910366, 0.7106198738012072, 0.6289155293352112, 0.5626211394604996, 0.5149921338383071, 0.48468412822355345, 0.4681565497751211, 0.46146062242446817, 0.4612260502635869, 0.4650481668088294, 0.4714922603884144, 0.4798221663156239, 0.48945948664610406, 0.4995329979089525, 0.5090754113112295, 0.517297561936064, 0.5236751262495654, 0.5279449780417491, 0.5300755651033005, 0.5302399304105883, 0.5287990711990982, 0.5262896301267528, 0.5233996936590183, 0.5209104834778507, 0.51958658691151, 0.5200229526673237 ], [ 0.5367379327349429, 0.5514022823985064, 0.5706439396825196, 0.5926599808573018, 0.6155871838262781, 0.6382669769018008, 0.6607592367397432, 0.6841793603555123, 0.7097070499849495, 0.7375577690367027, 0.766906753760897, 0.7964702451920167, 0.824865495167334, 0.8509422925833362, 0.8745394462028789, 0.8949219746983299, 0.9098114708614634, 0.918542787157117, 0.9249580862959915, 0.9345966553296681, 0.9466006950783955, 0.9496372673443343, 0.9279431109502545, 0.8732036706731952, 0.7928149417701155, 0.7032450973880087, 0.6203201995868539, 0.5538124884877564, 0.5067328695467074, 0.4774069795422715, 0.462020236296136, 0.45644576300802586, 0.4572188716673796, 0.46189917761389765, 0.46905341155516117, 0.4779698374011174, 0.48810118983629086, 0.4985918717886632, 0.5084891743367154, 0.5170210597121895, 0.5236803335524143, 0.528219359620291, 0.5306191448523403, 0.5310609150626195, 0.5299075941623197, 0.5276892568334406, 0.525077060032208, 0.5228251575237677, 0.5216656736213547, 0.5221660315020267 ], [ 0.5379968561029929, 0.5540767544664631, 0.5751378551499318, 0.5992433254290301, 0.6243106723603962, 0.6488790034602467, 0.672650863029203, 0.6964154150098576, 0.721177508505719, 0.7472182208071798, 0.7740266397442516, 0.8008117843496285, 0.8267575907161006, 0.8512341454820881, 0.8743426120849888, 0.8951900261784171, 0.910953717365296, 0.9203477393211497, 0.9269610482109598, 0.9365021640283173, 0.9482470771676054, 0.9506263081787569, 0.9274222855111978, 0.8702415341522526, 0.7871638495734159, 0.6954423942901403, 0.6113713352214603, 0.5447528928054598, 0.49832367067278904, 0.4700623405350459, 0.45587686015961343, 0.45146581479583725, 0.45327533967598577, 0.45883344727558917, 0.46671007856534735, 0.47621670894430973, 0.48683595864622614, 0.49773197811327263, 0.5079708443593534, 0.5167997815670125, 0.523729559462186, 0.5285281212883264, 0.5311887059716531, 0.5319001837205837, 0.5310268218992951, 0.529091697687962, 0.5267490300652098, 0.5247265862439576, 0.5237254108814752, 0.52428691392885 ], [ 0.5392721930983572, 0.5567658774893469, 0.5796456976295048, 0.6058360998416206, 0.6330298684143819, 0.6594580044859445, 0.6844634118061939, 0.7085155668843419, 0.7324524824742978, 0.7566169071318054, 0.7808026688499895, 0.8047146618700907, 0.8281269064112926, 0.8509723367233123, 0.873632639657095, 0.8950424085293489, 0.9117984391411418, 0.9219432170414362, 0.9287937616060586, 0.9382430187837043, 0.9497130520043874, 0.951380498343515, 0.9265618493634399, 0.8668532282837077, 0.7810587381093359, 0.6872206959061364, 0.6020891964631101, 0.5354683295403188, 0.48979100477401455, 0.4626738288133673, 0.449745870426048, 0.4465360508550704, 0.44940716171529116, 0.4558599235590062, 0.4644692461635679, 0.47456834568434797, 0.4856676834325764, 0.4969558579258054, 0.5075219433788242, 0.5166344525280708, 0.5238228673192535, 0.5288707366715537, 0.5317831635539084, 0.5327561074349844, 0.5321546066000283, 0.5304943494016785, 0.5284126613285752, 0.5266116381450994, 0.5257626030453986, 0.5263823896200926 ], [ 0.5405609502602299, 0.5594609009771453, 0.5841510129727794, 0.6124127194183748, 0.641710010013552, 0.6699617605584258, 0.6961503337158428, 0.7204328887283387, 0.74348890880516, 0.7657185183661924, 0.7872101410467195, 0.80816578944441, 0.8289697758875828, 0.8501537048584383, 0.8723992089802851, 0.8944588394826914, 0.9123147308038455, 0.9232867561877813, 0.9304007488364266, 0.9397570024725456, 0.9509418951682734, 0.9518503950726088, 0.925317400962053, 0.8630133396606873, 0.7744953509044208, 0.6785929428655901, 0.5924981641873631, 0.5259882623246611, 0.48116384299407494, 0.45526663125159367, 0.44364756691465257, 0.4416720821704493, 0.4456260047352052, 0.4529871950441921, 0.4623372227333531, 0.4730294018845003, 0.48459952769197834, 0.4962655457530023, 0.5071436492894816, 0.5165255711839906, 0.523960181801077, 0.5292466106249609, 0.5324014253411364, 0.5336271099010428, 0.5332889158044457, 0.5318947892723249, 0.530065254044063, 0.5284774737692979, 0.5277743762516458, 0.5284495805852714 ], [ 0.5418607601812722, 0.5621536290975017, 0.5886377383551449, 0.6189478229228769, 0.6503165082935025, 0.6803483590988143, 0.7076656367491156, 0.7321213403178723, 0.7542451328188977, 0.7744899275013443, 0.7932276444467724, 0.811156869192165, 0.8292885343661333, 0.848781047443824, 0.8706361018162804, 0.8934200755864563, 0.9124695404667502, 0.9243315998292434, 0.9317206413944892, 0.9409749991167681, 0.9518691653861785, 0.9519806092253238, 0.9236431299180673, 0.8586980880788381, 0.76747297053189, 0.6695765094201698, 0.5826269626394981, 0.5163456843325913, 0.4724735864007308, 0.4478673893168901, 0.43760299039193584, 0.43688976885889774, 0.44194342774802653, 0.45022343810955806, 0.46031958547233176, 0.4716034924046553, 0.4836338922056911, 0.49566255331615533, 0.5068367874396269, 0.51647340548624, 0.5241412873222433, 0.5296550792546881, 0.5330423925500838, 0.5345116681151977, 0.5344278315751818, 0.5332907712858141, 0.5317043428002948, 0.5303215328809654, 0.52975816247039, 0.5304859241872109 ], [ 0.5431699424047423, 0.5648365106071723, 0.5930903159865384, 0.6254164030762595, 0.6588150732411824, 0.6905762916253114, 0.7189639484047946, 0.7435357980283533, 0.7646809025084329, 0.7829001439932384, 0.7988369475269729, 0.8136841379312132, 0.8290909884903553, 0.8468628134308818, 0.8683413866582319, 0.8919082764870964, 0.9122279960348997, 0.9250272594654606, 0.9326878350838311, 0.9418231672093507, 0.9524236816121019, 0.951709837927092, 0.9214938237865381, 0.8538862585634521, 0.759995046849176, 0.6601935982962952, 0.5725088375150715, 0.5065771090093494, 0.46375394729129094, 0.4405040543238314, 0.4316337961714987, 0.4322051247875047, 0.43837081620658325, 0.4475763772652723, 0.45842117035724683, 0.47029326851063336, 0.4827724216731886, 0.49514786843864567, 0.5066018290865556, 0.516477991966179, 0.5243658281174479, 0.5300954106321816, 0.5337049607383111, 0.5354083125961292, 0.5355695489009219, 0.5346802213074969, 0.5333276874667139, 0.532141521147258, 0.53171168331713, 0.5324891560184148 ], [ 0.5444875538506376, 0.5675027188492352, 0.5974937988460709, 0.6317939339583044, 0.6671718405097548, 0.700604555506092, 0.730000588279754, 0.7546320970588709, 0.7747573641516233, 0.7909202448069036, 0.8040228374114076, 0.8157480373319942, 0.8283899475717356, 0.8444128333290555, 0.8655176098154745, 0.8899074687673371, 0.9115539111425063, 0.92532024535674, 0.9332344028167076, 0.9422253269969973, 0.9525293333348672, 0.9509720417311687, 0.9188260946538804, 0.8485600028039406, 0.7520697820370142, 0.6504715883524892, 0.5621816755857039, 0.4967224984958252, 0.45504078070879256, 0.43320571146314074, 0.4257621113946008, 0.4276342161339656, 0.4349193185670607, 0.4450532584948497, 0.4566461014488502, 0.4691005674873583, 0.482016049073548, 0.4947219685574844, 0.5064388966167793, 0.5165391383349041, 0.524633310006045, 0.5305668062181821, 0.5343880207517908, 0.536315627245862, 0.5367123734527122, 0.5360612315331634, 0.5349332635027668, 0.5339353965015514, 0.5336329338009893, 0.5344572927959088 ], [ 0.5458134263564395, 0.5701462193856259, 0.6018339470530338, 0.6380564964748248, 0.6753535033296968, 0.7103927657790907, 0.7407316579263636, 0.7653670948924185, 0.7844370682847183, 0.7985232927496422, 0.8087729200198465, 0.8173528443196152, 0.8272028079613439, 0.8414501035702976, 0.8621720073082497, 0.8874041165424119, 0.9104105134362963, 0.9251551318181188, 0.9332921931903488, 0.9421055483370611, 0.9521076709860092, 0.9496987642625849, 0.9155983068212605, 0.8427054879031075, 0.7437106511565701, 0.6404433162969413, 0.5516880508023521, 0.48682511935187717, 0.44637186197128226, 0.4260023721058929, 0.4200103766512171, 0.42319305453886924, 0.4315997851306651, 0.44266083392687006, 0.4549978455591228, 0.4680265442147925, 0.4813650654521832, 0.49438484697585533, 0.5063477750576231, 0.5166564293140581, 0.5249431037894223, 0.5310684029941513, 0.535090459785905, 0.5372322489206801, 0.5378547188070459, 0.537432054354284, 0.5365192518357451, 0.535701355352889, 0.5355201661497817, 0.5363886154081409 ], [ 0.547148188654384, 0.5727618225223485, 0.6060973132968315, 0.6441809030313177, 0.6833274536607412, 0.7199012826234301, 0.751114154759239, 0.7756987648232941, 0.793683995417222, 0.8056842527694419, 0.8130773982031844, 0.8185062856712908, 0.8255511714040165, 0.8379986122747914, 0.8583167399918206, 0.8843877976184077, 0.9087614141276632, 0.9244761321474628, 0.932795076343647, 0.9413909076223655, 0.9510809828260078, 0.947821548097213, 0.9117705420237614, 0.8363134356615914, 0.7349368406299815, 0.6301472726179518, 0.5410751805932542, 0.47693131507042114, 0.4377866069087891, 0.41892473469326635, 0.414401173040698, 0.41889748562903745, 0.42842270906425983, 0.44040535525647034, 0.4534792774204039, 0.46707178272404404, 0.4808192015188422, 0.4941360491038822, 0.5063279291166044, 0.5168292354379893, 0.5252944501881023, 0.5315992762793931, 0.5358111625825174, 0.5381568667749499, 0.5389951032402059, 0.538791095776368, 0.5380840284589523, 0.5374378187805027, 0.5373718738313962, 0.5382816522257557 ], [ 0.548493269818226, 0.5753452176405, 0.6102713155562578, 0.6501448224182695, 0.6910619367692783, 0.7290913600771107, 0.7611061166666342, 0.7855863284787269, 0.8024636110611261, 0.8123799172042319, 0.816928843434771, 0.8192191511149878, 0.8234604759013365, 0.8340871810339043, 0.8539691403914281, 0.8808519723610064, 0.9065718007389992, 0.9232289283052059, 0.9316812948818753, 0.9400143475753968, 0.9493755404459678, 0.9452741273548995, 0.9073051516824251, 0.8293796299751779, 0.7257735885462542, 0.6196276905932453, 0.5303947748941187, 0.4670901851782753, 0.4293257327889451, 0.4120039154851473, 0.40895703625018553, 0.4147630738404921, 0.42539816938754016, 0.43829257298646845, 0.45209274456729454, 0.4662363900644049, 0.48037771056404405, 0.4939747155371056, 0.5063785247745101, 0.5170567244780875, 0.5256864661862023, 0.5321584431941555, 0.5365490127765842, 0.5390882214338015, 0.540132146188604, 0.5401369085141607, 0.5396261538817985, 0.5391434188312392, 0.5391867758710704, 0.5401351627688293 ], [ 0.5498508808988242, 0.5778929858836547, 0.6143442951840211, 0.655926905673293, 0.6985262233307974, 0.737925321605175, 0.7706668037631703, 0.7949904361018744, 0.8107429596107243, 0.818588851017803, 0.8203219756091019, 0.8195049121831763, 0.8209596172550027, 0.8297492911572161, 0.8491519460682239, 0.8767948179827163, 0.9038098164964302, 0.9213625673303205, 0.9298958601359569, 0.9379175416317828, 0.94692481588124, 0.94199453128757, 0.9021678392005692, 0.8219054595300692, 0.71625240878641, 0.6089345056733942, 0.5197027593228649, 0.45735316162060513, 0.4210308596486444, 0.40527115154455684, 0.40370025973335566, 0.4108049846351626, 0.42253577569246636, 0.4363277387092729, 0.4508401259426808, 0.4655200746102671, 0.48003944636664736, 0.4938996288830971, 0.5064984543392047, 0.5173378750734012, 0.5261181526183429, 0.5327448667130319, 0.5373028943969109, 0.5400251040432316, 0.541264564459988, 0.5414681848728486, 0.5411443625450705, 0.5408169850187388, 0.540963801546477, 0.541948121806216 ], [ 0.5512239711304723, 0.5804025873951727, 0.618305558372272, 0.6615069133234861, 0.7056908028742129, 0.7463667681384943, 0.7797569233948407, 0.8038734027963015, 0.8184908062814671, 0.8242913679016559, 0.8232534643503086, 0.8193793498062677, 0.8180805401081871, 0.825022859177325, 0.8438934820812511, 0.8722200840353469, 0.9004480986444928, 0.9188314113909674, 0.927392915346187, 0.9350536355863106, 0.9436725775789184, 0.9379272382945449, 0.8963291808703048, 0.8138985221608336, 0.7064111756869731, 0.5981231606815026, 0.5090588528941827, 0.44777347487115626, 0.41294405397467593, 0.39875747955063906, 0.3986526895826089, 0.40703786538018744, 0.41984461442322407, 0.4345156081444886, 0.4497228817201733, 0.46492221075136625, 0.4798029330381961, 0.4939092616364143, 0.50668636383862, 0.5176714921100908, 0.5265884028094112, 0.5333574602395631, 0.5380716935174591, 0.5409663552388094, 0.5423911682706033, 0.5427837495106886, 0.5426375522979209, 0.5424575311063723, 0.54270207552701, 0.5437197039477746 ], [ 0.5526161547295682, 0.5828723189895817, 0.6221453991235616, 0.6668658439122447, 0.712527601789509, 0.7543808242320647, 0.7883389040691996, 0.8121995077382944, 0.8256778356231327, 0.8294695478221907, 0.8257217641356212, 0.8188601916238796, 0.8148577790542192, 0.8199499240733885, 0.8382277449464026, 0.8671379057629774, 0.8964654652407561, 0.9155971639946494, 0.9241379676166797, 0.931389712005328, 0.9395758023317944, 0.9330254747205111, 0.8897665182140309, 0.8053732678946776, 0.6962940386429279, 0.5872542302459072, 0.4985259798789365, 0.4384055051243504, 0.40510731939782424, 0.39249339531563077, 0.3938355141807498, 0.4034757263326985, 0.4173331966736736, 0.43286044330008533, 0.44874209384989044, 0.464441891739069, 0.4796664257806984, 0.4940018229625599, 0.5069406816806316, 0.5180562233758372, 0.5270960120613363, 0.5339950926224094, 0.5388543000482793, 0.5419108640669921, 0.5435108571738752, 0.5440825521655681, 0.5441047740179985, 0.5440642422410078, 0.544400903510016, 0.5454492687772013 ], [ 0.5540316039251527, 0.5853012379567104, 0.6258551022200232, 0.6719860630687872, 0.7190102280436415, 0.7619344280356094, 0.7963772234460932, 0.8199353612319893, 0.8322769139678503, 0.8341073062179348, 0.8277269944829687, 0.8179667595639382, 0.8113279336476473, 0.8145762074442227, 0.8321943329555062, 0.8615654917352156, 0.8918487434330742, 0.9116310105382412, 0.9201098645047695, 0.9269088058849401, 0.9346073164250361, 0.927253732978874, 0.8824661597684231, 0.7963516141977574, 0.6859511289769293, 0.5763928358776613, 0.4881694950933776, 0.4293040184035489, 0.39756204223690866, 0.38650850016762633, 0.3892690521661513, 0.40013182333398095, 0.4150094076289172, 0.4313660127883366, 0.44789849785406033, 0.4640779723037538, 0.4796279626325728, 0.4941753028484274, 0.5072596476155327, 0.518490577021993, 0.5276396877732594, 0.5346565935260535, 0.5396496096489067, 0.5428575668862532, 0.5446226159370957, 0.5453636604160333, 0.5455452214425328, 0.545636462491496, 0.5460597583947662, 0.5471363465618045 ], [ 0.5554749034573672, 0.5876890477768836, 0.6294269254074539, 0.6768514315901212, 0.7251142429623629, 0.7689966708101217, 0.8038387949224344, 0.8270503409886838, 0.838263421410144, 0.8381905246700848, 0.8292708751960547, 0.8167196287527089, 0.8075290664771904, 0.8089505079321578, 0.825838163319952, 0.8555275841634146, 0.8865946994843432, 0.9069159257061663, 0.9153023565878267, 0.921611300794889, 0.9287580275489582, 0.9205905854423595, 0.8744257901561268, 0.7868634356782068, 0.6754380174187002, 0.5656078213465898, 0.4780562025536853, 0.42052329388751286, 0.3903484032307269, 0.380831141570468, 0.3849725426188133, 0.39701854395164193, 0.41288045796161077, 0.43003558990892954, 0.4471925068588998, 0.4638291025122164, 0.4796854078121162, 0.4944275126217227, 0.5076413411821704, 0.5189729393924898, 0.5282180599817066, 0.5353407590647097, 0.540456525741994, 0.5438054462689494, 0.5457255104140278, 0.5466262525363046, 0.5469582212659893, 0.5471736828341794, 0.5476782670245401, 0.5487806245656432 ], [ 0.556950861355052, 0.5900359421384445, 0.6328540611692952, 0.6814474301043036, 0.7308174576622174, 0.7755391916816767, 0.8106934167397878, 0.8335170936221628, 0.8436156562752555, 0.8417072525499697, 0.8303567246751791, 0.8151402997297515, 0.8035000214147561, 0.8031238931457135, 0.8192089157860273, 0.849056581143207, 0.8807119272896273, 0.9014492003001525, 0.9097250519172566, 0.9155155407440613, 0.922038519799593, 0.9130318855725056, 0.8656568712648703, 0.7769468153237822, 0.6648148828274733, 0.5549706566992445, 0.4682531501033291, 0.41211615755990966, 0.38350477041043557, 0.3754880563903545, 0.380963941643963, 0.3941472989036618, 0.4109528376678949, 0.4288719485695791, 0.44662422902002796, 0.4636937541981472, 0.4798364874956067, 0.4947561212919196, 0.5080837089815673, 0.5195015928198955, 0.5288296921147468, 0.5360463576068816, 0.5412739616011457, 0.5447535299191673, 0.5468186834533926, 0.5478696104947445, 0.5483432235490484, 0.5486755296175578, 0.5492561975181418, 0.5503819339838605 ], [ 0.5584642703563406, 0.5923424052993904, 0.6361305800796198, 0.6857612769370784, 0.7361002476998172, 0.7815366329313383, 0.8169142870069951, 0.8393120894959911, 0.8483153109421706, 0.8446479889561814, 0.8309895256813107, 0.8132508868040532, 0.799279670132637, 0.7971486575028099, 0.8123601453388655, 0.8421922192681445, 0.8742223488493702, 0.8952451049397212, 0.9034035548595835, 0.9086574993684973, 0.9144796760829428, 0.9045944552018126, 0.8561866292894968, 0.7666479495250881, 0.6541453649119396, 0.5445540385191364, 0.4588261895385861, 0.40413294847562864, 0.3770670914698358, 0.3705040259839418, 0.37725972966752874, 0.3915284206423727, 0.40923227297345044, 0.42787735744314503, 0.4461934795251634, 0.46367024117192285, 0.4800788189363598, 0.4951586875099266, 0.5085845902856554, 0.5200747330408066, 0.5294730917675069, 0.5367721356595772, 0.5421008424843743, 0.5457008896168019, 0.5479013508759294, 0.5490931131361588, 0.5496997924740288, 0.5501417535293892, 0.5507934472043214, 0.5519402375086246 ], [ 0.5600196138637092, 0.5946089704207466, 0.6392513597027297, 0.6897820349219355, 0.7409458741606686, 0.7869671595550555, 0.8224785875621887, 0.8444162083631801, 0.8523480110936521, 0.847006054257492, 0.831176056343165, 0.8110738258732572, 0.7949061088243696, 0.7910770260960067, 0.8053480131676015, 0.834980751831852, 0.8671617657606708, 0.8883367715608153, 0.8963786252488539, 0.9010893690018625, 0.9061319492296223, 0.8953198068805154, 0.8460590439819448, 0.7560206280729929, 0.6434950997562748, 0.5344301538553043, 0.44983830750512127, 0.3966204569364208, 0.37106830676802854, 0.36590155267596397, 0.37387473374165253, 0.3891710709603643, 0.4077236870443979, 0.42705357297267676, 0.44589978831335414, 0.46375673429725733, 0.4804099338210286, 0.4956326871910753, 0.5091417406418464, 0.5206904859404407, 0.5301467213244957, 0.5375168237452304, 0.5429361077832504, 0.5466466401938236, 0.5489727975461351, 0.5502962295801439, 0.5510275974733883, 0.5515722190818035, 0.5522900311658441, 0.5534556175307368 ], [ 0.5616207098234993, 0.5968359443937541, 0.6422120050908291, 0.6935007022278032, 0.7453407930987267, 0.7918130416289033, 0.827368138736744, 0.8488153200397406, 0.8557038984294186, 0.84877806081314, 0.8309250730713104, 0.8086316049732946, 0.7904158425310881, 0.7849596106551449, 0.7982295946510849, 0.8274736254353711, 0.8595789762380112, 0.8807752201684573, 0.8887043188686266, 0.8928769745019072, 0.8970630168759091, 0.8852742497771167, 0.835334314671188, 0.7451252617408318, 0.6329299810652811, 0.5246685755121477, 0.4413477655740313, 0.38962088708725695, 0.36553780577482076, 0.36170056713193854, 0.3708219689736029, 0.38708315939853716, 0.4064311652937101, 0.4264018319523538, 0.4457424045708278, 0.463951272410851, 0.48082729671117136, 0.49617553701274153, 0.5097528532692159, 0.5213469233958377, 0.5308490082756144, 0.5382791421905014, 0.5437787131576027, 0.5475899385451236, 0.5500323735589217, 0.5514785128604365, 0.5523264047504977, 0.5529668946233649, 0.5537460713941678, 0.5549282649755287 ], [ 0.5632702853834851, 0.5990231192435415, 0.6450087686737564, 0.6969102820009567, 0.7492749290957447, 0.7960612823598997, 0.8315701227950405, 0.8525008105275785, 0.8583782156702, 0.8499644929682163, 0.8302475157208926, 0.8059465202748682, 0.7858430087495384, 0.7788436798867863, 0.7910607363565526, 0.8197257477079377, 0.8515334963832618, 0.8726254937539969, 0.8804452601340722, 0.8840959800328512, 0.8873538608187735, 0.8745432835354617, 0.8240867032374992, 0.7340274949690848, 0.6225142532048377, 0.5153337568899053, 0.43340615064006016, 0.3831709070575933, 0.3605009498920763, 0.35791817555858835, 0.3681125028332795, 0.3852712740873738, 0.405357926079806, 0.4259228444540666, 0.44572029896791987, 0.4642517699563899, 0.4813283193526069, 0.49678461410184604, 0.5104155781555324, 0.5220420780452202, 0.5315783550961857, 0.5390578067538853, 0.5446276326264086, 0.5485299826734571, 0.5510794905562647, 0.5526395938238189, 0.5535960692054165, 0.5543258428813111, 0.5551617865507936, 0.5563584687670872 ], [ 0.5649694746026481, 0.6011695056826823, 0.6476384781672799, 0.7000058258817832, 0.752741884783833, 0.7997042341680668, 0.8350778492687879, 0.8554699937467917, 0.8603718202463082, 0.8505704063609346, 0.8291566865722717, 0.8030404594371557, 0.7812187007376621, 0.7727714130982235, 0.7838934698947498, 0.8117935281896137, 0.8430924635154747, 0.8639621133599198, 0.8716733856934684, 0.874826981369133, 0.8770937524249945, 0.8632248149877263, 0.8124011934688321, 0.722796503905406, 0.6123086142905043, 0.506482096337429, 0.42605653430963375, 0.3773008540210203, 0.35597868282663864, 0.35456845456771624, 0.3657553455694627, 0.3837406264386909, 0.40450629755227235, 0.42561678785513357, 0.4458321644986604, 0.46465602210558005, 0.48191037156308486, 0.49745727228495423, 0.5111275388554584, 0.5227739568653369, 0.532333148585603, 0.5398515340280078, 0.5454818605871646, 0.5494660107657999, 0.5521136181844397, 0.5537791753015279, 0.5548365267728028, 0.5556492120323504, 0.556537482327226, 0.557746605910982 ] ], "zauto": true, "zmax": 0.9525293333348672, "zmin": -0.9525293333348672 }, { "autocolorscale": false, "autocontour": true, "colorbar": { "tickfont": { "size": 8 }, "ticksuffix": "", "x": 1, "y": 0.5 }, "colorscale": [ [ 0.0, "rgb(255,247,251)" ], [ 0.14285714285714285, "rgb(236,231,242)" ], [ 0.2857142857142857, "rgb(208,209,230)" ], [ 0.42857142857142855, "rgb(166,189,219)" ], [ 0.5714285714285714, "rgb(116,169,207)" ], [ 0.7142857142857143, "rgb(54,144,192)" ], [ 0.8571428571428571, "rgb(5,112,176)" ], [ 1.0, "rgb(3,78,123)" ] ], "contours": { "coloring": "heatmap" }, "hoverinfo": "x+y+z", "ncontours": 25, "type": "contour", "x": [ 1e-06, 1.3011511650442548e-06, 1.692994354296022e-06, 2.2028415765056147e-06, 2.866229883678204e-06, 3.729398352432554e-06, 4.852511011181743e-06, 6.3138503555892e-06, 8.215273746089953e-06, 1.0689313005882424e-05, 1.390841207112662e-05, 1.809694657026198e-05, 2.354686311364001e-05, 3.063802837345029e-05, 3.986470631277378e-05, 5.1870009063012666e-05, 6.749072272319499e-05, 8.781563250096393e-05, 0.00011426141253772724, 0.00014867137004306603, 0.00019344392634026088, 0.0002516997901283655, 0.0003274994751669172, 0.0004261263236648159, 0.0005544547624925005, 0.0007214294601814526, 0.000938688782612345, 0.0012213760031100258, 0.0015891948094037057, 0.002067782677737912, 0.0026904978401970136, 0.0035007443993213955, 0.004554997653699184, 0.005926740503884541, 0.007711585311544345, 0.010033938212454078, 0.013055670395116691, 0.01698740074503987, 0.02210317627048227, 0.028759573555516536, 0.03742055263793628, 0.04868979566145066, 0.06335278435066323, 0.0824315491666629, 0.10725590623460621, 0.13955614735503497, 0.18158364372009145, 0.23626776957937787, 0.3074200836506151, 0.4 ], "xaxis": "x2", "y": [ 0.0, 0.02040816326530612, 0.04081632653061224, 0.061224489795918366, 0.08163265306122448, 0.1020408163265306, 0.12244897959183673, 0.14285714285714285, 0.16326530612244897, 0.18367346938775508, 0.2040816326530612, 0.22448979591836732, 0.24489795918367346, 0.26530612244897955, 0.2857142857142857, 0.3061224489795918, 0.32653061224489793, 0.3469387755102041, 0.36734693877551017, 0.3877551020408163, 0.4081632653061224, 0.42857142857142855, 0.44897959183673464, 0.4693877551020408, 0.4897959183673469, 0.5102040816326531, 0.5306122448979591, 0.5510204081632653, 0.5714285714285714, 0.5918367346938775, 0.6122448979591836, 0.6326530612244897, 0.6530612244897959, 0.673469387755102, 0.6938775510204082, 0.7142857142857142, 0.7346938775510203, 0.7551020408163265, 0.7755102040816326, 0.7959183673469387, 0.8163265306122448, 0.836734693877551, 0.8571428571428571, 0.8775510204081632, 0.8979591836734693, 0.9183673469387754, 0.9387755102040816, 0.9591836734693877, 0.9795918367346939, 1.0 ], "yaxis": "y2", "z": [ [ 0.16616579280222196, 0.15419678260829037, 0.13778381318246738, 0.11612642065465201, 0.08917994487704257, 0.058908208788919746, 0.03430146181969468, 0.03889662891470512, 0.0608912382778589, 0.0798410746402437, 0.09018344361809737, 0.09005679619347476, 0.07940336954289753, 0.06006428988899386, 0.03819823881268611, 0.032161850899199415, 0.04587930845669094, 0.05680072621377155, 0.05774019253569339, 0.04971290187917748, 0.037058554614387895, 0.027049668128693388, 0.024803810596464568, 0.026572036207063686, 0.028978690690982772, 0.028287417682252677, 0.0362666764613009, 0.05970478097199577, 0.08712184111981602, 0.11159217078324313, 0.13059707315154684, 0.14376826692676825, 0.1519009110098736, 0.15643011437574542, 0.15904201598234546, 0.16126310814800512, 0.16405401064685193, 0.1676004756775821, 0.17143381124508236, 0.1747556293893586, 0.17671944450892174, 0.17654216785711851, 0.1734760734994057, 0.1667305680386909, 0.15542346954596503, 0.1386249008618773, 0.1155676421216246, 0.08619651666814816, 0.05294460841006963, 0.031721798305761884 ], [ 0.1657539249202631, 0.1538880393529552, 0.1376226517564106, 0.11613326034834842, 0.0892995215497904, 0.05880540790243378, 0.03254396671214894, 0.03524647097213631, 0.057604624028526404, 0.07717125946577634, 0.08806544952874089, 0.08839893005912566, 0.07818024512575163, 0.05930395462515448, 0.03782954486703916, 0.03155712003576904, 0.04462347855571043, 0.05498689106718561, 0.05553406334993802, 0.04748608046941532, 0.03532825120906857, 0.026073654232830624, 0.02431107923616592, 0.026384299905904816, 0.0290925194527232, 0.028738387091103174, 0.03673968712872236, 0.059865805844641636, 0.08699309387983042, 0.1111871485214074, 0.12988934627090423, 0.14271134094315746, 0.15045644818691808, 0.15460489103403655, 0.1569222041600483, 0.15901943690427967, 0.16189786309507537, 0.16571124707821794, 0.169908182071767, 0.1736050932720634, 0.175899666370889, 0.17598646193132686, 0.17311864639753144, 0.16651831927655147, 0.15532038043324223, 0.13861361852214862, 0.11565295095604003, 0.08641973159274834, 0.05344166238864948, 0.03264694718046337 ], [ 0.16533797205120784, 0.15360711063540325, 0.13754182781881183, 0.11630456883887888, 0.08972253924698699, 0.05925938460025737, 0.031737230650018225, 0.03199598303442183, 0.054467131140609956, 0.07459264278338934, 0.08601711199827297, 0.0868215137613231, 0.07710719390711342, 0.05886586363043281, 0.038115003182301745, 0.031702635076070226, 0.043733259969778934, 0.053337205230956, 0.053422347339262856, 0.04540153717428303, 0.03395255225889917, 0.025711090651571497, 0.024511265124324756, 0.026979815221836716, 0.030100970072731683, 0.03035519211134414, 0.03830843963115773, 0.06069859987792854, 0.08724955354155645, 0.11099672184909239, 0.12928726122515896, 0.1416828183311485, 0.1489792291959057, 0.1526961897609857, 0.15468150227813834, 0.1566380024571302, 0.15961084326348868, 0.163715730758231, 0.16830742988309558, 0.17240872720569317, 0.17505867451144952, 0.17543096900539454, 0.1727835079577532, 0.16635654029822505, 0.15530981949856607, 0.1387633727739055, 0.11601818314864264, 0.08714778526421238, 0.05493225596994807, 0.03526476861949993 ], [ 0.16491200477116075, 0.15334638095325953, 0.1375306010883571, 0.11662327065665543, 0.09041861923205258, 0.06021353523542389, 0.03187994104113735, 0.029247070597340243, 0.051514507031043016, 0.07212309911542682, 0.08404095987755694, 0.08531255502859468, 0.07615554121542227, 0.05869145468303987, 0.03891643588199827, 0.03243961398494774, 0.043148349966508896, 0.0518254082130549, 0.05138733703792801, 0.043432603470798345, 0.03287277853360805, 0.025812839893681015, 0.0252034330010409, 0.028150817284464634, 0.031801743950454826, 0.032863967610315084, 0.040770166717970666, 0.06213659843993789, 0.08786755637990623, 0.11101120016964494, 0.1287865896724907, 0.14068046363902392, 0.14746692540959824, 0.15070013202277513, 0.15231406651651364, 0.15411215159362943, 0.1571875051089531, 0.1616109026383806, 0.166630732259787, 0.171166983338834, 0.17419735622097013, 0.1748765077013928, 0.1724711468938427, 0.16624519204226518, 0.15539087701810295, 0.1390715129187819, 0.11665632632086632, 0.08835900681373361, 0.057318005055402715, 0.039199096431536774 ], [ 0.16446957793344338, 0.1530974567170686, 0.137576944685793, 0.11706993481900584, 0.09135243986482973, 0.061596379198584975, 0.03288195101783199, 0.027122766108022684, 0.0487937094278989, 0.06978407100492362, 0.08213970130477816, 0.08385829862355858, 0.07529253032650361, 0.05871287457687962, 0.04007377121393653, 0.033576607420746446, 0.042795083600240896, 0.05042266838550003, 0.04941275999327951, 0.04155269544677071, 0.03201873080646149, 0.026207327125605195, 0.026174526027446778, 0.029677783564307024, 0.03397473184489051, 0.035972085241718084, 0.04388856900776121, 0.0640909319723978, 0.08881422628251913, 0.11121702917021604, 0.1283815347853682, 0.13970157816008952, 0.14591726864896942, 0.148613033667768, 0.14981414486521727, 0.15143525797362567, 0.1546225790383779, 0.15939413383528364, 0.16487774353808465, 0.1698807169090641, 0.173316854132872, 0.1743239830027226, 0.17218194367579706, 0.16618384924340535, 0.15556175891267704, 0.13953344802200737, 0.11755581016584565, 0.09001923616814077, 0.06046124445236431, 0.04404558234992096 ], [ 0.1640037719004001, 0.15285126277413943, 0.13766777979930803, 0.11762340040603123, 0.09248571281142737, 0.06332996119782369, 0.034595260634317046, 0.025755948443910666, 0.046364328284424855, 0.06760040732471408, 0.0803162044724702, 0.08244365507452056, 0.07448271058977649, 0.0588580846647652, 0.04142971809967409, 0.03492700813273623, 0.04259382953346038, 0.04909956086259194, 0.04748559106031517, 0.039738657984842815, 0.03131883759738518, 0.026734755875956296, 0.0272401734623794, 0.03137210881822153, 0.03642565502322702, 0.03943314256865495, 0.047444116182403136, 0.06646173457795633, 0.09004965727725414, 0.1115973183328216, 0.12806490098758597, 0.13874309696397302, 0.14432814977465505, 0.1464315065420685, 0.14717615556658145, 0.14860078139115523, 0.15191104807026684, 0.1570632844142669, 0.16304867484045504, 0.16855123659884264, 0.1724185919471853, 0.1737743985865829, 0.17191617971794523, 0.1661717174916631, 0.15581983356704002, 0.14014279332602195, 0.1187010612034955, 0.09208480819159148, 0.06421104083084835, 0.04947592683689035 ], [ 0.16350723763293934, 0.15259814524552165, 0.13778921911427133, 0.11826140118186466, 0.09377903698547961, 0.06533708691482334, 0.036856740359556085, 0.025259461461123067, 0.044297847570868645, 0.065599690750789, 0.07857341218934079, 0.08105268172381598, 0.0736893838423936, 0.0590555257658284, 0.04284530323232999, 0.03633095765923129, 0.042465980816514655, 0.047827987800258466, 0.045597702854634256, 0.03797404794870753, 0.030709504874772812, 0.027266806912004688, 0.02826094137494234, 0.03309137167712493, 0.0390024864645296, 0.043062668649927256, 0.05125613478334135, 0.06914805729146926, 0.09152934190424229, 0.11213248740749863, 0.12782830622450145, 0.13780170232673175, 0.14269772948862716, 0.1441525745963336, 0.14439477770826006, 0.14560233563053585, 0.14904823585675853, 0.15461680995405758, 0.16114438126253866, 0.16718035646950766, 0.1715042995038366, 0.17322886886122207, 0.1716740484078554, 0.16620765686316655, 0.15616169658484172, 0.14089156624249383, 0.12007320684334187, 0.09450591217747452, 0.06842268917887398, 0.055253774545123265 ], [ 0.16297224441850933, 0.152327977109749, 0.1379268078494668, 0.11896114986611661, 0.09519346336206783, 0.06754632837124759, 0.03951908631775147, 0.025684752103214414, 0.042673215705736484, 0.06381096116401634, 0.07691419631845203, 0.07966909764164591, 0.07287599826096886, 0.05923783005720221, 0.0442063257133127, 0.037662431126650506, 0.04233943136659634, 0.04658284966904362, 0.04374717681425256, 0.0362520100749075, 0.030141922239949336, 0.02771265239959207, 0.029142367133087925, 0.03473776900363224, 0.04159462539620369, 0.04672983549892365, 0.05518513125258639, 0.07205487173888626, 0.09320653694466838, 0.11280097936642819, 0.1276624262248897, 0.1368739505190709, 0.14102456056440232, 0.14177380570677858, 0.1414650556672694, 0.14243376601398658, 0.1460299084858756, 0.15205388250772092, 0.15916645622528566, 0.16577044873635585, 0.1705760365413912, 0.17268863027547826, 0.17145566759453373, 0.16629021132611238, 0.15658325075385485, 0.14177042028762404, 0.12165086407409947, 0.09722982072713052, 0.07296828089737138, 0.06121582845196025 ], [ 0.16239072907372953, 0.1520302632430325, 0.1380657527643554, 0.11969985231558636, 0.09669168085840299, 0.06989466851204382, 0.04246330529908648, 0.026995606311193767, 0.041567587110495, 0.062262821909913627, 0.07534116851296233, 0.07827681647665836, 0.07200740833018855, 0.059344415847010404, 0.045423905854453175, 0.03882785821073068, 0.042152180101868414, 0.0453433361647641, 0.041939094835284726, 0.03457742103698499, 0.029585754449046073, 0.028017122082131144, 0.02982872764234793, 0.03625050100663491, 0.04412561084231053, 0.05034392741163061, 0.05912671238796136, 0.07509703566340414, 0.09503433801307416, 0.1135799879994822, 0.12755725906044632, 0.13595640841382675, 0.13930772045987083, 0.13929346060939335, 0.13838251954033418, 0.13908923800798148, 0.14285239244938164, 0.14937452773949716, 0.15711733280042953, 0.16432449643970812, 0.16963621438325144, 0.1721550514316658, 0.17126109309967966, 0.16641764295442743, 0.1570797979816348, 0.1427689039612653, 0.12341094896498374, 0.1002036368118583, 0.0777402241736583, 0.06724959421838471 ], [ 0.1617543455686818, 0.15169424207216348, 0.13819113157626745, 0.12045513301341561, 0.09823880464528316, 0.0723282336706502, 0.045598303541450495, 0.029078432076288345, 0.041042803253333614, 0.06098103991725725, 0.07385647265737383, 0.07686048532567571, 0.07105095482780631, 0.05932305644186184, 0.046432240691960454, 0.03976163005220319, 0.0418542666879527, 0.044093774079947655, 0.04018562607879842, 0.032967956743506846, 0.02902992724466525, 0.028155873481363183, 0.030295982491515466, 0.037597584964373654, 0.04654507574354508, 0.05384266286397544, 0.06300380804091762, 0.07820086287515741, 0.09696733611974896, 0.11444615493550972, 0.12750239811976147, 0.1350457960280727, 0.13754695298152292, 0.13671066055041695, 0.1351433242786646, 0.13556333862765935, 0.13951271177413402, 0.1465797802171755, 0.15500039153898276, 0.16284614482689824, 0.16868761470207344, 0.17162964150663287, 0.1710903327761889, 0.16658796985738097, 0.15764613965977978, 0.1438757313894214, 0.1253294519758104, 0.10337639209375736, 0.0826506559371446, 0.07327654407632121 ], [ 0.16105451417615, 0.15130898156573763, 0.13828807758557446, 0.12120536414382212, 0.0998028013242472, 0.07480175578423763, 0.04885500498794031, 0.03177849447171876, 0.04113105484228754, 0.05998589997852413, 0.07246159009395538, 0.07540602234619381, 0.06997735202333989, 0.05913064323212828, 0.04718553849766344, 0.04042133485051004, 0.04140849844152399, 0.042824031344904534, 0.03850522259690393, 0.0314536489585793, 0.02848095698412251, 0.028130023137821016, 0.030545710910926793, 0.03876881704943084, 0.0488218886248781, 0.057183636576414745, 0.06675982338794614, 0.08130412820635212, 0.09896282128050601, 0.11537620132630191, 0.12748730229178934, 0.13413913092029534, 0.1357428173438682, 0.134025575476244, 0.13174441102765655, 0.13185119289651293, 0.13600874812548866, 0.14367185902746105, 0.15282007395356303, 0.16133974998818723, 0.16773340442865245, 0.1711140564720977, 0.1709433606154737, 0.16679900665970143, 0.15827668182866977, 0.14507905241469768, 0.12738213772022366, 0.10670048245439351, 0.08762904358303801, 0.07924088530329564 ], [ 0.16028246943943225, 0.15086346793000155, 0.1383419366986353, 0.12192989988370406, 0.10135461684691538, 0.0772773539541845, 0.0521796887291729, 0.0349360982871294, 0.04182530246497484, 0.05928970475055527, 0.07115718944505924, 0.07390115025198142, 0.06876139601400015, 0.05873339167241883, 0.04765508996956289, 0.040783796788350014, 0.04079044824124433, 0.04152952320356265, 0.03692076637475957, 0.030074372231941583, 0.02795919640847141, 0.027960980755760857, 0.030600132331797262, 0.039769979582637865, 0.050938756947042335, 0.06033835939751215, 0.0703533125910797, 0.08435520963483464, 0.10098156389249408, 0.11634747137488378, 0.12750155351663958, 0.1332338703053913, 0.13389684257798698, 0.13123963479869163, 0.12818369522554887, 0.12794859834811803, 0.13233942877033963, 0.1406543660275484, 0.15058200029889265, 0.15981042298811435, 0.16677714579917222, 0.1706101026064255, 0.17082013040056734, 0.1670484063444441, 0.1589655416284483, 0.14636671148380964, 0.12954514304519898, 0.11013252262215642, 0.09261932059993763, 0.08510233883975386 ], [ 0.15942930646438985, 0.1503466860375637, 0.13833839625365887, 0.12260922465024411, 0.1028680853279493, 0.07972307444459444, 0.05552852971138151, 0.038408237284405886, 0.04307882244237826, 0.058894866727047794, 0.06994304780222875, 0.07233592628919906, 0.0673825267336993, 0.058106710964856936, 0.04782682293097755, 0.04084212867944828, 0.03998810743698652, 0.040210895624445735, 0.03545661477685845, 0.028874677939854352, 0.02749328324611278, 0.027685364104036585, 0.030497675920159836, 0.040617930230653757, 0.05288805151169333, 0.06328812992479793, 0.07375402826528656, 0.08731185118492701, 0.10298824101022204, 0.11733837635431055, 0.12753509367982852, 0.13232804680732924, 0.132011684756949, 0.12835576293522988, 0.12446028743903169, 0.12385218159781695, 0.1285049487304342, 0.13753250909953516, 0.14829308962942273, 0.1582640674087484, 0.16582280048113926, 0.17011973680795442, 0.17072058841569296, 0.16733370229748334, 0.15970665180558943, 0.1477264868472333, 0.13179546145487497, 0.11363374361532534, 0.09757719041092468, 0.09083150053547163 ], [ 0.15848602526322358, 0.14974769125655618, 0.13826358694414687, 0.12322502869353791, 0.10431969522095814, 0.08211146993481136, 0.05886378332290131, 0.04207535319382688, 0.044813744485921916, 0.058792970293901965, 0.0688180595288128, 0.07070327120331255, 0.0658252874227801, 0.05723491033241135, 0.047699391193216215, 0.04060368084314816, 0.03900145229233248, 0.038873472936096415, 0.03413472121308013, 0.027895728686866367, 0.027113222533930774, 0.027349553206627207, 0.030288402048662746, 0.041336213723457006, 0.054668552826556485, 0.06602113262399086, 0.07694003207204887, 0.09013983595623173, 0.1049515873108268, 0.1183287374291648, 0.12757843486495105, 0.13142039391443266, 0.13009128388680233, 0.12537864186808895, 0.1205747548450701, 0.11955958251869592, 0.1245070353930382, 0.13431335265375938, 0.14596167925477027, 0.15670740788374649, 0.1648747266914274, 0.16964506325670053, 0.17064468475457015, 0.16765234946299234, 0.16049386045743935, 0.14914630395784273, 0.13411131339422436, 0.11717006054046718, 0.1024678263386165, 0.09640681461849933 ], [ 0.15744357309826756, 0.14905567292968577, 0.13810416061225084, 0.1237602267802249, 0.1056882792188909, 0.08441837066387016, 0.06215140155991719, 0.045839928453575714, 0.04693424915734061, 0.05896499044639587, 0.06778033437191226, 0.0689994995875309, 0.06407973119588595, 0.056110868352708294, 0.04728272936187061, 0.040088677037013985, 0.03784206649102827, 0.03752655213220407, 0.0329703682324008, 0.027165039304190765, 0.026842979152069898, 0.02700346600057694, 0.03002862185509967, 0.04195099700463551, 0.056282894346832514, 0.06853035451687683, 0.07989557632286648, 0.09281172165986314, 0.10684434768363069, 0.1193000328336291, 0.12762283903045565, 0.13051045740899278, 0.12814101652106236, 0.12231500277700005, 0.11652943389431628, 0.11506967376764245, 0.12034926644818741, 0.1310060972037787, 0.14359763962912062, 0.15514800686971772, 0.163937668228611, 0.16918832602828787, 0.17059238281805897, 0.16800176362648017, 0.16132102369530146, 0.15061441928046754, 0.13647241008088815, 0.12071192156119163, 0.10726400002852564, 0.10181255203886772 ], [ 0.15629288498500127, 0.14826001025293536, 0.13784734772262525, 0.12419893617374982, 0.10695468027935238, 0.08662190981692362, 0.06535969123232273, 0.04962251032060359, 0.04933929478100394, 0.05938259854284085, 0.06682737037080909, 0.06722485133787613, 0.06214182702697007, 0.05473575610804034, 0.04659696864934566, 0.03932931196927294, 0.036532860667783475, 0.0361826061715093, 0.031968427405630946, 0.02668623792542131, 0.026694004461191728, 0.026693464525709552, 0.02977429501208939, 0.04248732970957504, 0.05773556504332777, 0.0708120616823337, 0.08260953532060882, 0.0953057066675591, 0.10864309751319443, 0.1202355597146414, 0.12766046507692522, 0.129598689289657, 0.1261678391574345, 0.1191739481976813, 0.11232880826481877, 0.11038282670304858, 0.11603745551302608, 0.12762238891157457, 0.14121247937325157, 0.15359426660009845, 0.16301673439593675, 0.16875189734222584, 0.17056366665501665, 0.1683793579774729, 0.16218208944631612, 0.15211957281624203, 0.138860123538089, 0.12423402467474515, 0.11194459226274783, 0.10703742263821098 ], [ 0.15502492270796642, 0.14735032170934156, 0.13748099894584845, 0.12452642917415277, 0.10810143157819879, 0.08870180841176557, 0.06845865142602377, 0.05335774243840798, 0.05193182444542735, 0.060010258058407526, 0.06595627196227102, 0.06538401802913876, 0.0600139188526032, 0.053118881535316874, 0.04567160211873637, 0.038369069982495306, 0.03510782930562179, 0.034856425590795145, 0.031121205508978955, 0.026433672295250586, 0.02666130876264414, 0.026454933103625133, 0.029573286136781573, 0.04296591803227025, 0.05903139901792348, 0.0728646746788936, 0.08507422953032676, 0.09760464766051467, 0.11032798318355773, 0.12112052351854125, 0.12768448291470194, 0.12868652097859404, 0.12418041624121796, 0.11596730486575978, 0.10797997106444274, 0.10550123972519611, 0.11158012445924606, 0.12417665828102223, 0.13881943352738343, 0.15205541293228933, 0.1621173699008685, 0.16833826122644305, 0.1705585458761612, 0.16878257625880022, 0.16307117115675543, 0.1536511093901943, 0.14125757777778852, 0.12771496502757676, 0.11649341823393967, 0.11207359452962662 ], [ 0.1536307128774252, 0.14631650952149275, 0.13699361553275458, 0.12472907363263083, 0.1091124749207173, 0.0906388930245688, 0.07141971606247337, 0.05699117650678465, 0.05462391867578049, 0.060807692572190666, 0.06516397233311663, 0.06348664783203752, 0.05770529261925868, 0.05127770905186198, 0.044544785432919766, 0.03726197845715846, 0.03361166414821312, 0.033564189289802156, 0.030408625744923538, 0.026356791218794407, 0.02672312899635481, 0.026305868212846795, 0.0294573789721453, 0.04340072011185216, 0.060174516215006475, 0.07468794189243005, 0.08728453443974514, 0.09969522641018803, 0.11188242224906149, 0.12194206866119395, 0.12768915547292342, 0.12777641290363567, 0.12218922512584257, 0.11271000501229905, 0.10349319676982083, 0.10042935274715134, 0.10698908758440379, 0.12068648423367072, 0.13643352629193203, 0.15054145767752472, 0.16124531399153666, 0.16794999250060297, 0.17057705795653288, 0.16920892197481588, 0.16398261067279507, 0.15519907009896222, 0.14364967641515683, 0.13113685538988476, 0.12089830133710318, 0.11691598081971931 ], [ 0.15210138470714757, 0.14514880080307882, 0.1363743731206299, 0.12479427254229548, 0.10997293117385727, 0.09241480525001229, 0.07421571614176703, 0.0604769068530614, 0.05733878914404214, 0.06173231712994793, 0.06444741343953747, 0.06154779666729995, 0.055232906618447, 0.049238100684772274, 0.043262648432360606, 0.036071422366860485, 0.03209888138931968, 0.0323224257297882, 0.029800788165110455, 0.026390400742965822, 0.026844083667150773, 0.026243338226961788, 0.029436156502681058, 0.04379767378679899, 0.06116768865417212, 0.07628234455518024, 0.08923719997026952, 0.10156725299404204, 0.11329279156382895, 0.12268926388163695, 0.12766989059852912, 0.12687187787849102, 0.12020662866227066, 0.10942048979305843, 0.0988826570303756, 0.09517438351218575, 0.10228018061827572, 0.11717297504326586, 0.13407159750785344, 0.14906313605140745, 0.16040654833730267, 0.16758973112037337, 0.17061926783473735, 0.16965598329856355, 0.16491103003617077, 0.15675425627060297, 0.14602308104704814, 0.13448494702873676, 0.12515033965570352, 0.12156170598926704 ], [ 0.1504282083260241, 0.1438377872279327, 0.13561314336123564, 0.12471041137702492, 0.11066892794097756, 0.09401185855142595, 0.07682094550301065, 0.0637758616094006, 0.060010824504996875, 0.06274132937324185, 0.0638036383069026, 0.05958826994050301, 0.05262233751774894, 0.04703481517173932, 0.04187846732086306, 0.034868035791367234, 0.03063191771174482, 0.031146825233763307, 0.02926223189180074, 0.026465825640216746, 0.026980637192466735, 0.026244248643211367, 0.02949585437839375, 0.044154730965082295, 0.06201209771290076, 0.07764868614296655, 0.09093032909509101, 0.10321308956441347, 0.1145481228621829, 0.12335305458764324, 0.1276232654973703, 0.12597747609370138, 0.11824690430386754, 0.10612112195794134, 0.09416732552057155, 0.08974704057000718, 0.09747417712887035, 0.11366115026866828, 0.13175228011742665, 0.14763181616565504, 0.15960723348454225, 0.16726015208039463, 0.17068526481322735, 0.17012145348073646, 0.16585137232672242, 0.1583082688880543, 0.14836615306577905, 0.13774726720868785, 0.1292433207524589, 0.12600969597063308 ], [ 0.14860263455207498, 0.1423744651125948, 0.13470051738021366, 0.1244668195595239, 0.1111874838823732, 0.0954130014246795, 0.07921126217120547, 0.06685456833571736, 0.06258465765897256, 0.06379329911045958, 0.06322975845009658, 0.05763476714602832, 0.049908980416966744, 0.04471227716320021, 0.04045150554634788, 0.033726122644663535, 0.029277469864252174, 0.03005091252279823, 0.028756859176209904, 0.026520275295475407, 0.02708729669741534, 0.026270316605831873, 0.029604165586912114, 0.044463137050520074, 0.0627074282043757, 0.07878782843881842, 0.09236297935205312, 0.10462717903202645, 0.11563981870712327, 0.1239261930118823, 0.12754702680794003, 0.12509878000900265, 0.1163262169122595, 0.10283858479582823, 0.08937213024513811, 0.08416249857738761, 0.09259794542937597, 0.11018029701324807, 0.12949591410309524, 0.14625937806543268, 0.158853634119449, 0.16696393124069406, 0.17077515685999703, 0.1706031467154026, 0.16679893200457643, 0.15985352672923767, 0.15066886962390905, 0.14091428206318282, 0.1331732505633204, 0.1302603555254446 ], [ 0.14661633716302214, 0.14075027784708, 0.1336278346418731, 0.1240537504529022, 0.11151644546411948, 0.0966018522854503, 0.08136418881649565, 0.06968424954263264, 0.06501386696635407, 0.06484922310416186, 0.06272277392133982, 0.055719701634786775, 0.04713949897396738, 0.04232556693562374, 0.039045281501212496, 0.032718194878332614, 0.028100376785092404, 0.029044692555770486, 0.028252562553535376, 0.026503284098936746, 0.027122252639554922, 0.026275541831691146, 0.029718289717064614, 0.04470965516873773, 0.06325222298076924, 0.07970054108329074, 0.09353486086645224, 0.10580566474836418, 0.11656139701231245, 0.12440315536041588, 0.12744006961837587, 0.12424230804175207, 0.11446252114523796, 0.09960422973485626, 0.08452942528825255, 0.07844177213654208, 0.0876859079717589, 0.10676425869942355, 0.12732438134217106, 0.14495806076260434, 0.1581520338405714, 0.16670370761375777, 0.17088906250479233, 0.17109900955439752, 0.16774937545086932, 0.16138326654459537, 0.15292272249430514, 0.14397858871855648, 0.13693797045191242, 0.13431530879174514 ], [ 0.1444612588014414, 0.13895716263227695, 0.1323872203666389, 0.12346238267806173, 0.11164447007359964, 0.09756277905023683, 0.08325899542249862, 0.07224014584601397, 0.06725964048817235, 0.06587309961769958, 0.06227924329946409, 0.053880525777585744, 0.044373417292301286, 0.03994144261276538, 0.03772498960350018, 0.031907755668383934, 0.02715488713709409, 0.028133516830939898, 0.027724938505000758, 0.026380346867517262, 0.027051765584018374, 0.026213994155142206, 0.029793316337062444, 0.044879289621789685, 0.06364440487268788, 0.08038743383449613, 0.09444611121878346, 0.10674608949129927, 0.11730826908178733, 0.12478005351093045, 0.12730239878618832, 0.12341542671330669, 0.11267537885623473, 0.09645431491200882, 0.07968086235363422, 0.07261370799441368, 0.08278186569931587, 0.10345159467986291, 0.12526084600838508, 0.14374027706545414, 0.15750864067048237, 0.1664820428201173, 0.17102710060892876, 0.1716071280808883, 0.16869875258141903, 0.16289152848971553, 0.15512060674707326, 0.14693463753992828, 0.1405368428735601, 0.13817718668996437 ], [ 0.14212966176561978, 0.13698760351700984, 0.1309716342830589, 0.12268484439549567, 0.11156104894192748, 0.09828100374411898, 0.08487675892729075, 0.07450099826972112, 0.06928955425676753, 0.06683212194370315, 0.06189482387844142, 0.05215836308974357, 0.041684520117622574, 0.03763893415173986, 0.036553844077421925, 0.03134145237409475, 0.0264745592147302, 0.027317513167970077, 0.027159829267143137, 0.026134410993569234, 0.026853120931641793, 0.02604639762600081, 0.02978936211226513, 0.04495804782018654, 0.06388186562811421, 0.08084894294680062, 0.09509713229923034, 0.10744716432262569, 0.11787755392173488, 0.1250545472943737, 0.12713507583913525, 0.1226262218746704, 0.11098567793344324, 0.09343005172600911, 0.07487973154837665, 0.06671795377046952, 0.07794122667511248, 0.10028552525445197, 0.1233293872934425, 0.1426183977673577, 0.15692948509523652, 0.16630137858069297, 0.17118937836392092, 0.17212573115101945, 0.1696435005197127, 0.16437312981222924, 0.1572567045723194, 0.1497784836047873, 0.1439704909267183, 0.14184944994697574 ], [ 0.1396141850737907, 0.13483469280115068, 0.1293749332343505, 0.12171426144899432, 0.11125656377316212, 0.0987427189788785, 0.08620040122617094, 0.07644864530631527, 0.07107651882515673, 0.0676966018940504, 0.06156372564461645, 0.050595762746233224, 0.039161303419004645, 0.03550858966001812, 0.03558831200114817, 0.031042742072559776, 0.026064726789249367, 0.026591889695212534, 0.026554656151197144, 0.025765862167760174, 0.026516263875760216, 0.025744938856544084, 0.029676866701084492, 0.04493536365748162, 0.06396302569947708, 0.08108534619045309, 0.0954884780372454, 0.10790860001302956, 0.11826793014550983, 0.12522576200657914, 0.12694015455801042, 0.12188334079540405, 0.109415242142545, 0.0905773483510978, 0.07019377958534709, 0.060809485868060384, 0.07323360032248602, 0.0973135523743767, 0.12155451604238518, 0.14160450888598725, 0.1564203129800121, 0.16616399325513614, 0.1713759779375538, 0.17265319008999913, 0.17058044037293904, 0.16582362950433133, 0.15932636824140772, 0.15250756556054396, 0.14724058067292042, 0.14533623983879415 ], [ 0.13690790936758002, 0.13249220301407205, 0.12759195003469656, 0.12054482992064344, 0.11072237207817577, 0.09893520855923013, 0.08721471044911551, 0.07806770670463614, 0.07259790194944835, 0.06843972628738848, 0.06127814292164045, 0.049233489194299165, 0.03690505637751638, 0.03364886401272925, 0.03487260931424254, 0.031009335971921966, 0.025902742310998324, 0.02594821929830952, 0.02591856314389906, 0.025291354769732242, 0.026044308117036265, 0.025296382248262722, 0.02944005416017669, 0.04480592710733327, 0.0638872832135926, 0.08109678561135746, 0.09562078511534419, 0.10813099566747451, 0.11847952586882961, 0.12529421454754885, 0.12672060809206723, 0.1211958082489499, 0.10798632746358265, 0.08794611511985878, 0.06570834012259649, 0.054965620036220325, 0.0687455289072027, 0.0945866289542248, 0.11996057497725567, 0.14071014802930684, 0.15598647622975292, 0.16607195854770854, 0.17158694223437673, 0.17318801528561595, 0.17150676816714494, 0.16723928631075524, 0.1613260051123105, 0.1551205095852236, 0.1503496377810582, 0.1486422509898457 ], [ 0.13400443146452168, 0.129954671926273, 0.12561859101142672, 0.11917191365125675, 0.10995091770685701, 0.09884696880033375, 0.0879063521219236, 0.07934533683334036, 0.07383481632559578, 0.06903723262884448, 0.06102774105888902, 0.04810647564496665, 0.03502345861618177, 0.032157799494440045, 0.03443337888079674, 0.031215411556151016, 0.02594546846327865, 0.025376500777325443, 0.025271332545367342, 0.024741508375835827, 0.02545306852738441, 0.024703822523214746, 0.02907881388194739, 0.044570775646574, 0.06365529275906119, 0.0808832832305238, 0.09549474177826973, 0.10811578093309576, 0.11851384638583126, 0.12526175045595125, 0.1264802501514642, 0.1205728212096446, 0.10672100953593046, 0.08558898938412143, 0.061529220658085415, 0.049296847423375964, 0.06458274026495131, 0.0921577520804079, 0.1185710336855269, 0.13994602841821416, 0.15563282449966348, 0.1660270975770356, 0.1718222602690305, 0.17372885015885595, 0.17242004097442146, 0.16861701215301914, 0.16325296672201772, 0.15761695604348608, 0.15330089203539451, 0.15177262208827644 ], [ 0.13089795071242702, 0.12721750345067298, 0.12345195490277804, 0.11759216759740831, 0.10893586480419135, 0.09846783052571756, 0.08826387751279541, 0.08027103768268543, 0.0747715559228129, 0.06946707128874921, 0.060799278933044425, 0.04723939659931852, 0.03361762108240408, 0.031118973394409787, 0.0342758764476237, 0.03161763890535239, 0.026139612693675398, 0.024867527869211186, 0.02464096401691778, 0.024157240694344044, 0.0247696780719156, 0.023987347237900296, 0.02860922595147729, 0.04423758265761515, 0.06326904193767051, 0.08044474221252483, 0.09511109278058416, 0.1078652097484198, 0.11837373898091172, 0.12513149306496443, 0.126223652468484, 0.12002352829653377, 0.10564047901611655, 0.0835593660629809, 0.05778405594947362, 0.04396296243564063, 0.060870638175209074, 0.09007989480568468, 0.11740770389290985, 0.13932176136138447, 0.1553636015657728, 0.1660309455358679, 0.17208185266412646, 0.1742744630094446, 0.17331815921508878, 0.16995432271224586, 0.1651054433387138, 0.15999740648175018, 0.15609814472079447, 0.15473284142733357 ], [ 0.1275833697870595, 0.12427708789726721, 0.12109047623639622, 0.11580368849181, 0.10767225529495297, 0.09778908438284249, 0.08827773669132634, 0.08083652642149741, 0.07539516508768451, 0.06970910404326582, 0.06057643949529594, 0.046642654929851354, 0.03276267886060445, 0.0305836635143302, 0.0343828845688523, 0.03216279311204309, 0.026431350214549693, 0.024414994652448212, 0.02405985537049805, 0.02358444516859486, 0.024030267242907317, 0.023183635215156977, 0.028062766418531008, 0.04382013138074375, 0.06273172350529875, 0.0797809340619278, 0.09447068142404919, 0.10738240500974482, 0.11806339384866969, 0.12490780501926559, 0.1259560603269461, 0.11955680152069902, 0.10476427594940829, 0.08190870560685637, 0.054619748919448444, 0.03919421440026883, 0.057750861335455955, 0.08840328407753267, 0.11648991613985356, 0.13884558975096764, 0.15518235009807552, 0.16608471414632126, 0.17236555777908338, 0.17482373723555433, 0.17419934604889104, 0.1712492866162267, 0.16688236483525634, 0.16226308875280984, 0.15874565499848103, 0.15752866491913806 ], [ 0.1240564132771176, 0.12113094594036178, 0.11853409702630324, 0.11380619512522959, 0.10615669200467329, 0.09680361431938349, 0.08794030394647713, 0.08103565584082634, 0.0756951275004261, 0.06974487418186658, 0.060339920735550806, 0.04630974931429656, 0.03248702378893363, 0.030555548566420794, 0.03471681991602887, 0.03279474420404552, 0.026773096731520542, 0.02401682949198924, 0.02355982456219018, 0.02306702296548892, 0.02327665143201947, 0.02234415632230595, 0.027483987201409026, 0.043337010300011164, 0.06204743133931223, 0.07889148048468984, 0.09357453251443701, 0.10667145478933084, 0.11758837966636326, 0.12459626142989351, 0.12568330753333246, 0.11918100904947333, 0.10410950868734613, 0.08068324441848018, 0.052192668263893335, 0.03530912073489246, 0.05537115828462909, 0.08717218257374071, 0.11583371320545716, 0.13852414611667999, 0.15509182850526054, 0.16618926104225218, 0.1726731189526739, 0.175375660413655, 0.17506212468780857, 0.1725004744080433, 0.1685833083625344, 0.1644158382505708, 0.1612480422107245, 0.16016604475095564 ], [ 0.12031376841880381, 0.11777790195425972, 0.11578447164001447, 0.11160124166545418, 0.10438755168616594, 0.09550604608406246, 0.08724592349544814, 0.08086438865154921, 0.0756631656045811, 0.06955747178326431, 0.06006781165755548, 0.046216811154420265, 0.032760232866488256, 0.030986039337863956, 0.03522444528673337, 0.03345953396471856, 0.027126831651474413, 0.02367540484562389, 0.023166780702115874, 0.02263926707603614, 0.022552032700392508, 0.0215312534721414, 0.026926291979374295, 0.042809631472367604, 0.061220737396367575, 0.07777584601738581, 0.09242398290175331, 0.10573756182666136, 0.11695571180130733, 0.12420363297791373, 0.1254117317522982, 0.1189037984146684, 0.10369011458295974, 0.07992043620289406, 0.05064895741763833, 0.032699611813727325, 0.05386681308317071, 0.08642151613769765, 0.11545112513485327, 0.13836224867783717, 0.15509394322324538, 0.1663450650840243, 0.17300417330109708, 0.17592931269874376, 0.17590529437460825, 0.173706908236173, 0.17020841301949038, 0.16645799343882628, 0.16361020167592197, 0.16265106723235348 ], [ 0.11635325383155652, 0.1142182942332752, 0.11284521105692621, 0.10919246877154876, 0.10236523462879207, 0.09389291975616225, 0.086190984111738, 0.08032082897549302, 0.07529314475831386, 0.06913150911767874, 0.0597362477990292, 0.04632456409844397, 0.033497963199389996, 0.031783665768916, 0.03584286049284604, 0.034108293373135465, 0.02746446598202866, 0.023396452726088535, 0.022896345393435782, 0.02232026129349762, 0.02189593220392932, 0.020811213518796775, 0.026445493013569958, 0.04225977521450904, 0.0602562317940494, 0.07643336382993286, 0.09102086907915478, 0.10458724889376395, 0.11617395035336704, 0.1237378762926961, 0.12514809066689245, 0.11873189970157452, 0.10351622542550376, 0.07964564610832674, 0.05009667797629892, 0.031733508902385146, 0.05333581472634387, 0.08617384697715179, 0.11534959227268961, 0.1383627475144385, 0.1551896993016198, 0.166552208436026, 0.1733582424569802, 0.17648385496920915, 0.1767279056799549, 0.17486801299980362, 0.1717583015132964, 0.1683923040569872, 0.16583723200952677, 0.1649898986590705 ], [ 0.11217402430846658, 0.11045423227163474, 0.10972217452541495, 0.10658589885084664, 0.10009246031901566, 0.09196289792558847, 0.08477403268705866, 0.07940531694176463, 0.07458108010284971, 0.06845321537287828, 0.05932031489381878, 0.04658228785337442, 0.03458142109256704, 0.03283270788431157, 0.03650538485561465, 0.034698431626933465, 0.0277662074828459, 0.023186720300219527, 0.022751577277658457, 0.0221127002379982, 0.021338965923440194, 0.020243953098009887, 0.026091334202242834, 0.04170700020911074, 0.05915812610476069, 0.07486332193579662, 0.08936778419923407, 0.1032286232429483, 0.11525332414182851, 0.12320812792262573, 0.12489947896991986, 0.11867095764882764, 0.10359369764282746, 0.07986971008968582, 0.05057905649046153, 0.032577219027659816, 0.05381596615666694, 0.08643724567202515, 0.11553159419884924, 0.13852643044495414, 0.1553791714262479, 0.1668103660214565, 0.17373472556533576, 0.17703851709663346, 0.1775292356800525, 0.17598356950666327, 0.17323400865995256, 0.17022185057133865, 0.1679343723697891, 0.16718873822611885 ], [ 0.10777682301152346, 0.10648991508356333, 0.10642381888553548, 0.10379028362467294, 0.09757462197755153, 0.08971702469664325, 0.08299593919780085, 0.07812059556779541, 0.07352524838391492, 0.06751065713601329, 0.05879515282983809, 0.046932890150639776, 0.035880639184247644, 0.034012345372978925, 0.037146417412549294, 0.03519376959022689, 0.028017948890446127, 0.02305065957204119, 0.022723153653940436, 0.022005504043307984, 0.02089857978948449, 0.01987069973402986, 0.025898175194655284, 0.04116638935021434, 0.05793002777827989, 0.07306514046767408, 0.08746842002535503, 0.10167170356495729, 0.11420587525400107, 0.12262469719869742, 0.12467324577432007, 0.11872540023307021, 0.10392385459989546, 0.08058787968423807, 0.05206239534398354, 0.035088438012815436, 0.05527496686728383, 0.08720450294586224, 0.11599452397473951, 0.138851994637677, 0.15566149664700457, 0.16711880272267451, 0.17413289477320296, 0.1775925866710822, 0.17830876348878685, 0.17705367005166237, 0.1746369164776837, 0.1719499736086209, 0.16990694830851658, 0.16925377717918338 ], [ 0.10316429742731097, 0.10233202999779596, 0.10296161857886461, 0.1008175141440512, 0.09482021693593821, 0.0871590558012091, 0.08086012964573064, 0.07647206369163959, 0.07212641233513015, 0.06629409166736823, 0.05813720804365158, 0.04731810249760052, 0.03727261191583162, 0.03521043532958882, 0.03770497157560683, 0.0355642502489829, 0.02820866552720827, 0.022986770847902602, 0.022791599021170995, 0.02197838326214143, 0.02057713122940904, 0.019703949071506147, 0.02587752319603971, 0.040647153792819884, 0.056574989332071356, 0.0710386732970083, 0.0853280131085265, 0.09992881251938028, 0.11304561678594859, 0.12199905229974391, 0.12447691168016475, 0.11889834927192955, 0.10450346708819452, 0.08178039128758383, 0.054445905454343, 0.03890970025692128, 0.05761905793859082, 0.08845385407536023, 0.11673082128440457, 0.13933608575049283, 0.15603488911821856, 0.1674763784316859, 0.1745518933639779, 0.1781453984589675, 0.179066146534925, 0.1780786767002513, 0.17596869556148179, 0.17358021225843484, 0.17176032512664316, 0.1711911635139244 ], [ 0.09834140315611872, 0.09799025919275402, 0.09935057253968328, 0.09768310532832863, 0.09184137494936001, 0.08429588769217132, 0.07837291019544317, 0.07446813550233776, 0.07038817268817132, 0.06479646468625863, 0.05732559097411826, 0.04768306543945795, 0.03865159019044484, 0.03633087949428983, 0.038127028935802304, 0.03578570247736644, 0.028328736810355526, 0.022984724459792567, 0.02293083846315718, 0.022006863415993293, 0.02036323547136777, 0.019725556816742797, 0.026016798972338495, 0.040152515594873615, 0.055095920116759414, 0.06878467037564165, 0.0829539193490897, 0.09801503661493748, 0.11178869383774827, 0.12134379292335913, 0.12431808449044973, 0.11919157602042946, 0.10532497190357563, 0.0834145232773398, 0.05758746559948083, 0.043647200226103154, 0.06071531410664059, 0.09015105490097669, 0.1177283496237054, 0.13997340196243024, 0.1564966761775012, 0.16788156078829503, 0.17499073659896616, 0.17869632481534498, 0.1798011978972342, 0.1790591824576292, 0.17723125238806775, 0.175116250262617, 0.173499867807525, 0.17300697162722997 ], [ 0.09331593169844705, 0.09347793247805757, 0.09560981744424894, 0.09440676852885804, 0.08865451280283095, 0.08113812490922409, 0.07554391642359838, 0.07212073749009515, 0.0683174738192996, 0.06301407434529566, 0.05634351393132711, 0.047979953649777654, 0.0399330991759844, 0.03729632074594442, 0.038367065011112436, 0.03583996280168151, 0.02836988847466062, 0.023025761690628373, 0.023112371174001594, 0.022066640704870442, 0.020236044843927995, 0.019894567103426103, 0.02628580972026578, 0.039681025490698914, 0.05349642492769034, 0.06630544288756055, 0.08035634766766167, 0.09594875247335238, 0.11045353461935115, 0.12067260224070477, 0.1242043724636576, 0.11960550190859393, 0.10637690227980823, 0.08544768391689256, 0.0613318673672574, 0.0489761637101264, 0.06441664399789879, 0.09225237620309956, 0.11897097715313845, 0.14075685613589675, 0.15704335416015883, 0.1683324451874171, 0.1754483152412064, 0.17924476721729365, 0.18051386493914123, 0.17999597542093787, 0.17842668217965307, 0.17656186922472336, 0.17513090673875256, 0.1747071763997402 ], [ 0.08809921765882946, 0.08881288086141491, 0.09176336939260575, 0.09101308559731024, 0.08528115079458105, 0.07770084232359194, 0.07238673878680218, 0.06944598939616385, 0.06592530560210895, 0.060947440245497836, 0.05517981027111721, 0.048170622283137274, 0.041054347956059195, 0.038048354187502915, 0.0383891336566986, 0.03571551630819707, 0.028326980611310688, 0.023088148291656802, 0.023309507702154963, 0.022136615601342686, 0.02017095417528965, 0.020160529769322547, 0.026646996722383593, 0.039229140896490905, 0.051782108969487095, 0.0636057848051165, 0.07754929238183551, 0.09375221345800921, 0.1090609746870047, 0.12000017039070697, 0.12414329405919015, 0.1201392417672409, 0.10764448289264307, 0.08783092467855953, 0.0655315305407525, 0.05466036573891448, 0.06858092692609746, 0.09470796507491132, 0.1204393028231661, 0.14167778598270214, 0.15767066153882361, 0.16882678140538435, 0.1759234016536404, 0.1797901490314286, 0.18120420942014578, 0.1808900059436278, 0.1795572269470596, 0.17792090807275665, 0.17665870854420537, 0.17629763125001233 ], [ 0.08270711194198099, 0.08401856794468011, 0.08784101625561187, 0.08753229463510077, 0.081748933973558, 0.07400462513234439, 0.06891980320994773, 0.0664651400225163, 0.0632276694654692, 0.05860244388921759, 0.053830564331033316, 0.04822844978373189, 0.041973126440675544, 0.038546854094204594, 0.03816785241711601, 0.03540871557476391, 0.028201299880023626, 0.023154889086800357, 0.023501303131692033, 0.02220049868022842, 0.02014501280415785, 0.020477108555074362, 0.027065799023924343, 0.038794626767666374, 0.04996236935713161, 0.060694226297190526, 0.07455171538617526, 0.09145218202268232, 0.1076343329975167, 0.11934208180437067, 0.12414218339232957, 0.12079068440929594, 0.10911032969488958, 0.09051231901468887, 0.07005726407312253, 0.06053553897875654, 0.07308170254280678, 0.09746506962274197, 0.12211146140667062, 0.1427261998209175, 0.15837366634502775, 0.16936200599912776, 0.17641465828842068, 0.18033190957797599, 0.18187238920377274, 0.18174235678687928, 0.18062523833416172, 0.17919722809512906, 0.17808845143829544, 0.17778404975105297 ], [ 0.0771613586310869, 0.07912560666525033, 0.08387937709552255, 0.0840011876999051, 0.07809290578411189, 0.0700770090026972, 0.0651676309301618, 0.06320586607463985, 0.060246915862633796, 0.05599184981152424, 0.05230090905181147, 0.048139614821357174, 0.042666399061358766, 0.03876934221161838, 0.03768957705877362, 0.0349255741047608, 0.028004658553579954, 0.02322102573847675, 0.02367600565823556, 0.02224739028471617, 0.020141047056388296, 0.020812794249141963, 0.027519074283458202, 0.038380225255850456, 0.04805268232240059, 0.05758473294937267, 0.07138904266483755, 0.08908057918335768, 0.10619941397979124, 0.11871465931847366, 0.12420809107183425, 0.12155660352111633, 0.11075519215744208, 0.0934398205074444, 0.07480144683206662, 0.06648807827456764, 0.07781200230897851, 0.10047077913877611, 0.1239639430646152, 0.14389104444974118, 0.15914686440578082, 0.1699352794803636, 0.17692064831918006, 0.18086949950735334, 0.18251864163134712, 0.18255421619015044, 0.18163314489341714, 0.18039468294525415, 0.17942520458849986, 0.17917199044216547 ], [ 0.07149159790576497, 0.07417380702623881, 0.07992312660080704, 0.08046409860839443, 0.07435707790660237, 0.0659545008909834, 0.06116267557980497, 0.05970409872465587, 0.057013620317492686, 0.05313738192239039, 0.0506070683927002, 0.047904018752415435, 0.04312914609581453, 0.03871086372937441, 0.03695402303883191, 0.034284094068390766, 0.02776351062594895, 0.02329941611976479, 0.02383397296301646, 0.022272211429969425, 0.020150607144198564, 0.02115785393100724, 0.02800068051920358, 0.03799704786202493, 0.04607738624298038, 0.054299028198948426, 0.06809505163255075, 0.08667510107177594, 0.10478440583194802, 0.11813475951555345, 0.12434768072773797, 0.12243279063209715, 0.11255868142131384, 0.09656342191174049, 0.07967698531103948, 0.07243850977510721, 0.08268406995619393, 0.10367411570481803, 0.1259723728536065, 0.14516048180307178, 0.15998428472703716, 0.17054352716455295, 0.17743984811543975, 0.1814023774637463, 0.18314326858714314, 0.18332685375976743, 0.1825834234343677, 0.18151709307573202, 0.18067391103389166, 0.1804668445050002 ], [ 0.06573835763925878, 0.0692149395086141, 0.0760263397669188, 0.07697391580028431, 0.07059631453290673, 0.06168544185312923, 0.05694805522991886, 0.05600662492724065, 0.053569254224804345, 0.05007262578019398, 0.04877872201970766, 0.04753598850767258, 0.043373615946962187, 0.03838458421705027, 0.0359765899329897, 0.03351704420555945, 0.027522242128106146, 0.023424236458071856, 0.023990020018749482, 0.02227722470908651, 0.020176827560256235, 0.021527834965326863, 0.028524036379128637, 0.037667200144652545, 0.044072930350829764, 0.050869813603901734, 0.0647142265900255, 0.08427972146690489, 0.10341964281927704, 0.11761951615665049, 0.12456712230758146, 0.12341420152636828, 0.11449993968962982, 0.09983660655457152, 0.08461454090790164, 0.07833031726421853, 0.0876271966584963, 0.10702746486821021, 0.1281122098841496, 0.14652216218798228, 0.16087959836974353, 0.1711834825431221, 0.1779706612192753, 0.1819300079744156, 0.18374662324321467, 0.1840615990493712, 0.18347857410189375, 0.18256822412023424, 0.18183937375911186, 0.18167382600374316 ], [ 0.059957624185115084, 0.06431641396935063, 0.07225382696065583, 0.0735929790648867, 0.06687847675237042, 0.05733407067341706, 0.05258168544727341, 0.05217481953672159, 0.04997002879986007, 0.04684715795790042, 0.04686172327771965, 0.04706478763903811, 0.043428932408183796, 0.0378231748309025, 0.034791649763576994, 0.03267499069705474, 0.027344583174954865, 0.023651273223282403, 0.02417500912290528, 0.0222755679424116, 0.020238236966847192, 0.021963844063639305, 0.02912168645447073, 0.037425189096627225, 0.0420914563823168, 0.04734529425976561, 0.061304625973867384, 0.0819449576532568, 0.10213719998892082, 0.11718603201808034, 0.12487198406086887, 0.12449510779019736, 0.11655822066529388, 0.10321718734652836, 0.08955941355153119, 0.08412270130358922, 0.09258501009113233, 0.1104874277945497, 0.13035934135437008, 0.1479634837950304, 0.16182622736798277, 0.17185173202562462, 0.178511433459441, 0.18245186047382075, 0.18432909844113132, 0.1847598226876622, 0.18432109885761458, 0.18355176879114246, 0.18292624456711562, 0.18279796441652513 ], [ 0.054227928866598836, 0.05956599525775093, 0.06868217858684932, 0.07039359776743764, 0.06328660939458827, 0.052986218091121716, 0.04814259047344816, 0.048289972958306615, 0.046292424901054695, 0.04353244216008362, 0.04492105412200337, 0.04653482853074213, 0.04334084815253206, 0.037080901956217285, 0.033457001497823116, 0.03182910384107153, 0.027311775534954525, 0.024053805353532604, 0.02443620093893851, 0.02229641440428063, 0.020372951670842767, 0.02252912033669493, 0.029841884085520996, 0.03731767688441573, 0.04020431451483763, 0.04379555099852953, 0.05794118786381849, 0.07972772780230676, 0.10097029430819537, 0.11685102383304918, 0.12526712595935668, 0.12566924612280456, 0.11871336511684334, 0.10666767115734584, 0.09446869610708232, 0.08978590396384405, 0.09751287009283353, 0.11401521833718152, 0.1326905608471319, 0.14947183047140905, 0.16281745059513986, 0.17254475994174007, 0.17906046882721904, 0.18296740934828715, 0.18489111664253932, 0.18542291989610127, 0.18511348305535863, 0.18447133190482978, 0.18393901543164531, 0.18384409920916348 ], [ 0.048661310997831726, 0.05507733811289846, 0.06540000399546725, 0.06745776056118592, 0.05992063687383493, 0.04875695137072155, 0.04374046269956105, 0.04446066710756357, 0.04264095502430033, 0.04023004602555718, 0.04304356051139148, 0.04600531554001341, 0.04317128391335265, 0.03623605440984089, 0.03205939774367597, 0.031072705673360176, 0.027516135047304977, 0.024713202351159935, 0.024835582899707165, 0.022390051150674738, 0.020641098252156112, 0.023301034819166476, 0.030742364034555308, 0.03740119466711568, 0.038504563564430556, 0.040321280419177694, 0.05471910842041159, 0.0776905819667748, 0.09995247867355939, 0.1166304301178778, 0.1257565980189949, 0.12692995939521123, 0.12094616778193727, 0.1101552871219438, 0.09930889465804253, 0.09529814731712094, 0.10237561927428603, 0.11757673192875757, 0.13508393156818074, 0.15103478218070965, 0.1638465039487782, 0.17325899277457532, 0.17961604574051632, 0.18347613486983336, 0.18543312136051304, 0.18605229623108613, 0.18585817981953953, 0.18533041818508705, 0.1848820120429376, 0.18481687622382417 ], [ 0.04341963297063328, 0.05099519560650555, 0.06250655156135376, 0.06487542511828569, 0.05689751669827447, 0.044799766656831684, 0.03952948277876035, 0.04083214234308664, 0.03915825532890815, 0.037082183927981974, 0.04133936800860967, 0.04554887296472591, 0.04299712049678283, 0.035392779601058695, 0.030720155004588384, 0.030519692229739923, 0.028049707146587947, 0.02570508635296134, 0.02544534197116322, 0.02263044912598603, 0.02112287789246743, 0.024358449934426145, 0.03188206820538197, 0.03773764003250707, 0.03710661302407123, 0.03706474732555528, 0.05175632892050739, 0.07590006879956639, 0.09911663577861372, 0.11653899696154739, 0.12634354750226284, 0.12827032502272684, 0.12323864085143327, 0.11365179680428862, 0.10405401949803564, 0.10064358264261739, 0.10714573664716441, 0.12114239643165918, 0.13751904308734245, 0.15264029489394132, 0.16490667275250792, 0.17399084170856535, 0.18017643333688527, 0.18397752487668306, 0.18595556996863066, 0.18664935538083605, 0.1865575969531955, 0.18613242252937917, 0.18575938928860125, 0.185720745674553 ], [ 0.03873591449162407, 0.04749718785485572, 0.0601076592939468, 0.06274068385713681, 0.05434814751549664, 0.041314647404870966, 0.0357256456779676, 0.03759566150293578, 0.03603567801176456, 0.0342823589545185, 0.03993992705246612, 0.04524858509488633, 0.04290755721524109, 0.034680469013268475, 0.029597845320183683, 0.030297298999203113, 0.02899015253303061, 0.027085184115204722, 0.026340194874237575, 0.023112486049520306, 0.021910263093603888, 0.02576686023736515, 0.03331246216042399, 0.038387862698514505, 0.036140244265175356, 0.03422023050470083, 0.04919316856017612, 0.07442404339509068, 0.0984938071132276, 0.11658986170686016, 0.1270301392051741, 0.12968326783551928, 0.12557418509965518, 0.11713317662132476, 0.10868408201266999, 0.10581087922506383, 0.11180185872149263, 0.12468689102733807, 0.13997717481183525, 0.15427684869653616, 0.1659913748212651, 0.17473674270857706, 0.18073990746047658, 0.18447107705250465, 0.18645892777412504, 0.18721548884610806, 0.1872140861201245, 0.18688062245300918, 0.18657512843665114, 0.18655996155921944 ], [ 0.03493199537226707, 0.044786036456422, 0.05830810220933501, 0.06114529145862344, 0.05240894273795188, 0.03854724028264106, 0.0326198702029338, 0.034991003319077535, 0.033517375401527445, 0.03207809679945179, 0.038989823230303436, 0.04519292897325028, 0.042999340985175924, 0.0342477864789125, 0.028881919157414206, 0.03053138859441333, 0.030388509747629404, 0.028881273474669674, 0.027587559622560227, 0.023941446254795815, 0.023092473164907642, 0.027567574264187607, 0.03507059628734711, 0.03940435122974397, 0.035736439295877186, 0.03203492874283896, 0.047185987013450136, 0.07332787054118282, 0.09811192542589703, 0.11679415805717151, 0.1278174929159206, 0.1311616561360559, 0.1279376827494829, 0.12057923670693835, 0.11318391802484118, 0.11079222502556325, 0.1163276066739274, 0.12818879549180578, 0.14244138146006202, 0.1559335645599057, 0.16709423316932182, 0.17549319349284845, 0.18130476604048504, 0.18495630165602348, 0.18694366323486622, 0.18775206733537808, 0.18782993406280504, 0.18757817245342168, 0.1873330358099153, 0.18733858231349165 ], [ 0.03240241070182173, 0.04306447147273203, 0.05720028567381024, 0.06016972843052475, 0.0512067623569844, 0.036764737415637315, 0.03056295598599466, 0.03328755966965755, 0.03188214763307267, 0.03074873107710675, 0.03863010641230789, 0.04546848474884011, 0.0433695060601969, 0.034248367803036694, 0.02876936911702439, 0.031325896351536764, 0.03226350276183469, 0.031093841638385744, 0.029238016149687893, 0.0252151446400437, 0.02473909445037737, 0.029775483286867546, 0.037175576752891404, 0.040824650524345, 0.03600551038910236, 0.03078235328724253, 0.04589158208276083, 0.07266975253366993, 0.09799455076355923, 0.11716066772310396, 0.12870564165370071, 0.13269838091463926, 0.13031552703762728, 0.12397321892706553, 0.11754226510164327, 0.11558259824026014, 0.12071065753655855, 0.1316302122561313, 0.14489651594091515, 0.15760029148158924, 0.16820913783049027, 0.1762567869129973, 0.1818693435973354, 0.1854327245566953, 0.18741024419685084, 0.1882604337087683, 0.18840735563453737, 0.18822810006125631, 0.18803674276092527, 0.18806047254724018 ], [ 0.03151416463710239, 0.042490756417460085, 0.05685103658990149, 0.05987316834094205, 0.0508387929470186, 0.03619619766157663, 0.029885148336476076, 0.03272842985797434, 0.031384960136243936, 0.030541019132484543, 0.038974604785047995, 0.046151134063308175, 0.0441060943258819, 0.03481804244601698, 0.029422827628718888, 0.03274332364841782, 0.034603840822714914, 0.03370242963022397, 0.031319005141708614, 0.027003825562744575, 0.026887408969457332, 0.03238286742111455, 0.039628763983542065, 0.042667192014190586, 0.03701401535844491, 0.030692957555884175, 0.04544193238336675, 0.07249576803367898, 0.09815973227280399, 0.11769554269211943, 0.12969351348087602, 0.1342864191941738, 0.1326956028605337, 0.12730140071663573, 0.12175103449209486, 0.12017922118266122, 0.12494200584096521, 0.1349963883968793, 0.1473292039632309, 0.15926766656078714, 0.16933029668864064, 0.17702424040239712, 0.18243202465557468, 0.18589989043991767, 0.18785913502883408, 0.1887418973103749, 0.1889484884403951, 0.18883330336674758, 0.1886897067742995, 0.18872930571740246 ] ] }, { "hoverinfo": "text", "legendgroup": "In-sample", "marker": { "color": "black", "opacity": 0.5, "symbol": 1 }, "mode": "markers", "name": "In-sample", "text": [ "Arm 0_0
accuracy: 0.841833 (SEM: None)
lr: 2.6e-05
momentum: 0.58", "Arm 1_0
accuracy: 0.100333 (SEM: None)
lr: 0.00995509
momentum: 0.633423", "Arm 2_0
accuracy: 0.318667 (SEM: None)
lr: 5.18336e-06
momentum: 0.0228515", "Arm 3_0
accuracy: 0.4585 (SEM: None)
lr: 6.63497e-06
momentum: 0.176948", "Arm 4_0
accuracy: 0.926 (SEM: None)
lr: 8.15482e-05
momentum: 0.90883", "Arm 5_0
accuracy: 0.929 (SEM: None)
lr: 0.000302077
momentum: 0.341904", "Arm 6_0
accuracy: 0.92 (SEM: None)
lr: 0.000137311
momentum: 0.590917", "Arm 7_0
accuracy: 0.860167 (SEM: None)
lr: 1.03262e-05
momentum: 1", "Arm 8_0
accuracy: 0.888833 (SEM: None)
lr: 0.000246295
momentum: 0", "Arm 9_0
accuracy: 0.901667 (SEM: None)
lr: 0.000149439
momentum: 0.286357", "Arm 10_0
accuracy: 0.560333 (SEM: None)
lr: 1e-06
momentum: 1", "Arm 11_0
accuracy: 0.759333 (SEM: None)
lr: 3.7322e-05
momentum: 1", "Arm 12_0
accuracy: 0.947667 (SEM: None)
lr: 0.000261032
momentum: 0.913716", "Arm 13_0
accuracy: 0.942667 (SEM: None)
lr: 0.000171094
momentum: 0.802859", "Arm 14_0
accuracy: 0.843 (SEM: None)
lr: 0.000160806
momentum: 1", "Arm 15_0
accuracy: 0.9475 (SEM: None)
lr: 0.000312473
momentum: 0.667594", "Arm 16_0
accuracy: 0.741333 (SEM: None)
lr: 0.0008343
momentum: 0", "Arm 17_0
accuracy: 0.102667 (SEM: None)
lr: 0.000742777
momentum: 1", "Arm 18_0
accuracy: 0.936667 (SEM: None)
lr: 0.000234685
momentum: 0.66382", "Arm 19_0
accuracy: 0.101 (SEM: None)
lr: 0.4
momentum: 0", "Arm 20_0
accuracy: 0.897 (SEM: None)
lr: 6.41677e-05
momentum: 0.453937", "Arm 21_0
accuracy: 0.790333 (SEM: None)
lr: 4.72432e-05
momentum: 0", "Arm 22_0
accuracy: 0.830667 (SEM: None)
lr: 4.39148e-06
momentum: 1", "Arm 23_0
accuracy: 0.920333 (SEM: None)
lr: 8.39891e-05
momentum: 0.692917", "Arm 24_0
accuracy: 0.849 (SEM: None)
lr: 0.00041203
momentum: 0" ], "type": "scatter", "x": [ 2.6e-05, 0.00995509203921593, 5.183362665905935e-06, 6.6349677287433636e-06, 8.154817047148868e-05, 0.000302076728574865, 0.00013731096878444508, 1.0326238937471567e-05, 0.00024629478836000866, 0.00014943856257187694, 1e-06, 3.732202988785668e-05, 0.00026103181236379136, 0.00017109378370317222, 0.00016080621873396385, 0.00031247292498106337, 0.0008342998174998784, 0.0007427773432953057, 0.00023468478584700203, 0.4, 6.416773780473855e-05, 4.724316442615592e-05, 4.391476425396512e-06, 8.398908131651445e-05, 0.0004120296111885817 ], "xaxis": "x", "y": [ 0.58, 0.6334228515625, 0.022851496934890747, 0.1769482558593154, 0.9088304992765188, 0.34190391190350056, 0.5909173273841994, 1.0, 0.0, 0.2863569283143983, 1.0, 1.0, 0.9137159656656234, 0.8028585219046457, 1.0, 0.6675937225670816, 0.0, 1.0, 0.6638197948979379, 0.0, 0.4539369805349736, 0.0, 1.0, 0.6929170678181066, 0.0 ], "yaxis": "y" }, { "hoverinfo": "text", "legendgroup": "In-sample", "marker": { "color": "black", "opacity": 0.5, "symbol": 1 }, "mode": "markers", "name": "In-sample", "showlegend": false, "text": [ "Arm 0_0
accuracy: 0.841833 (SEM: None)
lr: 2.6e-05
momentum: 0.58", "Arm 1_0
accuracy: 0.100333 (SEM: None)
lr: 0.00995509
momentum: 0.633423", "Arm 2_0
accuracy: 0.318667 (SEM: None)
lr: 5.18336e-06
momentum: 0.0228515", "Arm 3_0
accuracy: 0.4585 (SEM: None)
lr: 6.63497e-06
momentum: 0.176948", "Arm 4_0
accuracy: 0.926 (SEM: None)
lr: 8.15482e-05
momentum: 0.90883", "Arm 5_0
accuracy: 0.929 (SEM: None)
lr: 0.000302077
momentum: 0.341904", "Arm 6_0
accuracy: 0.92 (SEM: None)
lr: 0.000137311
momentum: 0.590917", "Arm 7_0
accuracy: 0.860167 (SEM: None)
lr: 1.03262e-05
momentum: 1", "Arm 8_0
accuracy: 0.888833 (SEM: None)
lr: 0.000246295
momentum: 0", "Arm 9_0
accuracy: 0.901667 (SEM: None)
lr: 0.000149439
momentum: 0.286357", "Arm 10_0
accuracy: 0.560333 (SEM: None)
lr: 1e-06
momentum: 1", "Arm 11_0
accuracy: 0.759333 (SEM: None)
lr: 3.7322e-05
momentum: 1", "Arm 12_0
accuracy: 0.947667 (SEM: None)
lr: 0.000261032
momentum: 0.913716", "Arm 13_0
accuracy: 0.942667 (SEM: None)
lr: 0.000171094
momentum: 0.802859", "Arm 14_0
accuracy: 0.843 (SEM: None)
lr: 0.000160806
momentum: 1", "Arm 15_0
accuracy: 0.9475 (SEM: None)
lr: 0.000312473
momentum: 0.667594", "Arm 16_0
accuracy: 0.741333 (SEM: None)
lr: 0.0008343
momentum: 0", "Arm 17_0
accuracy: 0.102667 (SEM: None)
lr: 0.000742777
momentum: 1", "Arm 18_0
accuracy: 0.936667 (SEM: None)
lr: 0.000234685
momentum: 0.66382", "Arm 19_0
accuracy: 0.101 (SEM: None)
lr: 0.4
momentum: 0", "Arm 20_0
accuracy: 0.897 (SEM: None)
lr: 6.41677e-05
momentum: 0.453937", "Arm 21_0
accuracy: 0.790333 (SEM: None)
lr: 4.72432e-05
momentum: 0", "Arm 22_0
accuracy: 0.830667 (SEM: None)
lr: 4.39148e-06
momentum: 1", "Arm 23_0
accuracy: 0.920333 (SEM: None)
lr: 8.39891e-05
momentum: 0.692917", "Arm 24_0
accuracy: 0.849 (SEM: None)
lr: 0.00041203
momentum: 0" ], "type": "scatter", "x": [ 2.6e-05, 0.00995509203921593, 5.183362665905935e-06, 6.6349677287433636e-06, 8.154817047148868e-05, 0.000302076728574865, 0.00013731096878444508, 1.0326238937471567e-05, 0.00024629478836000866, 0.00014943856257187694, 1e-06, 3.732202988785668e-05, 0.00026103181236379136, 0.00017109378370317222, 0.00016080621873396385, 0.00031247292498106337, 0.0008342998174998784, 0.0007427773432953057, 0.00023468478584700203, 0.4, 6.416773780473855e-05, 4.724316442615592e-05, 4.391476425396512e-06, 8.398908131651445e-05, 0.0004120296111885817 ], "xaxis": "x2", "y": [ 0.58, 0.6334228515625, 0.022851496934890747, 0.1769482558593154, 0.9088304992765188, 0.34190391190350056, 0.5909173273841994, 1.0, 0.0, 0.2863569283143983, 1.0, 1.0, 0.9137159656656234, 0.8028585219046457, 1.0, 0.6675937225670816, 0.0, 1.0, 0.6638197948979379, 0.0, 0.4539369805349736, 0.0, 1.0, 0.6929170678181066, 0.0 ], "yaxis": "y2" } ], "layout": { "annotations": [ { "font": { "size": 14 }, "showarrow": false, "text": "Mean", "x": 0.25, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 14 }, "showarrow": false, "text": "Standard Error", "x": 0.8, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "bottom", "yref": "paper" } ], "autosize": false, "height": 450, "hovermode": "closest", "legend": { "orientation": "h", "x": 0, "y": -0.25 }, "margin": { "b": 100, "l": 35, "pad": 0, "r": 35, "t": 35 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "accuracy" }, "width": 950, "xaxis": { "anchor": "y", "autorange": false, "domain": [ 0.05, 0.45 ], "exponentformat": "e", "range": [ -6.0, -0.3979400086720376 ], "tickfont": { "size": 11 }, "tickmode": "auto", "title": { "text": "lr" }, "type": "log" }, "xaxis2": { "anchor": "y2", "autorange": false, "domain": [ 0.6, 1 ], "exponentformat": "e", "range": [ -6.0, -0.3979400086720376 ], "tickfont": { "size": 11 }, "tickmode": "auto", "title": { "text": "lr" }, "type": "log" }, "yaxis": { "anchor": "x", "autorange": false, "domain": [ 0, 1 ], "exponentformat": "e", "range": [ 0.0, 1.0 ], "tickfont": { "size": 11 }, "tickmode": "auto", "title": { "text": "momentum" }, "type": "linear" }, "yaxis2": { "anchor": "x2", "autorange": false, "domain": [ 0, 1 ], "exponentformat": "e", "range": [ 0.0, 1.0 ], "tickfont": { "size": 11 }, "tickmode": "auto", "type": "linear" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "render(ax_client.get_contour_plot(param_x=\"lr\", param_y=\"momentum\", metric_name=\"accuracy\"))" ] }, { "cell_type": "markdown", "id": "0b9e992b", "metadata": { "customInput": null, "originalKey": "5c91d83a-9a90-4ea0-8df9-9d242d998cb3", "papermill": { "duration": 0.057284, "end_time": "2023-12-09T18:44:01.467579", "exception": false, "start_time": "2023-12-09T18:44:01.410295", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "Here we plot the optimization trace, showing the progression of finding the point with the optimal objective:\n", "\n" ] }, { "cell_type": "code", "execution_count": 15, "id": "e46404af", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:01.584155Z", "iopub.status.busy": "2023-12-09T18:44:01.583605Z", "iopub.status.idle": "2023-12-09T18:44:01.634123Z", "shell.execute_reply": "2023-12-09T18:44:01.633388Z" }, "executionStartTime": 1690415953760, "executionStopTime": 1690415954260, "originalKey": "3a767bdf-7ef3-48e7-b853-6fae5e9e02ff", "papermill": { "duration": 0.114256, "end_time": "2023-12-09T18:44:01.638931", "exception": false, "start_time": "2023-12-09T18:44:01.524675", "status": "completed" }, "requestMsgId": "043de459-6a28-4796-b237-808385c9e54c", "showInput": true, "tags": [] }, "outputs": [ { "data": { "application/vnd.plotly.v1+json": { "config": { "linkText": "Export to plot.ly", "plotlyServerURL": "https://plot.ly", "showLink": false }, "data": [ { "hoverinfo": "none", "legendgroup": "", "line": { "width": 0 }, "mode": "lines", "showlegend": false, "type": "scatter", "x": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ], "y": [ 0.8418333333333333, 0.8418333333333333, 0.8418333333333333, 0.8418333333333333, 0.926, 0.929, 0.929, 0.929, 0.929, 0.929, 0.929, 0.929, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667 ] }, { "fill": "tonexty", "fillcolor": "rgba(128,177,211,0.3)", "legendgroup": "objective value", "line": { "color": "rgba(128,177,211,1)" }, "mode": "lines", "name": "objective value", "text": [ "
Parameterization:
lr: 2.6e-05
momentum: 0.58", "
Parameterization:
lr: 0.00995509203921593
momentum: 0.6334228515625", "
Parameterization:
lr: 5.183362665905935e-06
momentum: 0.022851496934890747", "
Parameterization:
lr: 6.6349677287433636e-06
momentum: 0.1769482558593154", "
Parameterization:
lr: 8.154817047148868e-05
momentum: 0.9088304992765188", "
Parameterization:
lr: 0.000302076728574865
momentum: 0.34190391190350056", "
Parameterization:
lr: 0.00013731096878444508
momentum: 0.5909173273841994", "
Parameterization:
lr: 1.0326238937471567e-05
momentum: 1.0", "
Parameterization:
lr: 0.00024629478836000866
momentum: 0.0", "
Parameterization:
lr: 0.00014943856257187694
momentum: 0.2863569283143983", "
Parameterization:
lr: 1e-06
momentum: 1.0", "
Parameterization:
lr: 3.732202988785668e-05
momentum: 1.0", "
Parameterization:
lr: 0.00026103181236379136
momentum: 0.9137159656656234", "
Parameterization:
lr: 0.00017109378370317222
momentum: 0.8028585219046457", "
Parameterization:
lr: 0.00016080621873396385
momentum: 1.0", "
Parameterization:
lr: 0.00031247292498106337
momentum: 0.6675937225670816", "
Parameterization:
lr: 0.0008342998174998784
momentum: 0.0", "
Parameterization:
lr: 0.0007427773432953057
momentum: 1.0", "
Parameterization:
lr: 0.00023468478584700203
momentum: 0.6638197948979379", "
Parameterization:
lr: 0.4
momentum: 0.0", "
Parameterization:
lr: 6.416773780473855e-05
momentum: 0.4539369805349736", "
Parameterization:
lr: 4.724316442615592e-05
momentum: 0.0", "
Parameterization:
lr: 4.391476425396512e-06
momentum: 1.0", "
Parameterization:
lr: 8.398908131651445e-05
momentum: 0.6929170678181066", "
Parameterization:
lr: 0.0004120296111885817
momentum: 0.0", "
Parameterization:
lr: 0.00023651776590154824
momentum: 0.5079281703970463" ], "type": "scatter", "x": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ], "y": [ 0.8418333333333333, 0.8418333333333333, 0.8418333333333333, 0.8418333333333333, 0.926, 0.929, 0.929, 0.929, 0.929, 0.929, 0.929, 0.929, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667 ] }, { "fill": "tonexty", "fillcolor": "rgba(128,177,211,0.3)", "hoverinfo": "none", "legendgroup": "", "line": { "width": 0 }, "mode": "lines", "showlegend": false, "type": "scatter", "x": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 ], "y": [ 0.8418333333333333, 0.8418333333333333, 0.8418333333333333, 0.8418333333333333, 0.926, 0.929, 0.929, 0.929, 0.929, 0.929, 0.929, 0.929, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667, 0.9476666666666667 ] }, { "line": { "color": "rgba(141,211,199,1)", "dash": "dash" }, "mode": "lines", "name": "model change", "type": "scatter", "x": [ 5, 5 ], "y": [ 0.8418333333333333, 0.9476666666666667 ] } ], "layout": { "showlegend": true, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ], "sequentialminus": [ [ 0.0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1.0, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "text": "Model performance vs. # of iterations" }, "xaxis": { "title": { "text": "Iteration" } }, "yaxis": { "title": { "text": "Accuracy" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "render(\n", " ax_client.get_optimization_trace()\n", ") " ] }, { "cell_type": "markdown", "id": "0a39cda1", "metadata": { "customInput": null, "executionStartTime": 1689617061294, "executionStopTime": 1689617061325, "originalKey": "09aaec9d-c178-42e2-b549-663cd17f8c3d", "papermill": { "duration": 0.060443, "end_time": "2023-12-09T18:44:01.760670", "exception": false, "start_time": "2023-12-09T18:44:01.700227", "status": "completed" }, "requestMsgId": "09aaec9d-c178-42e2-b549-663cd17f8c3d", "showInput": false, "tags": [] }, "source": [ "## 8. Train CNN with best hyperparameters and evaluate on test set\n", "Note that the resulting accuracy on the test set generally won't be the same as the maximum accuracy achieved on the evaluation set throughout optimization. " ] }, { "cell_type": "code", "execution_count": 16, "id": "b9804bd9", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:01.884190Z", "iopub.status.busy": "2023-12-09T18:44:01.883640Z", "iopub.status.idle": "2023-12-09T18:44:01.909109Z", "shell.execute_reply": "2023-12-09T18:44:01.907856Z" }, "executionStartTime": 1690415954397, "executionStopTime": 1690415954452, "originalKey": "27f92d16-93c4-43bb-a37f-e7a1aeecd856", "papermill": { "duration": 0.089506, "end_time": "2023-12-09T18:44:01.911417", "exception": false, "start_time": "2023-12-09T18:44:01.821911", "status": "completed" }, "requestMsgId": "07eba5ce-bebe-4588-8dbb-07553efeb2b0", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[WARNING 12-09 18:44:01] ax.service.utils.report_utils: Column reason missing for all trials. Not appending column.\n" ] }, { "data": { "text/plain": [ "{'lr': 0.00026103181236379136, 'momentum': 0.9137159656656234}" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = ax_client.get_trials_data_frame()\n", "best_arm_idx = df.trial_index[df[\"accuracy\"] == df[\"accuracy\"].max()].values[0]\n", "best_arm = ax_client.get_trial_parameters(best_arm_idx)\n", "best_arm" ] }, { "cell_type": "code", "execution_count": 17, "id": "baf43713", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:02.035333Z", "iopub.status.busy": "2023-12-09T18:44:02.034657Z", "iopub.status.idle": "2023-12-09T18:44:02.039352Z", "shell.execute_reply": "2023-12-09T18:44:02.038783Z" }, "executionStartTime": 1690415954677, "executionStopTime": 1690415954681, "originalKey": "d0c7c645-c230-4654-a3b5-a01c61a09393", "papermill": { "duration": 0.067912, "end_time": "2023-12-09T18:44:02.040686", "exception": false, "start_time": "2023-12-09T18:44:01.972774", "status": "completed" }, "requestMsgId": "0a962cef-65a1-4f95-9410-37a9a8e5c5ac", "showInput": true, "tags": [] }, "outputs": [], "source": [ "combined_train_valid_set = torch.utils.data.ConcatDataset(\n", " [\n", " train_loader.dataset.dataset,\n", " valid_loader.dataset.dataset,\n", " ]\n", ")\n", "combined_train_valid_loader = torch.utils.data.DataLoader(\n", " combined_train_valid_set,\n", " batch_size=BATCH_SIZE,\n", " shuffle=True,\n", ")" ] }, { "cell_type": "code", "execution_count": 18, "id": "a3837121", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:02.164539Z", "iopub.status.busy": "2023-12-09T18:44:02.163987Z", "iopub.status.idle": "2023-12-09T18:44:31.257140Z", "shell.execute_reply": "2023-12-09T18:44:31.256474Z" }, "executionStartTime": 1690415954791, "executionStopTime": 1690416061340, "originalKey": "5695c78b-4c6e-4d35-ab08-6c60781bd8f1", "papermill": { "duration": 29.157211, "end_time": "2023-12-09T18:44:31.259152", "exception": false, "start_time": "2023-12-09T18:44:02.101941", "status": "completed" }, "requestMsgId": "e22fa0c7-88cc-4d8a-bb7d-4f96fbae9a42", "showInput": true, "tags": [] }, "outputs": [], "source": [ "net = train(\n", " net=CNN(),\n", " train_loader=combined_train_valid_loader,\n", " parameters=best_arm,\n", " dtype=dtype,\n", " device=device,\n", ")\n", "test_accuracy = evaluate(\n", " net=net,\n", " data_loader=test_loader,\n", " dtype=dtype,\n", " device=device,\n", ")" ] }, { "cell_type": "code", "execution_count": 19, "id": "2e53b8d4", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:31.389704Z", "iopub.status.busy": "2023-12-09T18:44:31.389152Z", "iopub.status.idle": "2023-12-09T18:44:31.393555Z", "shell.execute_reply": "2023-12-09T18:44:31.392831Z" }, "executionStartTime": 1690416061460, "executionStopTime": 1690416061467, "originalKey": "7522e229-9641-4383-a892-12c3f0a8011c", "papermill": { "duration": 0.073453, "end_time": "2023-12-09T18:44:31.394984", "exception": false, "start_time": "2023-12-09T18:44:31.321531", "status": "completed" }, "requestMsgId": "5552d77d-9c9d-4712-9256-2cb3da836f2c", "showInput": true, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Classification Accuracy (test set): 98.28%\n" ] } ], "source": [ "print(f\"Classification Accuracy (test set): {round(test_accuracy*100, 2)}%\")" ] }, { "cell_type": "markdown", "id": "001446a5", "metadata": { "customInput": null, "originalKey": "c8232211-4837-4677-b86c-bce730635fff", "papermill": { "duration": 0.060997, "end_time": "2023-12-09T18:44:31.516963", "exception": false, "start_time": "2023-12-09T18:44:31.455966", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "## 9. Save / reload optimization to JSON / SQL\n", "We can serialize the state of optimization to JSON and save it to a `.json` file or save it to the SQL backend. For the former:" ] }, { "cell_type": "code", "execution_count": 20, "id": "aabc861d", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:31.640640Z", "iopub.status.busy": "2023-12-09T18:44:31.639949Z", "iopub.status.idle": "2023-12-09T18:44:31.668692Z", "shell.execute_reply": "2023-12-09T18:44:31.667761Z" }, "executionStartTime": 1690416061571, "executionStopTime": 1690416061657, "originalKey": "6afddb45-c980-4b14-b5e9-927747ea98ea", "papermill": { "duration": 0.095218, "end_time": "2023-12-09T18:44:31.673279", "exception": false, "start_time": "2023-12-09T18:44:31.578061", "status": "completed" }, "requestMsgId": "bab02be8-706c-4422-b97b-c222b5084bba", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:31] ax.service.ax_client: Saved JSON-serialized state of optimization to `ax_client_snapshot.json`.\n" ] } ], "source": [ "ax_client.save_to_json_file() # For custom filepath, pass `filepath` argument." ] }, { "cell_type": "code", "execution_count": 21, "id": "2b3c8551", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:31.798069Z", "iopub.status.busy": "2023-12-09T18:44:31.797427Z", "iopub.status.idle": "2023-12-09T18:44:31.918548Z", "shell.execute_reply": "2023-12-09T18:44:31.917913Z" }, "executionStartTime": 1690416061758, "executionStopTime": 1690416062132, "originalKey": "31e6f7b4-cf6b-4967-95ff-f76d03657fb2", "papermill": { "duration": 0.185299, "end_time": "2023-12-09T18:44:31.919993", "exception": false, "start_time": "2023-12-09T18:44:31.734694", "status": "completed" }, "requestMsgId": "f2d10848-f995-420d-88e7-9036894d7b1b", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "/tmp/tmp.bwZKabbZig/Ax-main/ax/core/data.py:203: FutureWarning:\n", "\n", "Passing literal json to 'read_json' is deprecated and will be removed in a future version. To read from a literal string, wrap it in a 'StringIO' object.\n", "\n", "[INFO 12-09 18:44:31] ax.service.ax_client: Starting optimization with verbose logging. To disable logging, set the `verbose_logging` argument to `False`. Note that float values in the logs are rounded to 6 decimal points.\n" ] } ], "source": [ "restored_ax_client = (\n", " AxClient.load_from_json_file()\n", ") # For custom filepath, pass `filepath` argument." ] }, { "cell_type": "markdown", "id": "e7eba4fe", "metadata": { "customInput": null, "originalKey": "122510f5-5b9e-4b1c-9f5e-8c8ea2e08848", "papermill": { "duration": 0.060498, "end_time": "2023-12-09T18:44:32.041986", "exception": false, "start_time": "2023-12-09T18:44:31.981488", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "To store state of optimization to an SQL backend, first follow [setup instructions](https://ax.dev/docs/storage.html#sql) on Ax website." ] }, { "cell_type": "markdown", "id": "92b10438", "metadata": { "customInput": null, "originalKey": "bd80e639-aa0f-4dc1-8542-0caf0d674fda", "papermill": { "duration": 0.060879, "end_time": "2023-12-09T18:44:32.163739", "exception": false, "start_time": "2023-12-09T18:44:32.102860", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "Having set up the SQL backend, pass `DBSettings` to `AxClient` on instantiation (note that `SQLAlchemy` dependency will have to be installed – for installation, refer to [optional dependencies](https://ax.dev/docs/installation.html#optional-dependencies) on Ax website):" ] }, { "cell_type": "code", "execution_count": 22, "id": "718e4964", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:32.287744Z", "iopub.status.busy": "2023-12-09T18:44:32.287095Z", "iopub.status.idle": "2023-12-09T18:44:32.297769Z", "shell.execute_reply": "2023-12-09T18:44:32.297221Z" }, "executionStartTime": 1690416062222, "executionStopTime": 1690416062314, "originalKey": "80eb6a2e-6564-405e-b5d4-d448e32dbf60", "papermill": { "duration": 0.074386, "end_time": "2023-12-09T18:44:32.299195", "exception": false, "start_time": "2023-12-09T18:44:32.224809", "status": "completed" }, "requestMsgId": "65f2307f-b800-4415-b9e7-11734a2a6889", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:32] ax.service.ax_client: Starting optimization with verbose logging. To disable logging, set the `verbose_logging` argument to `False`. Note that float values in the logs are rounded to 6 decimal points.\n" ] } ], "source": [ "from ax.storage.sqa_store.structs import DBSettings\n", "\n", "# URL is of the form \"dialect+driver://username:password@host:port/database\".\n", "db_settings = DBSettings(url=\"sqlite:///foo.db\")\n", "# Instead of URL, can provide a `creator function`; can specify custom encoders/decoders if necessary.\n", "new_ax = AxClient(db_settings=db_settings)" ] }, { "cell_type": "markdown", "id": "aebaaa88", "metadata": { "customInput": null, "originalKey": "adafd3aa-b84e-4e86-9694-a29f94c6d5f3", "papermill": { "duration": 0.066083, "end_time": "2023-12-09T18:44:32.427494", "exception": false, "start_time": "2023-12-09T18:44:32.361411", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "When valid `DBSettings` are passed into `AxClient`, a unique experiment name is a required argument (`name`) to `ax_client.create_experiment`. The **state of the optimization is auto-saved** any time it changes (i.e. a new trial is added or completed, etc). \n", "\n", "To reload an optimization state later, instantiate `AxClient` with the same `DBSettings` and use `ax_client.load_experiment_from_database(experiment_name=\"my_experiment\")`." ] }, { "cell_type": "markdown", "id": "204d27e8", "metadata": { "customInput": null, "originalKey": "2f4a875b-1e18-4352-955d-576d6b01c5ed", "papermill": { "duration": 0.062162, "end_time": "2023-12-09T18:44:32.551381", "exception": false, "start_time": "2023-12-09T18:44:32.489219", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "# Special Cases" ] }, { "cell_type": "markdown", "id": "8684a9d0", "metadata": { "customInput": null, "originalKey": "0d49e448-4768-401d-ac1d-810aee633c9a", "papermill": { "duration": 0.061155, "end_time": "2023-12-09T18:44:32.674355", "exception": false, "start_time": "2023-12-09T18:44:32.613200", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "**Evaluation failure**: should any optimization iterations fail during evaluation, `log_trial_failure` will ensure that the same trial is not proposed again." ] }, { "cell_type": "code", "execution_count": 23, "id": "f278fde7", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:32.800613Z", "iopub.status.busy": "2023-12-09T18:44:32.799970Z", "iopub.status.idle": "2023-12-09T18:44:33.808502Z", "shell.execute_reply": "2023-12-09T18:44:33.807812Z" }, "executionStartTime": 1690416062420, "executionStopTime": 1690416064316, "originalKey": "faa83f1d-31da-481a-96e4-ccbc12f30b91", "papermill": { "duration": 1.074956, "end_time": "2023-12-09T18:44:33.810008", "exception": false, "start_time": "2023-12-09T18:44:32.735052", "status": "completed" }, "requestMsgId": "80a40c3a-76ed-4e1d-aa77-3652fadbe69f", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:33] ax.service.ax_client: Generated new trial 26 with parameters {'lr': 0.000246, 'momentum': 0.77497}.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:33] ax.service.ax_client: Registered failure of trial 26.\n" ] } ], "source": [ "_, trial_index = ax_client.get_next_trial()\n", "ax_client.log_trial_failure(trial_index=trial_index)" ] }, { "cell_type": "markdown", "id": "e3ceda78", "metadata": { "customInput": null, "originalKey": "c826a96e-9431-49bd-87d7-62b517537a15", "papermill": { "duration": 0.06166, "end_time": "2023-12-09T18:44:33.933898", "exception": false, "start_time": "2023-12-09T18:44:33.872238", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "**Need to run many trials in parallel**: for optimal results and optimization efficiency, we strongly recommend sequential optimization (generating a few trials, then waiting for them to be completed with evaluation data). However, if your use case needs to dispatch many trials in parallel before they are updated with data and you are running into the *\"All trials for current model have been generated, but not enough data has been observed to fit next model\"* error, instantiate `AxClient` as `AxClient(enforce_sequential_optimization=False)`." ] }, { "cell_type": "markdown", "id": "eb410c9f", "metadata": { "customInput": null, "originalKey": "683378e0-893b-49a1-b090-084dc394da1a", "papermill": { "duration": 0.061297, "end_time": "2023-12-09T18:44:34.057165", "exception": false, "start_time": "2023-12-09T18:44:33.995868", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "# Service API Exceptions Meaning and Handling\n", "[**`DataRequiredError`**](https://ax.dev/api/exceptions.html#ax.exceptions.core.DataRequiredError): Ax generation strategy needs to be updated with more data to proceed to the next optimization model. When the optimization moves from initialization stage to the Bayesian optimization stage, the underlying BayesOpt model needs sufficient data to train. For optimal results and optimization efficiency (finding the optimal point in the least number of trials), we recommend sequential optimization (generating a few trials, then waiting for them to be completed with evaluation data). Therefore, the correct way to handle this exception is to wait until more trial evaluations complete and log their data via `ax_client.complete_trial(...)`. \n", "\n", "However, if there is strong need to generate more trials before more data is available, instantiate `AxClient` as `AxClient(enforce_sequential_optimization=False)`. With this setting, as many trials will be generated from the initialization stage as requested, and the optimization will move to the BayesOpt stage whenever enough trials are completed." ] }, { "cell_type": "markdown", "id": "c1e87369", "metadata": { "customInput": null, "originalKey": "4602d41d-43aa-46d2-9ca6-392c414d0b5f", "papermill": { "duration": 0.061365, "end_time": "2023-12-09T18:44:34.180173", "exception": false, "start_time": "2023-12-09T18:44:34.118808", "status": "completed" }, "showInput": false, "tags": [] }, "source": [ "[**`MaxParallelismReachedException`**](https://ax.dev/api/modelbridge.html#ax.modelbridge.generation_strategy.MaxParallelismReachedException): generation strategy restricts the number of trials that can be run simultaneously (to encourage sequential optimization), and the parallelism limit has been reached. The correct way to handle this exception is the same as `DataRequiredError` – to wait until more trial evluations complete and log their data via `ax_client.complete_trial(...)`.\n", " \n", "In some cases higher parallelism is important, so `enforce_sequential_optimization=False` kwarg to AxClient allows the user to suppress limiting of parallelism. It's also possible to override the default parallelism setting for all stages of the optimization by passing `choose_generation_strategy_kwargs` to `ax_client.create_experiment`:" ] }, { "cell_type": "code", "execution_count": 24, "id": "5478ae35", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:34.306084Z", "iopub.status.busy": "2023-12-09T18:44:34.305802Z", "iopub.status.idle": "2023-12-09T18:44:34.318943Z", "shell.execute_reply": "2023-12-09T18:44:34.318250Z" }, "executionStartTime": 1690416064534, "executionStopTime": 1690416064564, "originalKey": "d62e6cfd-5127-450e-80b7-d0edcaf97d6c", "papermill": { "duration": 0.078098, "end_time": "2023-12-09T18:44:34.320354", "exception": false, "start_time": "2023-12-09T18:44:34.242256", "status": "completed" }, "requestMsgId": "cb9a17f9-5734-41c6-9018-c0635c61d8b3", "showInput": true, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:34] ax.service.ax_client: Starting optimization with verbose logging. To disable logging, set the `verbose_logging` argument to `False`. Note that float values in the logs are rounded to 6 decimal points.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:34] ax.service.utils.instantiation: Inferred value type of ParameterType.FLOAT for parameter x. If that is not the expected value type, you can explicitly specify 'value_type' ('int', 'float', 'bool' or 'str') in parameter dict.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:34] ax.service.utils.instantiation: Inferred value type of ParameterType.FLOAT for parameter y. If that is not the expected value type, you can explicitly specify 'value_type' ('int', 'float', 'bool' or 'str') in parameter dict.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:34] ax.service.utils.instantiation: Created search space: SearchSpace(parameters=[RangeParameter(name='x', parameter_type=FLOAT, range=[-5.0, 10.0]), RangeParameter(name='y', parameter_type=FLOAT, range=[0.0, 15.0])], parameter_constraints=[]).\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:34] ax.modelbridge.dispatch_utils: Using Models.BOTORCH_MODULAR since there are more ordered parameters than there are categories for the unordered categorical parameters.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:34] ax.modelbridge.dispatch_utils: Calculating the number of remaining initialization trials based on num_initialization_trials=None max_initialization_trials=None num_tunable_parameters=2 num_trials=None use_batch_trials=False\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:34] ax.modelbridge.dispatch_utils: calculated num_initialization_trials=5\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:34] ax.modelbridge.dispatch_utils: num_completed_initialization_trials=0 num_remaining_initialization_trials=5\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:34] ax.modelbridge.dispatch_utils: `verbose`, `disable_progbar`, and `jit_compile` are not yet supported when using `choose_generation_strategy` with ModularBoTorchModel, dropping these arguments.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[INFO 12-09 18:44:34] ax.modelbridge.dispatch_utils: Using Bayesian Optimization generation strategy: GenerationStrategy(name='Sobol+BoTorch', steps=[Sobol for 5 trials, BoTorch for subsequent trials]). Iterations after 5 will take longer to generate due to model-fitting.\n" ] } ], "source": [ "ax_client = AxClient()\n", "ax_client.create_experiment(\n", " parameters=[\n", " {\"name\": \"x\", \"type\": \"range\", \"bounds\": [-5.0, 10.0]},\n", " {\"name\": \"y\", \"type\": \"range\", \"bounds\": [0.0, 15.0]},\n", " ],\n", " # Sets max parallelism to 10 for all steps of the generation strategy.\n", " choose_generation_strategy_kwargs={\"max_parallelism_override\": 10},\n", ")" ] }, { "cell_type": "code", "execution_count": 25, "id": "5565d88e", "metadata": { "customInput": null, "customOutput": null, "execution": { "iopub.execute_input": "2023-12-09T18:44:34.446621Z", "iopub.status.busy": "2023-12-09T18:44:34.445915Z", "iopub.status.idle": "2023-12-09T18:44:34.451112Z", "shell.execute_reply": "2023-12-09T18:44:34.450520Z" }, "executionStartTime": 1690416064679, "executionStopTime": 1690416064702, "originalKey": "bc15d2cf-8ddc-4d66-83b6-7469cd15aa4d", "papermill": { "duration": 0.069993, "end_time": "2023-12-09T18:44:34.452417", "exception": false, "start_time": "2023-12-09T18:44:34.382424", "status": "completed" }, "requestMsgId": "996c4bd3-b296-4cf9-8f95-cbf488639c2f", "showInput": true, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "[(5, 10), (-1, 10)]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ax_client.get_max_parallelism() # Max parallelism is now 10 for all stages of the optimization." ] } ], "metadata": { "fileHeader": "", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.18" }, "papermill": { "default_parameters": {}, "duration": 229.165763, "end_time": "2023-12-09T18:44:35.988578", "environment_variables": {}, "exception": null, "input_path": "/tmp/tmp.bwZKabbZig/Ax-main/tutorials/tune_cnn_service.ipynb", "output_path": "/tmp/tmp.bwZKabbZig/Ax-main/tutorials/tune_cnn_service.ipynb", "parameters": {}, "start_time": "2023-12-09T18:40:46.822815", "version": "2.5.0" } }, "nbformat": 4, "nbformat_minor": 5 }