You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
655 lines
213 KiB
Plaintext
655 lines
213 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"id": "58f00965-3512-486d-b5ab-7111a17d7c85",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from utils import to_class_labels, imshow\n",
|
|
"import torch\n",
|
|
"from einops import rearrange\n",
|
|
"import numpy as np\n",
|
|
"import math\n",
|
|
"from pprint import pprint, pformat\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"from sklearn.metrics import confusion_matrix, accuracy_score\n",
|
|
"import models\n",
|
|
"from pathlib import Path\n",
|
|
"import inspect"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "674b3e45-d2b9-4b61-88c4-a7a516d6789d",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"{'batch_size': 152,\n",
|
|
" 'class_slots': 16,\n",
|
|
" 'classes': 16,\n",
|
|
" 'dataset_name': 'quickdraw',\n",
|
|
" 'experiment_dir': PosixPath('experiments/OpticalSystem_quickdraw_1_2_16_20_28_2_2_300_5.32e-07_0.001_3.6e-05'),\n",
|
|
" 'image_size': 28,\n",
|
|
" 'kernel_size_pixels': 28,\n",
|
|
" 'layers': 1,\n",
|
|
" 'loss_plot_path': PosixPath('experiments/OpticalSystem_quickdraw_1_2_16_20_28_2_2_300_5.32e-07_0.001_3.6e-05/OpticalSystem_quickdraw_1_2_16_20_28_2_2_300_5.32e-07_0.001_3.6e-05_loss.png'),\n",
|
|
" 'max_passes_through_dataset': 20,\n",
|
|
" 'metric': 0.001,\n",
|
|
" 'mlp_layers': 2,\n",
|
|
" 'model_class': <class 'models.OpticalSystem'>,\n",
|
|
" 'model_path': PosixPath('experiments/OpticalSystem_quickdraw_1_2_16_20_28_2_2_300_5.32e-07_0.001_3.6e-05/OpticalSystem_quickdraw_1_2_16_20_28_2_2_300_5.32e-07_0.001_3.6e-05.pt'),\n",
|
|
" 'name_id': 'OpticalSystem_quickdraw_1_2_16_20_28_2_2_300_5.32e-07_0.001_3.6e-05',\n",
|
|
" 'pixel_size_meters': 3.6e-05,\n",
|
|
" 'propagation_distance': 300,\n",
|
|
" 'resolution_scale_factor': 2,\n",
|
|
" 'test_batch_size': 64,\n",
|
|
" 'test_class_instances': 100,\n",
|
|
" 'test_data_path': './assets/quickdraw16_test.npy',\n",
|
|
" 'tile_size_scale_factor': 2,\n",
|
|
" 'train_class_instances': 8000,\n",
|
|
" 'train_data_path': './assets/quickdraw16_train.npy',\n",
|
|
" 'wavelength': 5.32e-07}\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"CONFIG = type('', (), {})() # object for parameters\n",
|
|
"\n",
|
|
"CONFIG.model_class = models.OpticalSystem\n",
|
|
"CONFIG.layers = 1\n",
|
|
"CONFIG.mlp_layers = 2\n",
|
|
"CONFIG.batch_size = 764//5\n",
|
|
"CONFIG.max_passes_through_dataset = 20\n",
|
|
"CONFIG.test_batch_size = 64\n",
|
|
"\n",
|
|
"# свойства входных данных\n",
|
|
"CONFIG.dataset_name = 'quickdraw'\n",
|
|
"CONFIG.classes = 16\n",
|
|
"CONFIG.image_size = 28\n",
|
|
"CONFIG.train_class_instances = 8000\n",
|
|
"CONFIG.test_class_instances = 100\n",
|
|
"CONFIG.train_data_path = './assets/quickdraw16_train.npy'\n",
|
|
"CONFIG.test_data_path = './assets/quickdraw16_test.npy'\n",
|
|
"\n",
|
|
"# свойства модели оптической системы\n",
|
|
"CONFIG.kernel_size_pixels = 28\n",
|
|
"CONFIG.tile_size_scale_factor = 2\n",
|
|
"CONFIG.resolution_scale_factor = 2 \n",
|
|
"CONFIG.class_slots = 16\n",
|
|
"CONFIG.wavelength = 532e-9\n",
|
|
"# CONFIG.refractive_index = 1.5090\n",
|
|
"CONFIG.propagation_distance = 300\n",
|
|
"CONFIG.metric = 1e-3\n",
|
|
"CONFIG.pixel_size_meters = 36e-6\n",
|
|
"\n",
|
|
"CONFIG.name_id = f\"{CONFIG.model_class.__name__}_{CONFIG.dataset_name}_{CONFIG.layers}_{CONFIG.mlp_layers}_{CONFIG.classes}_{CONFIG.max_passes_through_dataset}_{CONFIG.kernel_size_pixels}\" + \\\n",
|
|
" f\"_{CONFIG.resolution_scale_factor}_{CONFIG.tile_size_scale_factor}_{CONFIG.propagation_distance}_{CONFIG.wavelength}_{CONFIG.metric}_{CONFIG.pixel_size_meters}\"\n",
|
|
"CONFIG.experiment_dir = Path(f'./experiments/{CONFIG.name_id}/')\n",
|
|
"CONFIG.experiment_dir.mkdir(parents=True, exist_ok=True)\n",
|
|
"CONFIG.model_path = CONFIG.experiment_dir / f\"{CONFIG.name_id}.pt\"\n",
|
|
"CONFIG.loss_plot_path = CONFIG.experiment_dir / f\"{CONFIG.name_id}_loss.png\"\n",
|
|
"\n",
|
|
"def init_from_config(config):\n",
|
|
" init_arg_names = list(inspect.signature(CONFIG.model_class).parameters.keys())\n",
|
|
" return CONFIG.model_class(**{k:CONFIG.__dict__[k] for k in init_arg_names})\n",
|
|
"\n",
|
|
"pprint(CONFIG.__dict__)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "f468894b-ffa6-45a3-872c-95a57e4e263a",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"(torch.Size([128000, 16]), torch.Size([1600, 16]))"
|
|
]
|
|
},
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"train_data = torch.tensor(np.load(CONFIG.train_data_path), dtype=torch.float32)\n",
|
|
"test_data = torch.tensor(np.load(CONFIG.test_data_path), dtype=torch.float32)\n",
|
|
"train_data = rearrange(train_data, \"b (h w) -> b 1 h w\", h=CONFIG.image_size, w=CONFIG.image_size)\n",
|
|
"test_data = rearrange(test_data, \"b (h w) -> b 1 h w\", h=CONFIG.image_size, w=CONFIG.image_size)\n",
|
|
"train_data.shape, test_data.shape\n",
|
|
"\n",
|
|
"train_targets = torch.eye(CONFIG.classes).repeat_interleave(repeats=CONFIG.train_class_instances, dim=0)\n",
|
|
"test_targets = torch.eye(CONFIG.classes).repeat_interleave(repeats=CONFIG.test_class_instances, dim=0)\n",
|
|
"\n",
|
|
"train_labels = torch.repeat_interleave(torch.arange(CONFIG.classes), CONFIG.train_class_instances)\n",
|
|
"test_labels = torch.repeat_interleave(torch.arange(CONFIG.classes), CONFIG.test_class_instances)\n",
|
|
"\n",
|
|
"train_targets.shape, test_targets.shape"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 16,
|
|
"id": "d79ff533-d7ee-4c37-866d-f3cc7211648d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"inputs = test_data\n",
|
|
"targets = test_targets"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 17,
|
|
"id": "c4695c40-a01b-4ce6-b14c-9edc994a60ee",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"model = init_from_config(CONFIG)\n",
|
|
"# comment to train from scratch\n",
|
|
"model.load_state_dict(torch.load(CONFIG.model_path))\n",
|
|
"model.eval()\n",
|
|
"model.cuda();"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "7d6820d6-599c-4142-a879-f1b943549698",
|
|
"metadata": {},
|
|
"source": [
|
|
"### amplitude noise"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"id": "91941235-bc74-4f47-a3fa-47221eddda65",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import types\n",
|
|
"\n",
|
|
"def to_class_labels(softmax_distibutions):\n",
|
|
" return torch.argmax(softmax_distibutions, dim=1).cpu()\n",
|
|
"\n",
|
|
"def test(inputs, targets, noise_percent=0.1):\n",
|
|
" def opt_conv(self, inputs, heights):\n",
|
|
" result = self.propagation(field=inputs, propagation_distance=self.propagation_distance)\n",
|
|
" result = result * heights \n",
|
|
" result.real += torch.randn_like(result.real)*(result.real.abs().max()*noise_percent)\n",
|
|
" result = self.propagation(field=result, propagation_distance=self.propagation_distance)\n",
|
|
" amplitude = torch.sqrt(result.real**2 + result.imag**2)\n",
|
|
" return amplitude\n",
|
|
"\n",
|
|
" model.opt_conv = types.MethodType(opt_conv, model) \n",
|
|
" \n",
|
|
" predicted = []\n",
|
|
" batch_start = 0\n",
|
|
" while batch_start < test_data.shape[0]:\n",
|
|
" batch_end = min(batch_start + CONFIG.test_batch_size, test_data.shape[0])\n",
|
|
" batch_input = inputs[batch_start:batch_end].cuda() \n",
|
|
" with torch.inference_mode():\n",
|
|
" batch_output, _ = model(batch_input)\n",
|
|
" predicted.append(batch_output.cpu())\n",
|
|
" batch_start = batch_end\n",
|
|
" \n",
|
|
" predicted = torch.concat(predicted)\n",
|
|
" \n",
|
|
" test_acc = accuracy_score(to_class_labels(targets), to_class_labels(predicted))\n",
|
|
" return test_acc"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"id": "e8b4f58c-4c01-4b94-a794-7acdb2e82721",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"x = np.arange(0, 1.0, 0.01)\n",
|
|
"y_amp = []\n",
|
|
"for p in x:\n",
|
|
" y_amp.append(np.mean([test(inputs, targets, noise_percent=p) for _ in range(5)]))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 20,
|
|
"id": "f4eaeb67-4b9a-4ea0-bbd9-d6f8ca1a4f21",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABsZUlEQVR4nO3deVwU9f8H8Nfuwi73DcshgoCKeGGopOaRopSm2WmXGqWVSll08utQ6/vNNLPT0q95dJiapnaZSiiVJ955IAqCeHDKDQrL7uf3B7G5Asqx7MDyej4ePL7fnZ2Zfc/boX0x85kZmRBCgIiIiMhMyKUugIiIiMiYGG6IiIjIrDDcEBERkVlhuCEiIiKzwnBDREREZoXhhoiIiMwKww0RERGZFYYbIiIiMisMN0RERGRWGG6IGiEhIQEymQwJCQn6aY8//jj8/f1N8vnp6emQyWRYuXKlST6vIWQyGWbPnn3T+WbPng2ZTGYwzd/fH48//niDPmfYsGEYNmxY4wskPXPqoSl/76jtYbihVu/zzz+HTCZDeHi41KU0SHl5OWbPnm0QgKhhTp48idmzZyM9PV3qUmr5+eefMXbsWKjVaiiVSri4uGDIkCH44IMPUFxcLHV5RHQNC6kLILqZVatWwd/fH4mJiUhJSUFQUJDUJRlYunQpdDqd/nV5eTnmzJkDAGbzV3JLSU5Ohlz+799YJ0+exJw5czBs2LBaf5Vv27bNxNVV0+l0ePLJJ7Fy5Ur07NkT06dPh6+vL0pKSrBnzx688cYb2Lx5M+Lj4yWprzGk6mFLuP73juhaDDfUqqWlpWH37t3YsGEDnn76aaxatQqzZs2SuiwDlpaWUpfQZqlUqgbPq1QqW7CS+s2fPx8rV67ECy+8gA8++MDg1NrMmTORmZmJr7/+WpLaGkuqHrYE/t7RjfC0FLVqq1atgrOzM8aMGYP7778fq1atqjVPzTiUBQsWYNGiRQgICICNjQ1GjRqF8+fPQwiBd955Bx06dIC1tTXuvvtu5OfnG6zD398fd911F7Zt24bQ0FBYWVkhJCQEGzZsuGmN1577T09Ph7u7OwBgzpw5kMlkBmNS6hvzUNf4gcLCQjz++ONwdHSEk5MTJk+ejMLCwjprOHXqFO6//364uLjAysoKffv2xU8//XTT2gFgwYIFGDhwIFxdXWFtbY2wsDCsX7++1nwVFRV44YUX4O7uDnt7e4wbNw4XLlyoc507d+5Ev379YGVlhcDAQCxZsqTO+a4dc7Ny5Uo88MADAIDbb79d37ua03vX9i47OxsWFhb6I2TXSk5Ohkwmw2effaafVlhYiOeffx6+vr5QqVQICgrCvHnzbvqXf3l5OebNm4fu3bvj/fffrzVmCAC8vLzw6quvGkxbsWIFhg8fDg8PD6hUKoSEhOCLL76otWx945WuH4uk0WgwZ84cdO7cGVZWVnB1dcVtt92GuLg4/TxZWVmIiopChw4doFKp4OXlhbvvvtvgFN/1+19lZSXeeusthIWFwdHREba2thg8eDB27NhhUM+1v2P/+9//EBgYCJVKhX79+mH//v037CFQ/W8rk8mwa9cuxMTEwN3dHba2trjnnnuQm5tba/7PP/8c3bt3h0qlgre3N2bMmFFr36/rd2bNmjUICwuDvb09HBwc0LNnT3z88ccG8zR1X6C2hUduqFVbtWoV7r33XiiVSjz88MP44osvsH//fvTr16/OeSsrK/Hss88iPz8f8+fPx4MPPojhw4cjISEBr776KlJSUvDpp5/ipZdewvLlyw2WP3PmDCZMmIBnnnkGkydPxooVK/DAAw9gy5YtGDlyZIPqdXd3xxdffIFp06bhnnvuwb333gsA6NWrV6O2WwiBu+++Gzt37sQzzzyDbt26YePGjZg8eXKteU+cOIFBgwbBx8cHr732GmxtbfH9999j/Pjx+OGHH3DPPffc8LM+/vhjjBs3Do8++igqKyuxZs0aPPDAA/jll18wZswY/XxTpkzBt99+i0ceeQQDBw7E9u3bDd6vcezYMYwaNQru7u6YPXs2qqqqMGvWLKjV6hvWMWTIEDz33HP45JNP8H//93/o1q0bAOj/91pqtRpDhw7F999/X+tI3tq1a6FQKPRBqby8HEOHDsXFixfx9NNPo2PHjti9ezdiY2ORmZmJjz76qN6adu7cicLCQrz00ktQKBQ3rP9aX3zxBbp3745x48bBwsICP//8M6ZPnw6dTocZM2Y0eD01Zs+ejblz52LKlCno378/iouLceDAARw6dEi/b9533304ceIEnn32Wfj7+yMnJwdxcXHIyMiod+BtcXExvvzySzz88MOYOnUqSkpKsGzZMkRGRiIxMRGhoaEG83/33XcoKSnB008/DZlMhvnz5+Pee+/F2bNn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SLOLIgL+vZnf37xTMRERNUKTrpZ68803ce+99yI1NRXDhw8HAMTHx2P16tVYt26dUQuk9qvnP49hSM0tRWlFFexUTdpdiYionWnSkZuxY8di06ZNSElJwfTp0/Hiiy/iwoUL+P3332vdA4eoqdztVfB2tIIQwAkevSEiogZq8p/CY8aMwZgxY4xZC1EtPTs44lLRVfx9oQjhAa5Sl0NERG1Ak47c7N+/H/v27as1fd++fThw4ECziyKqUfPoBY67ISKihmpSuJkxYwbOnz9fa/rFixcxY8aMZhdFVKMnLwcnIqJGalK4OXnyJG655ZZa0/v06YOTJ082uyiiGjVXTKVfLkdRuUbiaoiIqC1oUrhRqVTIzs6uNT0zMxMWFryihYzHyUaJji42AIDjl3hqioiIbq5J4WbUqFGIjY1FUdG/XzaFhYX4v//7P4wcOdJoxREBQKivEwBgV0qetIUQEVGb0KRws2DBApw/fx5+fn64/fbbcfvtt6NTp07IysrCBx98YOwaqZ0b0c0DABB3svbRQiIious16RySj48P/v77b6xatQpHjx6FtbU1oqKi8PDDD8PS0tLYNVI7N6yrByzkMpzJKUVaXhk6udlKXRIREbViTR4gY2tri9tuuw0dO3ZEZWUlAOC3334DAIwbN8441REBcLS2xK0BrtiZkoe4k1l4akig1CUREVEr1qRwc/bsWdxzzz04duwYZDIZhBCQyWT697VardEKJAKAUd3V2JmSh20nshluiIjohpo05mbmzJno1KkTcnJyYGNjg+PHj+OPP/5A3759kZCQYOQSiYCIbmoAwMGMAuSWVEhcDRERtWZNCjd79uzB22+/DTc3N8jlcigUCtx2222YO3cunnvuOWPXSARvJ2v09HGEEMD2UxxYTERE9WtSuNFqtbC3twcAuLm54dKlSwAAPz8/JCcnG686omuMCqk+erPtBMMNERHVr0nhpkePHjh69CgAIDw8HPPnz8euXbvw9ttvIyAgwKgFEtUY1d0TAPBXSh7KKqokroaIiFqrJg0ofuONN1BWVgYAePvtt3HXXXdh8ODBcHV1xdq1a41aIFGNLmo7+Lna4NzlcvyVclnqcoiIqJVqUriJjIzU//+goCCcOnUK+fn5cHZ2NrhqisiYZDIZRnZT48udaYhPysHtNlJXRERErVGTTkvVxcXFhcGGWlzNqakdp3Oh1UlcDBERtUpGCzdEphDm5wwXWyWKrlQhtYRhmoiIamO4oTZFIZdhRHD1s6aO5TPcEBFRbQw31ObUnJo6ll99d2wiIqJrtYpws2jRIvj7+8PKygrh4eFITEysd94NGzagb9++cHJygq2tLUJDQ/HNN9+YsFqS2uDObrC2lKOgUobjl4qlLoeIiFoZycPN2rVrERMTg1mzZuHQoUPo3bs3IiMjkZOTU+f8Li4ueP3117Fnzx78/fffiIqKQlRUFLZu3WriykkqVpYKDO3iDgDYeqLu/YSIiNovycPNwoULMXXqVERFRSEkJASLFy+GjY0Nli9fXuf8w4YNwz333INu3bohMDAQM2fORK9evbBz504TV05SigypHnez9WQ2T00REZGBJt3nxlgqKytx8OBBxMbG6qfJ5XJERERgz549N11eCIHt27cjOTkZ8+bNq3OeiooKVFT8+6DF4uLq0xgajQYajaaZW2CoZn3GXi/VNijACQqZQPrlcpy8WIAuanupSzJb3K9Nh702HfbadIzV68YsL2m4ycvLg1arhVqtNpiuVqtx6tSpepcrKiqCj48PKioqoFAo8Pnnn2PkyJF1zjt37lzMmTOn1vRt27bBxqZl7gIXFxfXIuslQ8FOcpwokOHTTTtxpy+P3rQ07temw16bDnttOs3tdXl5eYPnlTTcNJW9vT2OHDmC0tJSxMfHIyYmBgEBARg2bFiteWNjYxETE6N/XVxcDF9fX4waNQoODg5GrUuj0SAuLg4jR46EpaWlUddNhjQaDfbl/I4TBUC6xhGjRw+UuiSzxf3adNhr02GvTcdYva4589IQkoYbNzc3KBQKZGcbPuU5Ozsbnp6e9S4nl8sRFBQEAAgNDUVSUhLmzp1bZ7hRqVRQqVS1pltaWrbYDt2S66Z/9XAWUMhlOJVdiotFlfB3s5W6JLPG/dp02GvTYa9Np7m9bsyykg4oViqVCAsLQ3x8vH6aTqdDfHw8BgwY0OD16HQ6g3E11D7YWgLhnZwBAL8dz5K4GiIiai0kv1oqJiYGS5cuxVdffYWkpCRMmzYNZWVliIqKAgBMmjTJYMDx3LlzERcXh7NnzyIpKQkffPABvvnmGzz22GNSbQJJKDKkerzWlhMMN0REVE3yMTcTJkxAbm4u3nrrLWRlZSE0NBRbtmzRDzLOyMiAXP5vBisrK8P06dNx4cIFWFtbIzg4GN9++y0mTJgg1SaQhEZ288DsX5Jw9HwhLhVegbeTtdQlERGRxCQPNwAQHR2N6OjoOt9LSEgweP2f//wH//nPf0xQFbUF7vYq9PVzxv70Amw9kYWoQZ2kLomIiCQm+Wkpoua6o4cXAI67ISKiagw31Obd0aP6yrr96fnILeHAciKi9o7hhto8Hydr9OrgCCGAbSd59IaIqL1juCGzENm9+ujNjlN8kCYRUXvHcENm4fau1Q/S3JVyGVc1WomrISIiKTHckFno5mUPtYMKVzRaJKblS10OERFJiOGGzIJMJtMfvdmRzFNTRETtGcMNmY1hNeGG426IiNo1hhsyG4OCXGGpkCH9cjnS8sqkLoeIiCTCcENmw97KEv38XQDw6A0RUXvGcENmheNuiIiI4YbMyu3B1eFm39l8lFdWSVwNERFJgeGGzEqguy18XaxRqdVhd8plqcshIiIJMNyQWeEl4URExHBDZuf2ay4JF0JIXA0REZkaww2ZnVsDXKGykONS0VWczi6VuhwiIjIxhhsyO9ZKBQYEugLgqSkiovaI4YbM0u28WzERUbvFcENmqSbcHDhXgJScEomrISIiU2K4IbPU0dUGt3d1h1Yn8OL3R1Gl1UldEhERmQjDDZmtd+/tCXsrCxy9UIQlf56VuhwiIjIRhhsyW16O1pgzrjsA4KPfT+PkpWKJKyIiIlNguCGzdk8fH4wMUUOjFXhx3VFUVvH0FBGRuWO4IbMmk8nw7j094WxjiaTMYny2/YzUJRERUQtjuCGz526vwjvjewAAFiWk4u8LhdIWRERELYrhhtqFu3p5Y0wvL2h1Ap/Ep0hdDhERtSCGG2o3nhveGQDw5+lcFF/VSFwNERG1FIYbaje6qO0Q5GGHSq0Ov5/MlrocIiJqIQw31G7IZDKM6ekFAPjl70yJqyEiopbCcEPtyl29qsPNX2dyUVTOU1NEROaI4Ybalc5qe3RV20OjFdh2MkvqcoiIqAUw3FC7M+afoze/HuOpKSIic8RwQ+1OTbjZeSYPBWWVEldDRETGxnBD7U6gux26eTmgSsdTU0RE5ojhhtqlmoHFvGqKiMj8MNxQu1RzSfju1Mu4XFohcTVERGRMDDfULvm72aKHjwO0OoGtJ3hDPyIic8JwQ+3WmJ7eAIBfj12SuBIiIjImhhtqt2rG3exJvYw8npoiIjIbDDfUbvm62CDEywE6AexKyZO6HCIiMhKGG2rXBnd2A8BwQ0RkTlpFuFm0aBH8/f1hZWWF8PBwJCYm1jvv0qVLMXjwYDg7O8PZ2RkRERE3nJ/oRgYFVYebnWfyIISQuBoiIjIGycPN2rVrERMTg1mzZuHQoUPo3bs3IiMjkZOTU+f8CQkJePjhh7Fjxw7s2bMHvr6+GDVqFC5evGjiyskc9PN3gVIhx6Wiq0i/XC51OUREZASSh5uFCxdi6tSpiIqKQkhICBYvXgwbGxssX768zvlXrVqF6dOnIzQ0FMHBwfjyyy+h0+kQHx9v4srJHFgrFQjzcwYA7OSpKSIis2Ah5YdXVlbi4MGDiI2N1U+Ty+WIiIjAnj17GrSO8vJyaDQauLi41Pl+RUUFKir+vRKmuLgYAKDRaKDRaJpRfW016zP2eqk2Y/b61k7O2HP2Mv46nYOHwrybvT5zw/3adNhr02GvTcdYvW7M8pKGm7y8PGi1WqjVaoPparUap06datA6Xn31VXh7eyMiIqLO9+fOnYs5c+bUmr5t2zbY2Ng0vugGiIuLa5H1Um1G6XUJAFjgr+Rs/PLrZshlzV+lOeJ+bTrstemw16bT3F6Xlzd86ICk4aa53nvvPaxZswYJCQmwsrKqc57Y2FjExMToXxcXF+vH6Tg4OBi1Ho1Gg7i4OIwcORKWlpZGXTcZMmavq7Q6fJmSgJKrVejYexB6dXA0UpXmgfu16bDXpsNem46xel1z5qUhJA03bm5uUCgUyM42vP19dnY2PD09b7jsggUL8N577+H3339Hr1696p1PpVJBpVLVmm5padliO3RLrpsMGaPXlpbAgABXbDuZjb3phQjr5Gak6swL92vTYa9Nh702neb2ujHLSjqgWKlUIiwszGAwcM3g4AEDBtS73Pz58/HOO+9gy5Yt6Nu3rylKJTN3G+93Q0RkNiQ/LRUTE4PJkyejb9++6N+/Pz766COUlZUhKioKADBp0iT4+Phg7ty5AIB58+bhrbfewnfffQd/f39kZWUBAOzs7GBnZyfZdlDbVnO/mwPpBbhSqYW1UiFxRURE1FSSh5sJEyYgNzcXb731FrKyshAaGootW7boBxlnZGRALv/3ANMXX3yByspK3H///QbrmTVrFmbPnm3K0smMBLjZwsvRCplFV3HgXD4Gd3aXuiQiImoiycMNAERHRyM6OrrO9xISEgxep6ent3xB1O7IZDIMCnLD+oMXsDMlj+GGiKgNk/wmfkStxW1BHHdDRGQOGG6I/jEwyBUAcOJSMfLLKiWuhoiImorhhugfHvZW6Kq2hxDAntTLUpdDRERNxHBDdI2aq6a2nsiSuBIiImoqhhuia0R2r75K76ejl7BoR4rE1RARUVMw3BBdIzzAFbF3BgMA3t+ajBW70iSuiIiIGovhhug6Tw8NxMwRnQEAc34+ibX7MySuiIiIGoPhhqgOz0d0xtTBnQAAr204hh+PXJS4IiIiaiiGG6I6yGQy/N/obng0vCOEAGK+P4q/LxRKXRYRETUAww1RPWQyGd65uwciu6uh1Qks2HZa6pKIiKgBGG6IbkAul+H10SGwkMvw5+lcJKblS10SERHdBMMN0U10dLXBg/18AQALtiZDCCFxRUREdCMMN0QN8OzwICgt5EhMz8dOPnuKiKhVY7ghagAvR2s8Fu4HgEdviIhaO4YbogaafnsgrC0VOHqhCL8n5UhdDhER1YPhhqiB3OxUiBrkDwD4YFsydDoevSEiao0Yboga4akhAbBXWeBUVgl+PZYpdTlERFQHhhuiRnCyUWLqkAAAwDu/nMT5/HKJKyIiousx3BA10pO3dUJnDzvklFTg0S/3Ibv4qtQlERHRNRhuiBrJVmWBb6eEo6OLDTLyy/HYl/uQX1YpdVlERPQPhhuiJlA7WGHVlHB4OljhTE4pJi9PRMlVjdRlERERGG6ImszXxQbfTukPF1sljl0swpMrD+BKpVbqsoiI2j2GG6JmCPKwx9dP9Ie9ygKJ6fmY8d0haLQ6qcsiImrXGG6ImqmHjyOWR/WDykKO7ady8Or6v3kPHCIiCTHcEBlBP38XfPHYLVDIZdhw+CL+uzmJj2ggIpIIww2RkQwPVuP9+3sBAJbtTMPnCakSV0RE1D4x3BAZ0b23dMAbY7oBAN7fmozv9mVIXBERUfvDcENkZFMGB2D6sEAAwOubjuGHgxckroiIqH1huCFqAS9HdsXEW/0gBPDy+qP48chFqUsiImo3GG6IWoBMJsOccd3xcH9f6ATwwtoj+OXvS1KXRUTULjDcELUQuVyG/47viQfCOkAngJlrjmDLcT5JnIiopTHcELUguVyG9+7rhXv7+ECrE4j+7jB+P5ktdVlERGaN4YaohSnkMrz/QG/cHeqNKp3A9O8OYXdKntRlERGZLYYbIhNQyGX44IHeGBWiRmWVDlO+PoBDGQVSl0VEZJYYbohMxEIhx6eP9MFtQW4or9Ti8eWJSMoslrosIiKzw3BDZEIqCwX+NykMt3R0QvHVKkxcloi0vDKpyyIiMisMN0QmZqO0wIqo/gjxckBeaQUeXboXFwuvSF0WEZHZYLghkoCjtSW+frI/AtxtcanoKh77ch9ySyqkLouIyCww3BBJxM1OhW+fDIePkzXS8sowcdk+FJVrpC6LiKjNY7ghkpC3kzVWTQmHu70Kp7JKMHlFIkorqqQui4ioTWO4IZKYv5stvn0yHE42ljhyvhBPfX0AVzVaqcsiImqzJA83ixYtgr+/P6ysrBAeHo7ExMR65z1x4gTuu+8++Pv7QyaT4aOPPjJdoUQtqKunPb6K6g9bpQK7Uy9j8vJEFJRVSl0WEVGbJGm4Wbt2LWJiYjBr1iwcOnQIvXv3RmRkJHJycuqcv7y8HAEBAXjvvffg6elp4mqJWlZvXycse7wf7FQW2JeWj3s+34XU3FKpyyIianMkDTcLFy7E1KlTERUVhZCQECxevBg2NjZYvnx5nfP369cP77//Ph566CGoVCoTV0vU8m4NcMUP0wbCx8ka6ZfLcc+iXXxUAxFRI0kWbiorK3Hw4EFERET8W4xcjoiICOzZs0eqsogk19XTHptmDEKff270N2l5IhbtSMG2E1nYk3oZxy8W4UJBudRlEhG1WhZSfXBeXh60Wi3UarXBdLVajVOnThntcyoqKlBR8e/9Q4qLq293r9FooNEY97LbmvUZe71Um7n32slKjq8fD8NrG0/g12NZeH9rcq157uiuxsIHesJS0bJ/o5h7r1sT9tp02GvTMVavG7O8ZOHGVObOnYs5c+bUmr5t2zbY2Ni0yGfGxcW1yHqpNnPv9UhbQOkvw8kCGa5qZbiqBa5UASUaYMuJbORlZ+LRIB3kspavxdx73Zqw16bDXptOc3tdXt7wI9aShRs3NzcoFApkZ2cbTM/OzjbqYOHY2FjExMToXxcXF8PX1xejRo2Cg4OD0T4HqE6VcXFxGDlyJCwtLY26bjLUnno9po5p25NzMeO7IziQJ0e3IH+8eWdXyGQ3TjhlFVU4fqkY/fycIW9EGmpPvZYae2067LXpGKvXNWdeGkKycKNUKhEWFob4+HiMHz8eAKDT6RAfH4/o6GijfY5Kpapz8LGlpWWL7dAtuW4y1F57HdnDGx88KPD82iP4Zm8GXGxVeGFkl3rnr6jS4tHlB3DiUjEm3uqHt+/uftMwdL322mspsNemw16bTnN73ZhlJT0tFRMTg8mTJ6Nv377o378/PvroI5SVlSEqKgoAMGnSJPj4+GDu3LkAqgchnzx5Uv//L168iCNHjsDOzg5BQUGSbQeRFO4O9UHRFQ3e+vEEPo4/A0drSzxxW6c65527+RROXKr+q+ebvefg62KNp4YEmrJcIiKTkTTcTJgwAbm5uXjrrbeQlZWF0NBQbNmyRT/IOCMjA3L5v4MlL126hD59+uhfL1iwAAsWLMDQoUORkJBg6vKJJDdpgD+KyjX4IO403v7lJLQ6gSmDOxkclYk7mY2Vu9MBAHeHeuPHI5fw7uZT8Hayxl29vCWqnIio5Ug+oDg6Orre01DXBxZ/f38IIUxQFVHbET08CKUVVVjy51n8d3MSLhVdwRtjQqCQy5BZdAUvrz8KAJhyWye8PqYbnG2UWLk7HTHfH4XawQr9/F0k3gIiIuOS/PELRNQ8MpkMr90ZjNdHdwMArNiVjmdXH0J5ZRVmrj6CwnINevo44pU7giGTyfDmXSEYFaJGZZUOU78+wLsgE5HZYbghMgMymQxThwTgk4f7wFIhw+ZjWRj6fgIS0/Nhp7LApw/3gdKi+tddIZfh44f6oLevEwrLNZiwZA9+PHKRR0WJyGww3BCZkXG9vfHVE/1hr7JAbkn1zSv/e08P+LvZGsxnrVRg2eS+6Kq2R15pJWauOYLHlu3DWR7FISIzwHBDZGYGBrph3bQBCPNzxnMjOuPuUJ8653OzU+GnZwfhpVFdoLKQY1fKZdzx0V/4YFsyjpwvRFF53XcD1eoEyiqqWnITiIiaRfIBxURkfMGeDvhh2sCbzqeyUCB6eGeM7e2Nt348gT9O5+LT7Sn4dHsKAMDJxhJ+LjYoK5bj05RdKCjXIL+8EkIAg4Jc8eKorrilo3ODarqq0aKsogqudnzoLRG1LIYbIoKfqy1WRvXD5mNZ+GZvOs7mliGnpAKF5RoUlheh+iBvmcEyu1IuY1fKbgwP9kDMyC7o4eNY57rPZJdg1b4MbDh0AeWVWsy7rxfuC+vQ8htFRO0Www0RAagelDymlxfG9PICUP24hnOXy5GSXYQDhw5jxKD+UDvZwNVWhSuVWizakYL1hy5g+6kcbD+Vg1sDXODjZAM3OyVc7ZRQKuT49Vgm9qcXGHzOi+uOoqyyCpMG+EuwlcYnhMDh84Vwt1PB16VlnldHRI3DcENEdbJVWSDE2wGd3a0hMgQGBroa3P583v298MywQHz8+2n8ePQS9p7NB5Bfaz0KuQwjgj3wcHhH/Hk6Fyt2peOtH0+gtKIK04cZ3llcpxMoqaiCo3Xdt1nPKb6K7adycDKzGCFeDhgY6AZfF+tGP0rCWA6ey8e8LclITMuHjVKBTx7qg4gQtSS1ENG/GG6IqMk6udnio4f6IHp4Zxw8l4/LZZW4XFqJy6UVKLqiQZ+Ozniwry88Ha0AAMO6uMNeZYFPtqdg/pZklF6twuSB/vjrTB7+OpOLnWfycLmsEm52KnTzskeItwO6eTogI78c8UnZOHqhqFYNPk7WGBjoijA/ZwR52CHQ3Q7OtsoW3e7krBK8vzUZvyf9++Df8kotnvrmAN68KwRRg2o/BuNCQTksFXKoHaxatDYiYrghIiMI8rBDkIfdTeeTyWSIGdUVtioLzP3tFD5PSMXnCam15ssrrcBfZyrw15m8Wu/17uCIPh2dceJSEQ5nFOJi4RWsO3gB6w5e0M/jaqtEoIcdIrt74r5bfOBkUzvsVFRpcSqzBP5utvUeKbrelUot5v6WhG/2noMQgFwGPNjXFzNuD8LnCSlYnXgec34+iXOXy/HmXSHQ6gS2nsjC6sQM7E69DBulAksmhmFwZ/cGfV5jCSGw92w+vvgjFScvFWFAoBvG9fbGkC5uUFkoGrWeCwVXcPh8IVKyS+Bur4K/my38XW3h7WQNRSOeKk+No9UJ5JRcxaXCK7hUeBWWCjluD3Zv1L+flIQQOHGpGFqdQG9fJ8nqYLghIpN7emgg7Kws8Mam4wCAXj6OGNzZHYM7u6GbtwPO5pbh5KViJGUW41RWMZxslBgR7IHhwR7wuObIR3llFfanF2B3ah5OXirG2dwyXCy8Un0EKS0fiWn5mLflFO7q6YWHwzsiwM0WO5JzEZ+UjT9P56KsUgsrSznG9PTGI+EdcUtHp3pPcR27UISZaw/jbG71wOrRPT0RM7KrPtS9e09P+Lna4r3fTmHl7nQcOV+I8/nluFxWeU29Wjyxcj8+nBDa4Od6abQ6KGQyyG8QKHQ6gfhTOfg8IQWHMwr1038+egk/H70EeysL3NHdE5MG+KNnh7oHfgsh8MOhi9hyPBNHzhcir7SyzvmUCjm6+zggalAnjO7hCQuF4R1FzueX45u953AkoxAanQ46nUCVTkCI6p5NGxZUbzi6qtFCqZDfcFub4uj5Qmw6chFKCzm8Ha3h7WQNd1sLXCgD1h28gBOZpTh+sQjJ2SXo7GGPh/t3xLhQb9ipWvYrUgiB1NwyJKblY1/aZRzKKMClwqvQ6gxvqOlmp8Qj/Tvi0Vv9THLkTwiBi4VXcPR8ESwUMgzt4g4ry/rDlVYnsD89H1tPZGHbiWxcLLyCIV3c8fUT/Vu81vrIRDu7LWlxcTEcHR1RVFQEBwcHo65bo9Fg8+bNGD16dLMe6043x16bTkv2+kJBOWyVFkY9jVRWUYW0vDIcPFeANfvPIymzuN55bZUKlFVq9a+DPe1x3y0dEOLtgEB3O6gdVNAJYPEfqfgw7jSqdAJqBxXev783hnSp++jL5mOZeGHtEVRU6QAAagcVJvTriHv7+OD9bcn49e9MyGTA23f3wMRb/fTL6XQCf5/Px+qtu2DjGYC0y+VIySnFxcIrEAKwspTDRmkBa0sFVJZyXPv1X1ahRVbxVQCA0kKOB/t2QGR3T/yRnItf/s789z2FHIsevQUjrxsXJITA/K3J+OKao2iWChm6eTkg2NMe+WWVSMsrw/n8K6jU6vTzdHC2xpO3dcKDfX1x9HwhVuxOx+9J2bjRt8qwru74+KE+BkfLdDqBb/aew/tbk+FkY4lX7gjG2F5etYJmZZUOCck5qNIJDApyu+ERN51OIOF0Dpb8cRb70mqPBbsZW6UCd/fxwX23dECAmy2cbCybPLYrMS0fK3alobSiClVaAa0Q0OoEzl0uqzNEWshlUDtYwcfJGhn55fp/Pwt59aD/qYMD6r06sahcg2/3nUP2P8vUkMtkcLC2hJO1JZxsLOFso4RMVn00srxSi3KNFgVllfj7QtE/4bZCv6y9lQXG9vbGfbd0wC0dnaDVCZzKKsHBcwU4eK4AO1PykH9NiLeylCOimxqfPtwHMpnMaP8Nacz3N8ONEfEL13TYa9Npy70WQuDohSKs3peBn45ewhWNFt29HTCimxoR3TzQw9sRh88X4rt9Gfjl70v6QFLDTmUBR2tLXCy8AqD6yMN/x/e8aRg7er4Qaw+cx7Au7hge7KE/uqHVCcz66Ti+3ZsBAHh2eBA6utjgrzN5tb4gGstOZYHHbvXDE7f5w8P+37/udTqBA+cK8HlCChKSc6GQy7Dwwd76mzsKIfCfX5OwbGcaAOCZoYEYGaJGd2+HWn+ta3UCFwuuYNORi/hqd7r+qJSlQgaN9t+vkiFd3HFPH2/YKi1goZBBLpMhI78c//01CRVVOnRys8X/Joahs9oeKTklePWHYzh4zvCquj4dnfDGmG4I83NBZtEVrN6XgdX7z+vvvG0hl6F/JxeM6KbGkM5u0GgFskuuIre4AplFV/HrsUs4nV2qr++uXt5wsrHEpcIryCy6iosFV3DlagV6+7miVwcn9PBxRJCHHXaeycPqxAyczTO89YFSIYe7vQoeDirYqSygkMtgIZdBIZfBVmWBe/t0wKAgV4MAVFmlw4e/n8biP1LrDXwqCzn6dHRC/06uCO/kgkB3O7jbq/RHtzRaHbadyMbK3WkGVx5GdFPj+YjO+pBTXlmFFbvSsfiPVJRcbf5NNi3kMgR72SO/tBKXiv4NSj5O1igsrzT4owCovifWiGA1RnVXY0hnd1gr/913GG5MgOHGPLDXpmMuvS6vrMKVSm29NxEsKtdg4+EL2JlyGWdzS3Euv1x/esBOZYE547rj3lt8mn1llhACH/1+Bh/Hn6n1nq1SAV9rDQZ074TOagcEutuik7st5DIZrlRqcUVT/Vd2hcbwi0Umq/4icrCq/9+nSqvDK+v/xobDFyGTAf8d3xMP9fPF7J9P4Os95wAA74w3PJp0I1c1Wqw/eAFf/nUW6ZfLYaNU4P6wDpg0wL/e8VfHLxbh6W8O4mLhFdgqFRjfxwfrDlxApVYHW6UCL0d2RfHVKiz+IxXl/3x59urgqB/DAQDu9io4WFkgNbeszs+4lp3KAo+Ed0TUIH94OVobvHej/VoIgT1nL+O7fdVjpRoaOnt1cMT0YYEYFeKJs3mlmLnmCE5cqj5yeO8tPhjS2R3yf0KRXCaDm50SPTs4Nng8zfGLRVj611n8fPQSas5cjQxRo5+/M5b+laYPfsGe9hgVogau2Ve1Oh2KrmhQWK5B0RUNCsorodMBNkoFrJUK2CgVsFNZopuXPUJ9q8OelaUCOp3A3rOXsf7gBfx2PAtX/tn37FUW6OPnjLCOzujfyQX9/J1rnaJsSK8bg+HmBhhuzAN7bTrttdeVVTqcu1yG8wXl6OHtaDDWxxi+2ZOOeVuSEeRhhyGd3TC4izu6e9oibuuWFuu1Tifw1jVHjsL8nHHwXAFkMuC9e3tiQr+OjV6nVieQnFUCH2frBg3MvlxagRnfHfrn1gHVbu/qjv/c0xM+TtUBJKf4KhbGncb3B87rv8TDO7lg0gB/jOquhqVCjvS8MvyelI34pBwczCiAg5UF3O2toHZQQW1vha6e9ri/b4d6A19j9uuKKi1ySyqQU1KBnOKruKLRVp9e0lWfYkrOKsH3B87jqqb6yF8nN1tcKryCiiodnGws8d69PXFHD6+GtLNBUnJK8dn2M/jpmpADAL4u1nhxZFeM6+1t9HFLAFBaUYXEtMvwcrRGF7V9gweWSxFuOKCYiKgOSgs5Oqvt0Vlt3yLrnzjAHxOvu5GhRlP387yMRS6X4Z27e8BOZYnFf6Ti4LkCyGXA+/f3bvJdoxVyGUK8G/6HoqudCt88GY4FW5Ox/VQOoocHYVxvb4MjYh4OVnjvvl54fJA/9p3Nx4BAV3S57t/B380WUwYHYMrggCbV3RgqCwU6ONugg3P9N2mcOaIzVuxKx1d70pH2zymtwZ3dsOCB3kYfBBzkYae/BcNn28/g2MUiPD7QHxP6dYTSouUeGWmnssDw4LZxHyeGGyKidkQmk+G1O4PhYmuJb/dm4OXIrhjbu2FXbhmLpUKO2NHdEDu62w3nC/Z0QLCncY+wtxRXOxVeiuyKp4cGYP3BC7BTWeC+Wzq0yBGUGjUhh2pjuCEiaoeeGhKIp4YESl2G2bG3sqzzJo5kWi13/IqIiIhIAgw3REREZFYYboiIiMisMNwQERGRWWG4ISIiIrPCcENERERmheGGiIiIzArDDREREZkVhhsiIiIyKww3REREZFYYboiIiMisMNwQERGRWWG4ISIiIrPCcENERERmxULqAkxNCAEAKC4uNvq6NRoNysvLUVxcDEtLS6Ovn/7FXpsOe2067LXpsNemY6xe13xv13yP30i7CzclJSUAAF9fX4krISIiosYqKSmBo6PjDeeRiYZEIDOi0+lw6dIl2NvbQyaTGXXdxcXF8PX1xfnz5+Hg4GDUdZMh9tp02GvTYa9Nh702HWP1WgiBkpISeHt7Qy6/8aiadnfkRi6Xo0OHDi36GQ4ODvxlMRH22nTYa9Nhr02HvTYdY/T6ZkdsanBAMREREZkVhhsiIiIyKww3RqRSqTBr1iyoVCqpSzF77LXpsNemw16bDnttOlL0ut0NKCYiIiLzxiM3REREZFYYboiIiMisMNwQERGRWWG4ISIiIrPCcNNIixYtgr+/P6ysrBAeHo7ExMQbzr9u3ToEBwfDysoKPXv2xObNm01UadvXmF4vXboUgwcPhrOzM5ydnREREXHTfxv6V2P36xpr1qyBTCbD+PHjW7ZAM9LYXhcWFmLGjBnw8vKCSqVCly5d+N+RBmpsrz/66CN07doV1tbW8PX1xQsvvICrV6+aqNq2688//8TYsWPh7e0NmUyGTZs23XSZhIQE3HLLLVCpVAgKCsLKlSuNW5SgBluzZo1QKpVi+fLl4sSJE2Lq1KnCyclJZGdn1zn/rl27hEKhEPPnzxcnT54Ub7zxhrC0tBTHjh0zceVtT2N7/cgjj4hFixaJw4cPi6SkJPH4448LR0dHceHCBRNX3vY0ttc10tLShI+Pjxg8eLC4++67TVNsG9fYXldUVIi+ffuK0aNHi507d4q0tDSRkJAgjhw5YuLK257G9nrVqlVCpVKJVatWibS0NLF161bh5eUlXnjhBRNX3vZs3rxZvP7662LDhg0CgNi4ceMN5z979qywsbERMTEx4uTJk+LTTz8VCoVCbNmyxWg1Mdw0Qv/+/cWMGTP0r7VarfD29hZz586tc/4HH3xQjBkzxmBaeHi4ePrpp1u0TnPQ2F5fr6qqStjb24uvvvqqpUo0G03pdVVVlRg4cKD48ssvxeTJkxluGqixvf7iiy9EQECAqKysNFWJZqOxvZ4xY4YYPny4wbSYmBgxaNCgFq3T3DQk3Lzyyiuie/fuBtMmTJggIiMjjVYHT0s1UGVlJQ4ePIiIiAj9NLlcjoiICOzZs6fOZfbs2WMwPwBERkbWOz9Va0qvr1deXg6NRgMXF5eWKtMsNLXXb7/9Njw8PPDkk0+aokyz0JRe//TTTxgwYABmzJgBtVqNHj164N1334VWqzVV2W1SU3o9cOBAHDx4UH/q6uzZs9i8eTNGjx5tkprbE1N8N7a7B2c2VV5eHrRaLdRqtcF0tVqNU6dO1blMVlZWnfNnZWW1WJ3moCm9vt6rr74Kb2/vWr9AZKgpvd65cyeWLVuGI0eOmKBC89GUXp89exbbt2/Ho48+is2bNyMlJQXTp0+HRqPBrFmzTFF2m9SUXj/yyCPIy8vDbbfdBiEEqqqq8Mwzz+D//u//TFFyu1Lfd2NxcTGuXLkCa2vrZn8Gj9yQ2XnvvfewZs0abNy4EVZWVlKXY1ZKSkowceJELF26FG5ublKXY/Z0Oh08PDzwv//9D2FhYZgwYQJef/11LF68WOrSzE5CQgLeffddfP755zh06BA2bNiAX3/9Fe+8847UpVET8MhNA7m5uUGhUCA7O9tgenZ2Njw9PetcxtPTs1HzU7Wm9LrGggUL8N577+H3339Hr169WrJMs9DYXqempiI9PR1jx47VT9PpdAAACwsLJCcnIzAwsGWLbqOasl97eXnB0tISCoVCP61bt27IyspCZWUllEpli9bcVjWl12+++SYmTpyIKVOmAAB69uyJsrIyPPXUU3j99dchl/NYgLHU993o4OBglKM2AI/cNJhSqURYWBji4+P103Q6HeLj4zFgwIA6lxkwYIDB/AAQFxdX7/xUrSm9BoD58+fjnXfewZYtW9C3b19TlNrmNbbXwcHBOHbsGI4cOaL/GTduHG6//XYcOXIEvr6+piy/TWnKfj1o0CCkpKToAyQAnD59Gl5eXgw2N9CUXpeXl9cKMDWhUvARjEZlku9Gow1NbgfWrFkjVCqVWLlypTh58qR46qmnhJOTk8jKyhJCCDFx4kTx2muv6efftWuXsLCwEAsWLBBJSUli1qxZvBS8gRrb6/fee08olUqxfv16kZmZqf8pKSmRahPajMb2+nq8WqrhGtvrjIwMYW9vL6Kjo0VycrL45ZdfhIeHh/jPf/4j1Sa0GY3t9axZs4S9vb1YvXq1OHv2rNi2bZsIDAwUDz74oFSb0GaUlJSIw4cPi8OHDwsAYuHCheLw4cPi3LlzQgghXnvtNTFx4kT9/DWXgr/88ssiKSlJLFq0iJeCS+3TTz8VHTt2FEqlUvTv31/s3btX/97QoUPF5MmTDeb//vvvRZcuXYRSqRTdu3cXv/76q4krbrsa02s/Pz8BoNbPrFmzTF94G9TY/fpaDDeN09he7969W4SHhwuVSiUCAgLEf//7X1FVVWXiqtumxvRao9GI2bNni8DAQGFlZSV8fX3F9OnTRUFBgekLb2N27NhR539/a/o7efJkMXTo0FrLhIaGCqVSKQICAsSKFSuMWpNMCB5vIyIiIvPBMTdERERkVhhuiIiIyKww3BAREZFZYbghIiIis8JwQ0RERGaF4YaIiIjMCsMNERERmRWGGyIymdmzZ0OtVkMmk2HTpk213k9ISIBMJkNhYaHJa2vt0tPTIZPJ9E9jb8leXf9ZRG0Nww0R3VB9QaSxkpKSMGfOHCxZsgSZmZm48847a80zcOBAZGZmwtHRsdmf11jG2k5Tub5XK1euhJOTk7RFEbUSfCo4URuk1Wohk8na1JOKU1NTAQB33303ZDJZnfMolcqbPvmdqrFXRPVrO/9lJGqjhg0bhujoaERHR8PR0RFubm548803DZ40XFFRgZdeegk+Pj6wtbVFeHg4EhIS9O/X/FX+008/ISQkBCqVChkZGaioqMCrr74KX19fqFQqBAUFYdmyZfrljh8/jjvvvBN2dnZQq9WYOHEi8vLyDGp77rnn8Morr8DFxQWenp6YPXu2/n1/f38AwD333AOZTKZ/XZdjx45h+PDhsLa2hqurK5566imUlpYCqD4dNXbsWACAXC6vN9xcf6qlZru3bt2Kbt26wc7ODnfccQcyMzP1yzz++OMYP3485syZA3d3dzg4OOCZZ55BZWWlwXZ89NFHBp8VGhqq39bGbOerr76KLl26wMbGBgEBAXjzzTeh0Wj078+ePRuhoaFYvnw5OnbsCDs7O0yfPh1arRbz58+Hp6cnPDw88N///tdgvTKZDF988QXuvPNOWFtbIyAgAOvXr6+3jmt7lZCQgKioKBQVFUEmk0Emk+m3ra4jUk5OTli5cqX+dWJiIvr06QMrKyv07dsXhw8frvV5N9uXiFoThhsiE/jqq69gYWGBxMREfPzxx1i4cCG+/PJL/fvR0dHYs2cP1qxZg7///hsPPPAA7rjjDpw5c0Y/T3l5OebNm4cvv/wSJ06cgIeHByZNmoTVq1fjk08+QVJSEpYsWQI7OzsAQGFhIYYPH44+ffrgwIED2LJlC7Kzs/Hggw/Wqs3W1hb79u3D/Pnz8fbbbyMuLg4AsH//fgDAihUrkJmZqX99vbKyMkRGRsLZ2Rn79+/HunXr8PvvvyM6OhoA8NJLL2HFihUAgMzMTINwcjPl5eVYsGABvvnmG/z555/IyMjASy+9ZDBPfHw8kpKSkJCQgNWrV2PDhg2YM2dOgz+jodsJAPb29li5ciVOnjyJjz/+GEuXLsWHH35oME9qaip+++03bNmyBatXr8ayZcswZswYXLhwAX/88QfmzZuHN954A/v27TNY7s0338R9992Ho0eP4tFHH8VDDz2EpKSkm9Y/cOBAfPTRR3BwcND39/oe1ae0tBR33XUXQkJCcPDgQcyePbvWsg3dl4haDaM+hpOIahk6dKjo1q2b0Ol0+mmvvvqq6NatmxBCiHPnzgmFQiEuXrxosNyIESNEbGysEEKIFStWCADiyJEj+veTk5MFABEXF1fn577zzjti1KhRBtPOnz8vAIjk5GR9bbfddpvBPP369ROvvvqq/jUAsXHjxhtu4//+9z/h7OwsSktL9dN+/fVXIZfLRVZWlhBCiI0bN4qb/Sen5unCNU9irtnulJQU/TyLFi0SarVa/3ry5MnCxcVFlJWV6ad98cUXws7OTmi1WiFE9VPjP/zwQ4PP6t27t8FT4xuynXV5//33RVhYmP71rFmzhI2NjSguLtZPi4yMFP7+/vp6hBCia9euYu7cuQaf/8wzzxisOzw8XEybNk0IIURaWpoAIA4fPiyEqLtXjo6Oteqra7scHR31T2FesmSJcHV1FVeuXNG//8UXXxh8VkP2JaLWhGNuiEzg1ltvNTgVM2DAAHzwwQfQarU4duwYtFotunTpYrBMRUUFXF1d9a+VSiV69eqlf33kyBEoFAoMHTq0zs88evQoduzYoT+Sc63U1FT95127TgDw8vJCTk5Oo7YvKSkJvXv3hq2trX7aoEGDoNPpkJycDLVa3aj1XcvGxgaBgYE3rK93796wsbHRvx4wYABKS0tx/vx5+Pn5Nfmz67J27Vp88sknSE1NRWlpKaqqquDg4GAwj7+/P+zt7fWv1Wo1FAqFwRgptVpdazsGDBhQ63VLX7GUlJSEXr16wcrKqt46GrovEbUWDDdEEistLYVCocDBgwehUCgM3rv2y8Ta2togIFlbW990vWPHjsW8efNqvefl5aX//5aWlgbvyWQy6HS6Rm1DS6qrPnHNeKWGkMvltZa5dpxMQ+3ZswePPvoo5syZg8jISDg6OmLNmjX44IMPblqzVH2uq1+N3faG7ktErQXDDZEJXD+2Yu/evejcuTMUCgX69OkDrVaLnJwcDB48uMHr7NmzJ3Q6Hf744w9ERETUev+WW27BDz/8AH9/f1hYNP1X3dLSElqt9obzdOvWDStXrkRZWZn+6M2uXbsgl8vRtWvXJn92Qx09ehRXrlzRB769e/fCzs4Ovr6+AAB3d3eDcT7FxcVIS0szWEdDtnP37t3w8/PD66+/rp927tw5Y20G9u7di0mTJhm87tOnT4OWVSqVddZ//bafOXMG5eXl+tfdunXDN998g6tXr+qP3uzdu9dgHcbal4hMhQOKiUwgIyMDMTExSE5OxurVq/Hpp59i5syZAIAuXbrg0UcfxaRJk7BhwwakpaUhMTERc+fOxa+//lrvOv39/TF58mQ88cQT2LRpE9LS0pCQkIDvv/8eADBjxgzk5+fj4Ycfxv79+5GamoqtW7ciKirqpl/i139OfHw8srKyUFBQUOc8jz76KKysrDB58mQcP34cO3bswLPPPouJEyc265RUQ1VWVuLJJ5/EyZMnsXnzZsyaNQvR0dH600DDhw/HN998g7/++gvHjh3D5MmTax0la8h2du7cGRkZGVizZg1SU1PxySefYOPGjUbbjnXr1mH58uU4ffo0Zs2ahcTERP2g7Jvx9/dHaWkp4uPjkZeXpw8ww4cPx2effYbDhw/jwIEDeOaZZwyOIj3yyCOQyWSYOnWqvn8LFiwwWLex9iUiU2G4ITKBSZMm4cqVK+jfvz9mzJiBmTNn4qmnntK/v2LFCkyaNAkvvvgiunbtivHjx2P//v3o2LHjDdf7xRdf4P7778f06dMRHByMqVOnoqysDADg7e2NXbt2QavVYtSoUejZsyeef/55ODk5Ner+OB988AHi4uLg6+tb71EEGxsbbN26Ffn5+ejXrx/uv/9+jBgxAp999lmDP6c5RowYgc6dO2PIkCGYMGECxo0bZ3BJe2xsLIYOHYq77roLY8aMwfjx4w3G8QAN285x48bhhRdeQHR0NEJDQ7F79268+eabRtuOOXPmYM2aNejVqxe+/vprrF69GiEhIQ1aduDAgXjmmWcwYcIEuLu7Y/78+frt8vX1xeDBg/HII4/gpZdeMhifZGdnh59//hnHjh1Dnz598Prrr9c6/WSsfYnIVGSisSeviahRhg0bhtDQ0Fr3WSHjePzxx1FYWNim7i5cF5lMho0bN2L8+PFSl0LU5jFyExERkVlhuCEiIiKzwtNSREREZFZ45IaIiIjMCsMNERERmRWGGyIiIjIrDDdERERkVhhuiIiIyKww3BAREZFZYbghIiIis8JwQ0RERGaF4YaIiIjMyv8DvRwUaAUBV4cAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.plot(x,y_amp)\n",
|
|
"plt.xlabel(\"percent of input amplitude\")\n",
|
|
"plt.ylabel(\"accuracy\")\n",
|
|
"plt.title(\"Amplitude additive Gaussian noise\")\n",
|
|
"plt.grid()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "9ddb5d78-ebda-4e08-b14a-a2515e618169",
|
|
"metadata": {},
|
|
"source": [
|
|
"### phase noise"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 21,
|
|
"id": "2397c16b-c560-432c-af7f-4b7065d78afa",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import types\n",
|
|
"\n",
|
|
"def to_class_labels(softmax_distibutions):\n",
|
|
" return torch.argmax(softmax_distibutions, dim=1).cpu()\n",
|
|
"\n",
|
|
"def test(inputs, targets, noise_percent=0.1):\n",
|
|
" def opt_conv(self, inputs, heights):\n",
|
|
" result = self.propagation(field=inputs, propagation_distance=self.propagation_distance)\n",
|
|
" result = result * heights \n",
|
|
" result.imag += torch.randn_like(result.imag)*(result.imag.abs().max()*noise_percent)\n",
|
|
" result = self.propagation(field=result, propagation_distance=self.propagation_distance)\n",
|
|
" amplitude = torch.sqrt(result.real**2 + result.imag**2)\n",
|
|
" return amplitude\n",
|
|
"\n",
|
|
" model.opt_conv = types.MethodType(opt_conv, model) \n",
|
|
" \n",
|
|
" predicted = []\n",
|
|
" batch_start = 0\n",
|
|
" while batch_start < test_data.shape[0]:\n",
|
|
" batch_end = min(batch_start + CONFIG.test_batch_size, test_data.shape[0])\n",
|
|
" batch_input = inputs[batch_start:batch_end].cuda() \n",
|
|
" with torch.inference_mode():\n",
|
|
" batch_output, _ = model(batch_input)\n",
|
|
" predicted.append(batch_output.cpu())\n",
|
|
" batch_start = batch_end\n",
|
|
" \n",
|
|
" predicted = torch.concat(predicted)\n",
|
|
" \n",
|
|
" test_acc = accuracy_score(to_class_labels(targets), to_class_labels(predicted))\n",
|
|
" return test_acc"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 22,
|
|
"id": "914fc19a-654c-484c-816f-2774e4ff6f54",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"x = np.arange(0, 1.0, 0.01)\n",
|
|
"y_phase = []\n",
|
|
"for p in x:\n",
|
|
" y_phase.append(np.mean([test(inputs, targets, noise_percent=p) for _ in range(5)]))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 23,
|
|
"id": "a31e2b8d-33f3-487c-a254-1687256508e1",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.plot(x,y_phase)\n",
|
|
"plt.xlabel(\"percent of input phase\")\n",
|
|
"plt.ylabel(\"accuracy\")\n",
|
|
"plt.title(\"Phase additive Gaussian noise\")\n",
|
|
"plt.grid()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4afaf4b3-cc22-433e-a601-d97995d99d69",
|
|
"metadata": {},
|
|
"source": [
|
|
"### both noise"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 24,
|
|
"id": "ac9c2a17-1e22-489b-ad82-e3fb45435862",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import types\n",
|
|
"\n",
|
|
"def to_class_labels(softmax_distibutions):\n",
|
|
" return torch.argmax(softmax_distibutions, dim=1).cpu()\n",
|
|
"\n",
|
|
"def test(inputs, targets, noise_percent=0.1):\n",
|
|
" def opt_conv(self, inputs, heights):\n",
|
|
" result = self.propagation(field=inputs, propagation_distance=self.propagation_distance)\n",
|
|
" result = result * heights \n",
|
|
" result.real += torch.randn_like(result.real)*(result.real.abs().max()*noise_percent)\n",
|
|
" result.imag += torch.randn_like(result.imag)*(result.imag.abs().max()*noise_percent)\n",
|
|
" result = self.propagation(field=result, propagation_distance=self.propagation_distance)\n",
|
|
" amplitude = torch.sqrt(result.real**2 + result.imag**2)\n",
|
|
" return amplitude\n",
|
|
"\n",
|
|
" model.opt_conv = types.MethodType(opt_conv, model) \n",
|
|
" \n",
|
|
" predicted = []\n",
|
|
" batch_start = 0\n",
|
|
" while batch_start < test_data.shape[0]:\n",
|
|
" batch_end = min(batch_start + CONFIG.test_batch_size, test_data.shape[0])\n",
|
|
" batch_input = inputs[batch_start:batch_end].cuda() \n",
|
|
" with torch.inference_mode():\n",
|
|
" batch_output, _ = model(batch_input)\n",
|
|
" predicted.append(batch_output.cpu())\n",
|
|
" batch_start = batch_end\n",
|
|
" \n",
|
|
" predicted = torch.concat(predicted)\n",
|
|
" \n",
|
|
" test_acc = accuracy_score(to_class_labels(targets), to_class_labels(predicted))\n",
|
|
" return test_acc"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 25,
|
|
"id": "cee148b3-af05-468e-b9ff-7987d7fe236e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"x = np.arange(0, 1.0, 0.01)\n",
|
|
"y_ampphase = []\n",
|
|
"for p in x:\n",
|
|
" y_ampphase.append(np.mean([test(inputs, targets, noise_percent=p) for _ in range(5)]))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 26,
|
|
"id": "f2c54d4d-9b8e-4ea2-bc4e-f7423856790e",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.plot(x,y_ampphase)\n",
|
|
"plt.xlabel(\"percent of input amplitude and phase\")\n",
|
|
"plt.ylabel(\"accuracy\")\n",
|
|
"plt.title(\"Amplitude/phase additive Gaussian noise\")\n",
|
|
"plt.grid()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "15e629ea-519a-482b-a8eb-83d988a2008e",
|
|
"metadata": {},
|
|
"source": [
|
|
"#### one layer at a time "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"id": "68257ed6-f844-44e1-a864-cf1e87ccc79e",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import types\n",
|
|
"from utils import pad_zeros, unpad_zeros\n",
|
|
"from torchvision.transforms.functional import resize, InterpolationMode\n",
|
|
"from einops import rearrange\n",
|
|
"\n",
|
|
"def to_class_labels(softmax_distibutions):\n",
|
|
" return torch.argmax(softmax_distibutions, dim=1).cpu()\n",
|
|
"\n",
|
|
"def test(inputs, targets, noise_percent=0.1, noise_layer_id=0):\n",
|
|
" def forward(self, image):\n",
|
|
" image = resize(\n",
|
|
" image, \n",
|
|
" size=(image.shape[-2]*self.resolution_scale_factor,\n",
|
|
" image.shape[-1]*self.resolution_scale_factor),\n",
|
|
" interpolation=InterpolationMode.NEAREST\n",
|
|
" )\n",
|
|
" # debug_out.append(image)\n",
|
|
" # 2\n",
|
|
" image = pad_zeros(\n",
|
|
" image, \n",
|
|
" size = (self.phase_mask_size, \n",
|
|
" self.phase_mask_size),\n",
|
|
" )\n",
|
|
" # 3 \n",
|
|
" x = image \n",
|
|
" for i, plate_heights in enumerate(self.height_maps): \n",
|
|
" x = self.opt_conv(x, plate_heights, i)\n",
|
|
" convolved = x\n",
|
|
" # 4\n",
|
|
" grid_to_depth = rearrange(\n",
|
|
" convolved,\n",
|
|
" \"b 1 (m ht) (n wt) -> b (m n) ht wt\",\n",
|
|
" ht = self.tile_size*self.resolution_scale_factor,\n",
|
|
" wt = self.tile_size*self.resolution_scale_factor,\n",
|
|
" m = self.tiles_per_dim,\n",
|
|
" n = self.tiles_per_dim\n",
|
|
" )\n",
|
|
" # 5\n",
|
|
" grid_to_depth = unpad_zeros(grid_to_depth, \n",
|
|
" (self.kernel_size_pixels*self.resolution_scale_factor, \n",
|
|
" self.kernel_size_pixels*self.resolution_scale_factor))\n",
|
|
" max_pool = torch.nn.functional.max_pool2d(\n",
|
|
" grid_to_depth,\n",
|
|
" kernel_size = self.kernel_size_pixels*self.resolution_scale_factor\n",
|
|
" ) \n",
|
|
" max_pool = rearrange(max_pool, \"b class_slots 1 1 -> b class_slots\", class_slots=self.class_slots)\n",
|
|
" max_pool /= max_pool.max(dim=1, keepdims=True).values\n",
|
|
" # 6\n",
|
|
" # CrossEntropy already has logsoftmax\n",
|
|
" # softmax = torch.nn.functional.log_softmax(max_pool, dim=1)\n",
|
|
" return max_pool, convolved\n",
|
|
"\n",
|
|
" def opt_conv(self, inputs, heights, i):\n",
|
|
" result = self.propagation(field=inputs, propagation_distance=self.propagation_distance)\n",
|
|
" result = result * heights\n",
|
|
" if i == noise_layer_id:\n",
|
|
" result.real += torch.randn_like(result.real)*(result.real.max()*noise_percent)\n",
|
|
" result.imag += torch.randn_like(result.imag)*(result.imag.max()*noise_percent)\n",
|
|
" result = self.propagation(field=result, propagation_distance=self.propagation_distance)\n",
|
|
" amplitude = torch.sqrt(result.real**2 + result.imag**2)\n",
|
|
" return amplitude\n",
|
|
"\n",
|
|
" model.forward = types.MethodType(forward, model)\n",
|
|
" model.opt_conv = types.MethodType(opt_conv, model) \n",
|
|
" \n",
|
|
" predicted = []\n",
|
|
" batch_start = 0\n",
|
|
" while batch_start < test_data.shape[0]:\n",
|
|
" batch_end = min(batch_start + CONFIG.test_batch_size, test_data.shape[0])\n",
|
|
" batch_input = inputs[batch_start:batch_end].cuda() \n",
|
|
" with torch.inference_mode():\n",
|
|
" batch_output, _ = model(batch_input)\n",
|
|
" predicted.append(batch_output.cpu())\n",
|
|
" batch_start = batch_end\n",
|
|
" \n",
|
|
" predicted = torch.concat(predicted)\n",
|
|
" \n",
|
|
" test_acc = accuracy_score(to_class_labels(targets), to_class_labels(predicted))\n",
|
|
" return test_acc"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"id": "30526a54-7653-4112-8bc1-c97611f7fca7",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"if CONFIG.layers > 1:\n",
|
|
" x = np.arange(0, 1.0, 0.01)\n",
|
|
" y_layer = []\n",
|
|
" for i in range(CONFIG.layers):\n",
|
|
" tmp_y = []\n",
|
|
" for p in x:\n",
|
|
" tmp_y.append(np.mean([test(inputs, targets, noise_percent=p, noise_layer_id=i) for _ in range(5)]))\n",
|
|
" y_layer.append(tmp_y)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 29,
|
|
"id": "c2aca86e-3690-4a3c-a7f9-c7b7f71dd0a4",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"if CONFIG.layers > 1:\n",
|
|
" for i in range(CONFIG.layers):\n",
|
|
" plt.plot(x, y_layer[i], label=f'layer {i}')\n",
|
|
" plt.xlabel(\"percent of input amplitude and phase\")\n",
|
|
" plt.ylabel(\"accuracy\")\n",
|
|
" plt.title(\"One optical layer additive Gaussian noise\")\n",
|
|
" plt.grid()\n",
|
|
" plt.legend()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "76d3a16e-4f14-4301-9851-0bbeefc92396",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"id": "20449921-ed54-41f8-b21b-0042403a45c5",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/tmp/ipykernel_22518/2043102426.py:13: RuntimeWarning: divide by zero encountered in divide\n",
|
|
" plt.gca().set_xticks(x_label_values, [f\"{tt:.2f}\" for tt in 20*np.log(1/x_label_values)]);\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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uych8/PjxIkTb51S4W2y8/4J+ieuRAkfnBYtWrBq1Sqsra0pW7Ysx44dY/fu3RQpUkSj3MiRI1m1ahVNmjRh8ODB8u3WLi4uXLx4US6XMe/QtGnTaNGiBc2aNePcuXNs375d6wtzxIgRbNmyhRYtWsi3ycfHx3Pp0iWCg4MJDw/H1taWli1bUrduXUaPHk14eDhly5Zlw4YNOo9NKly4MBs3bqRly5ZUqlSJjh07UqNGDQwNDbl37548DcDr4yF0bZfGjRtTokQJevbsyYgRI1CpVCxbtgw7OzuNPyorV67k559/pk2bNnh4ePDy5UuWLl2KlZWV/Eu6V69eREVF8dlnn1G8eHHu3r3LggULqFy5sjye6E1eXl54eHgwfPhwHjx4gJWVFX///Xeux/LkxujRo/nzzz9p2rQpgwYNonDhwqxcuZKwsDD+/vtvlMrMf0/euHGDhg0b0qFDB8qWLYuBgQEbN27kyZMndOzYEQArKysWLVpE165dqVq1Kh07dpTbeuvWrdStWzfPu4hy66effqJevXpUqFCB3r174+7uzpMnTzh27Bj379/nwoULgO7nHKR/dr7++mvatm1Lo0aNuHDhAjt37szxOZcd8+fPp169elStWpU+ffrg5uZGeHg4W7du5fz58xplAwMDadeuHQCTJ0/O1n6Sk5Plz8f169f5+eefqVevHp9//nmW27Ro0YINGzbQpk0bmjdvTlhYGIsXL6Zs2bKZjpPUha7vn5AH3v8NgYLwdtHR0VL37t0lW1tbycLCQgoICJCuXbumdWu0JEnSxYsXJV9fX8nExERycnKSJk+eLP32229at1unpaVJEydOlBwdHSVTU1PJz89Punz5cqZ1vnz5UhozZoxUsmRJycjISLK1tZXq1KkjzZo1S+N25ufPn0tdu3aVrKysJGtra6lr167SuXPndJriIMOjR4+kESNGSGXLlpVMTU0lY2Njyd3dXQoMDNS4bT+77XLmzBnJ29tbMjIykkqUKCHNmTNHa4qDs2fPSp06dZJKlCghGRsbS/b29lKLFi2k06dPy/UEBwdLjRs3luzt7eW6+vbtKz169Eguk9kt+qGhoZK/v79kYWEh2draSr1795YuXLig1TbdunWTzM3Ntdolq2ka3uTi4iI1b95ca/mbt5VLkiTdvn1bateunWRjYyOZmJhINWvWlP7991+N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ZujQoXh7e+Pm5kbXrl3ZsGFDueLetGkTd955JwEBAaXGk52dzcSJE6lbty6Ojo40bdqUBQsWXLfOZcuW0a5dOzw8PHB2diY8PJyvv/66WJlXX32Vxo0b4+zsjKenJ3379iU2NrZcMZcn7orUbzabefnllwkJCcHR0ZH69eszY8aMEvfgio+PZ8iQIbi7u+Ps7Ez79u05derUTcdcntf6amVddxV9v1xPcHBwife2pmlMmDCh1PL79+9n+PDh1uPmzZtXosz13vNV4VqfhdeyZMkSNE1j2LBhJfZV9Hoojxv5XLmsPOe7rGuxIsr6TrjSwoUL6datG56entb359XlK/J+uBGSRN3CvLy8cHV1LXf5Y8eO0bVrV4KCgqhVq1aVxLRt2zY+/vhjWrZsWWx7TEwMAwYMoH///mzdupVt27YxceLE6y6Xv3TpUqZMmcIrr7zCzp07adWqFZGRkaSkpBQrN27cOBITE61/c+bMKVesdevWZdasWezYsYPt27fTu3dvhg4dyv79+zl37hznzp1j7ty57Nu3jy+//JLVq1fz8MMPX7fOnJwcunbtyuzZs6+5v3///miaxvr169m8eTMFBQXceeedWCyWMmPeuHEjEyZM4I8//iAqKgqTyUT//v3JyckpUXbevHnlvp3QnDlzeO+991iwYAGxsbE4OzsTGRlJXl6etczgwYMpLCxk/fr17Nixg1atWjF48GCSkpLKrD8nJ4dWrVoxf/78UvdPmTKF1atX88033xAfH8/kyZOZOHEiK1asuGadXl5evPjii8TExLBnzx7Gjh3L2LFj+fXXX61lGjVqxAcffMDevXv5/fffCQ4Opn///pw/f75c56WsuCtS/+zZs/noo4/44IMPiI+PZ/bs2cyZM4f333/fWubye7Vx48ZER0ezZ88eXn75ZRwcHG465vK81lcr67qr6PvlerZt21bsfR0VFQXAiBEjSi2fm5tLaGgos2bNws/Pr9Qy13vPV7ZrfRZey4kTJ3jmmWfo1q1biX03cz2Ux418rlxWnvNd1rV4o8r7nXBZdHQ0999/Pxs2bCAmJobAwED69+/P2bNnrWUq8n64IUrcsnr06KEmTZqklFIqKChIvfHGG2rs2LHKxcVFBQYGqo8//thaFij298orr1R6PFlZWaphw4YqKiqqWGxKKRUREaFeeumlG6qvQ4cOasKE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TpwgNTW11PP89NNPs27dOmbMmMHhw4dZtGgRH3zwwTWfnxC3tZqelCWEuPXl5eWpF154QbVp00a5u7srJycnFRYWpl566SWVm5trLccVE6aVUmrz5s2qZcuWymg0qrZt26rFixcrQB08eFApVXLSslJK7dq1SwEqISFBKVU0UbpXr17K0dFRBQYGqg8++KDEBOiyJpanpKSofv36KRcXFwWoDRs2KKWU2rNnj+rVq5dycHBQXl5eaty4cSorK+ua9ZQnXqWU+vDDD1VoaKgyGAyqUaNG6quvvipWz5Xn6ZNPPlHh4eHK2dlZubm5qT59+qidO3day2ZmZqonnnhCBQQEKIPBoAIDA9UDDzygTp06VWqMlyeWX568f9mFCxfU0KFDlYuLi/Lx8VEvvfSSGj16dLEJ94cOHVIdO3ZUjo6O1udU2nP+4YcfVNOmTZXBYFD16tVTb7755jXPmRC3M00ppWoofxNC/M18++23jB07loyMDBwdHWs6HCGEuCkysVwIUWW++uorQkNDqVOnDrt37+b555/n3nvvlQRKCHFbkCRKCFFlkpKSmDZtGklJSfj7+zNixAjeeOONmg5LCCEqhQznCSGEEEJUgPw6TwghhBCiAiSJEkIIIYSoAEmihBBCCCEqQJIoIYQQQogKkCRKCCGEEKICJIkSQgghhKgASaKEEEIIISpAkighhBBCiAr4fynTAekSJvEpAAAAAElFTkSuQmCC",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"plt.plot(x, y_amp, label='amplitude all layers')\n",
|
|
"plt.plot(x, y_phase, label='phase all layers')\n",
|
|
"plt.plot(x, y_ampphase, label='amplitude and phase all layers')\n",
|
|
"if CONFIG.layers > 1:\n",
|
|
" for i in range(CONFIG.layers):\n",
|
|
" plt.plot(x, y_layer[i], label=f'amplitude and phase at layer {i}')\n",
|
|
"plt.xlabel(\"Signal to noise ratio\")\n",
|
|
"plt.ylabel(\"accuracy\")\n",
|
|
"plt.title(f\"Relation of accuracy to the amount of\\nadded Gaussian noise in frequency plane\\nfor the system with {CONFIG.layers} optical layer{'s' if CONFIG.layers >1 else ''}\")\n",
|
|
"plt.grid()\n",
|
|
"plt.legend()\n",
|
|
"x_label_values = np.concatenate([x[::10], [x[-1]]])\n",
|
|
"plt.gca().set_xticks(x_label_values, [f\"{tt:.2f}\" for tt in 20*np.log(1/x_label_values)]);\n",
|
|
"yticks = np.append(plt.gca().get_yticks()[:-2], [np.array(y_ampphase).min(), np.array(y_ampphase).max()])\n",
|
|
"plt.gca().set_yticks(yticks[1:]);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "c1ee6441-6e86-4722-b6d4-2d4b1e026897",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "cfffa146-d7ba-4c51-b42e-4f4be1bd3b9d",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1c59c430-9f30-4aa1-a3fc-9d77174faa98",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "740d676a-0c60-4953-996f-4770aaa57159",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.14"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|