Skip to content

Instantly share code, notes, and snippets.

@jwuphysics
Created January 5, 2021 17:46
Show Gist options
  • Select an option

  • Save jwuphysics/8455ad4c40bcc6fec3b4bd4570f86afb to your computer and use it in GitHub Desktop.

Select an option

Save jwuphysics/8455ad4c40bcc6fec3b4bd4570f86afb to your computer and use it in GitHub Desktop.
Siamese networks for galaxy CNNs.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"from fastai2.basics import *\n",
"from fastai2.vision.all import *\n",
"from mish_cuda import MishCuda\n",
"\n",
"import PIL\n",
"import random\n",
"\n",
"ROOT = Path('../').resolve()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# SiameseDataset"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"class SiameseDataset(torch.utils.data.Dataset):\n",
" def __init__(self, df, is_valid=False):\n",
" self.df_, self.is_valid = df, is_valid\n",
" \n",
" self.obj = list(self.df_.objID)\n",
" self.labels = list(self.df_.metallicity)\n",
" \n",
" def __getitem__(self, i):\n",
" \n",
" obj1, label1 = self.obj[i], self.labels[i]\n",
" obj2, label2 = random.choice(list(zip(self.obj, self.labels)))\n",
" img1, img2 = open_image(obj1), open_image(obj2)\n",
" delta = label1 - label2\n",
" return (img1, img2, delta)\n",
" \n",
" def __len__(self): return len(self.obj)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"df = pd.read_csv(f'{ROOT}/data/master.csv', dtype={'objID': str}).rename({'oh_p50': 'metallicity'}, axis=1)\n",
"\n",
"ds = SiameseDataset(df)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"('1237660634924122182', 8.994528)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"random.choice(list(zip(df.objID, df.metallicity)))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"# test-train split\n",
"np.random.seed(12345)\n",
"idxs = np.random.permutation(range(len(df)))\n",
"cut = int(0.8 * len(df))\n",
"train_df = df.iloc[idxs[:cut]]\n",
"valid_df = df.iloc[idxs[cut:]]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"train_ds = SiameseDataset(train_df)\n",
"valid_ds = SiameseDataset(valid_df, is_valid=True)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"dls = DataLoaders.from_dsets(train_ds, valid_ds, path=ROOT, bs=128)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([128, 3, 224, 224])"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dls.one_batch()[0].shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Custom datablocks and loaders"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## SiameseTransform"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"def open_image(objID, size=112):\n",
" img = PILImage.create(f'{ROOT}/images/{objID}.jpg')\n",
" img = CropPad(size)(img)\n",
" return TensorImage(image2tensor(img)) / 255.\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [],
"source": [
"class SiameseTransform(Transform):\n",
" def __init__(self, df, is_valid=False):\n",
" self.df_, self.is_valid = df, is_valid\n",
" \n",
" self.obj = list(self.df_.objID)\n",
" self.labels = list(self.df_.metallicity)\n",
" \n",
" def encodes(self, i):\n",
" \n",
" obj1, label1 = self.obj[i], self.labels[i]\n",
" obj2, label2 = random.choice(list(zip(self.obj, self.labels)))\n",
" img1, img2 = open_image(obj1), open_image(obj2)\n",
" delta = label1 - label2\n",
" return (TensorImage(img1), TensorImage(img2), delta)\n",
" \n"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"train_tl= TfmdLists(range(len(train_df)), Pipeline(SiameseTransform(train_df)))\n",
"valid_tl= TfmdLists(range(len(valid_df)), SiameseTransform(valid_df, is_valid=True))"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"dls = DataLoaders.from_dsets(\n",
" train_tl, \n",
" valid_tl, \n",
" after_batch=aug_transforms(max_zoom=1., flip_vert=True, max_lighting=0., max_warp=0.) + [Normalize]\n",
")\n",
"\n",
"dls = dls.cuda()"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"x1, x2, y = dls.one_batch()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([64, 3, 112, 112])"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x1.shape"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([-0.11500481, -0.05373557, -0.1082332 ], dtype=float32),\n",
" array([0.8421997 , 0.96039397, 0.8181645 ], dtype=float32))"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"batch_stats = x1.mean((0,2,3)).detach().cpu().numpy(), x1.std((0,2,3)).detach().cpu().numpy()\n",
"batch_stats"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Model"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [],
"source": [
"class SiameseModel(Module):\n",
" def __init__(self, encoder, head):\n",
" self.encoder,self.head = encoder,head\n",
" \n",
" def forward(self, x1, x2):\n",
" ftrs = torch.cat([self.encoder(x1), self.encoder(x2)], dim=1)\n",
" return self.head(ftrs)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'cut': -4,\n",
" 'split': <function fastai2.vision.learner._xresnet_split(m)>,\n",
" 'stats': ([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])}"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_meta[xresnet18]"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
"encoder = create_body(xresnet18, cut=-4)"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [],
"source": [
"head = create_head(512*4, 1, ps=0.5)\n",
"model = SiameseModel(encoder, head)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [],
"source": [
"# split model to freeze stem/body\n",
"def siamese_splitter(model):\n",
" return [params(model.encoder), params(model.head)]"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
"def root_mean_squared_error(p, y): \n",
" return torch.sqrt(F.mse_loss(p.reshape(-1).float(), y.reshape(-1).float()))"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [],
"source": [
"# insert batch stats here\n",
"dls = DataLoaders.from_dsets(\n",
" train_tl, \n",
" valid_tl, \n",
" after_batch=aug_transforms(max_zoom=1., flip_vert=True, max_lighting=0., max_warp=0.) + [Normalize.from_stats(*batch_stats)]\n",
")\n",
"\n",
"dls = dls.cuda()"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"learn = Learner(\n",
" dls, \n",
" model, \n",
" loss_func=root_mean_squared_error\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"SiameseModel (Input shape: ['64 x 3 x 112 x 112', '64 x 3 x 112 x 112'])\n",
"================================================================\n",
"Layer (type) Output Shape Param # Trainable \n",
"================================================================\n",
"Conv2d 64 x 32 x 56 x 56 864 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 32 x 56 x 56 64 True \n",
"________________________________________________________________\n",
"ReLU 64 x 32 x 56 x 56 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 32 x 56 x 56 9,216 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 32 x 56 x 56 64 True \n",
"________________________________________________________________\n",
"ReLU 64 x 32 x 56 x 56 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 64 x 56 x 56 18,432 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 64 x 56 x 56 128 True \n",
"________________________________________________________________\n",
"ReLU 64 x 64 x 56 x 56 0 False \n",
"________________________________________________________________\n",
"MaxPool2d 64 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 64 x 28 x 28 36,864 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 64 x 28 x 28 128 True \n",
"________________________________________________________________\n",
"ReLU 64 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 64 x 28 x 28 36,864 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 64 x 28 x 28 128 True \n",
"________________________________________________________________\n",
"Sequential 64 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"ReLU 64 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 64 x 28 x 28 36,864 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 64 x 28 x 28 128 True \n",
"________________________________________________________________\n",
"ReLU 64 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 64 x 28 x 28 36,864 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 64 x 28 x 28 128 True \n",
"________________________________________________________________\n",
"Sequential 64 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"ReLU 64 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 128 x 14 x 14 73,728 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 128 x 14 x 14 256 True \n",
"________________________________________________________________\n",
"ReLU 64 x 128 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 128 x 14 x 14 147,456 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 128 x 14 x 14 256 True \n",
"________________________________________________________________\n",
"AvgPool2d 64 x 64 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 128 x 14 x 14 8,192 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 128 x 14 x 14 256 True \n",
"________________________________________________________________\n",
"ReLU 64 x 128 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 128 x 14 x 14 147,456 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 128 x 14 x 14 256 True \n",
"________________________________________________________________\n",
"ReLU 64 x 128 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 128 x 14 x 14 147,456 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 128 x 14 x 14 256 True \n",
"________________________________________________________________\n",
"Sequential 64 x 128 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"ReLU 64 x 128 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 256 x 7 x 7 294,912 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 256 x 7 x 7 512 True \n",
"________________________________________________________________\n",
"ReLU 64 x 256 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 256 x 7 x 7 589,824 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 256 x 7 x 7 512 True \n",
"________________________________________________________________\n",
"AvgPool2d 64 x 128 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 256 x 7 x 7 32,768 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 256 x 7 x 7 512 True \n",
"________________________________________________________________\n",
"ReLU 64 x 256 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 256 x 7 x 7 589,824 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 256 x 7 x 7 512 True \n",
"________________________________________________________________\n",
"ReLU 64 x 256 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 256 x 7 x 7 589,824 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 256 x 7 x 7 512 True \n",
"________________________________________________________________\n",
"Sequential 64 x 256 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"ReLU 64 x 256 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 512 x 4 x 4 1,179,648 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 512 x 4 x 4 1,024 True \n",
"________________________________________________________________\n",
"ReLU 64 x 512 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 512 x 4 x 4 2,359,296 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 512 x 4 x 4 1,024 True \n",
"________________________________________________________________\n",
"AvgPool2d 64 x 256 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 512 x 4 x 4 131,072 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 512 x 4 x 4 1,024 True \n",
"________________________________________________________________\n",
"ReLU 64 x 512 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 512 x 4 x 4 2,359,296 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 512 x 4 x 4 1,024 True \n",
"________________________________________________________________\n",
"ReLU 64 x 512 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"Conv2d 64 x 512 x 4 x 4 2,359,296 True \n",
"________________________________________________________________\n",
"BatchNorm2d 64 x 512 x 4 x 4 1,024 True \n",
"________________________________________________________________\n",
"Sequential 64 x 512 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"ReLU 64 x 512 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"AdaptiveAvgPool2d 64 x 1024 x 1 x 1 0 False \n",
"________________________________________________________________\n",
"AdaptiveMaxPool2d 64 x 1024 x 1 x 1 0 False \n",
"________________________________________________________________\n",
"Flatten 64 x 2048 0 False \n",
"________________________________________________________________\n",
"BatchNorm1d 64 x 2048 4,096 True \n",
"________________________________________________________________\n",
"Dropout 64 x 2048 0 False \n",
"________________________________________________________________\n",
"Linear 64 x 512 1,048,576 True \n",
"________________________________________________________________\n",
"ReLU 64 x 512 0 False \n",
"________________________________________________________________\n",
"BatchNorm1d 64 x 512 1,024 True \n",
"________________________________________________________________\n",
"Dropout 64 x 512 0 False \n",
"________________________________________________________________\n",
"Linear 64 x 1 512 True \n",
"________________________________________________________________\n",
"\n",
"Total params: 12,249,952\n",
"Total trainable params: 12,249,952\n",
"Total non-trainable params: 0\n",
"\n",
"Optimizer used: <function Adam at 0x7fd257832320>\n",
"Loss function: <function root_mean_squared_error at 0x7fd238a29200>\n",
"\n",
"Callbacks:\n",
" - TrainEvalCallback\n",
" - Recorder\n",
" - ProgressCallback"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"learn.summary()"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"SuggestedLRs(lr_min=0.0033113110810518267, lr_steep=1.0964781722577754e-06)"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"learn.lr_find()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.188161</td>\n",
" <td>0.153620</td>\n",
" <td>14:15</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>0.144471</td>\n",
" <td>0.133487</td>\n",
" <td>11:52</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>0.140457</td>\n",
" <td>0.129294</td>\n",
" <td>12:03</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>0.131806</td>\n",
" <td>0.125826</td>\n",
" <td>12:19</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>0.129396</td>\n",
" <td>0.124153</td>\n",
" <td>12:00</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"learn.fit_one_cycle(5, 3e-3)"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"learn.save('siamese-xresnet18_size-112_5ep')"
]
},
{
"cell_type": "code",
"execution_count": 202,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (2): ConvLayer(\n",
" (0): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (3): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
" (4): Sequential(\n",
" (0): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential()\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" (1): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential()\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" )\n",
" (5): Sequential(\n",
" (0): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential(\n",
" (0): AvgPool2d(kernel_size=2, stride=2, padding=0)\n",
" (1): ConvLayer(\n",
" (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" (1): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential()\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" )\n",
" (6): Sequential(\n",
" (0): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential(\n",
" (0): AvgPool2d(kernel_size=2, stride=2, padding=0)\n",
" (1): ConvLayer(\n",
" (0): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" (1): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential()\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" )\n",
" (7): Sequential(\n",
" (0): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential(\n",
" (0): AvgPool2d(kernel_size=2, stride=2, padding=0)\n",
" (1): ConvLayer(\n",
" (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" (1): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential()\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" )\n",
")"
]
},
"execution_count": 202,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"learn.model.encoder"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Transfer learn?"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [],
"source": [
"dblock = DataBlock(\n",
" blocks=(ImageBlock, RegressionBlock),\n",
" get_x=ColReader(['objID'], pref=f'{ROOT}/images/', suff='.jpg'),\n",
" get_y=ColReader(['metallicity']),\n",
" splitter=RandomSplitter(0.2),\n",
" item_tfms=[CropPad(144), RandomCrop(112)],\n",
" batch_tfms=aug_transforms(max_zoom=1., flip_vert=True, max_lighting=0., max_warp=0.) + [Normalize],\n",
")\n",
"\n",
"cnn_dls = ImageDataLoaders.from_dblock(dblock, df, path=ROOT, bs=128)"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [],
"source": [
"class CNNModel(Module):\n",
" def __init__(self, encoder, head):\n",
" self.encoder,self.head = encoder,head\n",
" \n",
" def forward(self, x):\n",
" return self.head(self.encoder(x))\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [],
"source": [
"cnn_head = create_head(512*2, 1, ps=0)\n"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [],
"source": [
"cnn_model = CNNModel(learn.model.encoder, cnn_head)"
]
},
{
"cell_type": "code",
"execution_count": 211,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"CNNModel(\n",
" (encoder): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(3, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (2): ConvLayer(\n",
" (0): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (3): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
" (4): Sequential(\n",
" (0): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential()\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" (1): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential()\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" )\n",
" (5): Sequential(\n",
" (0): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(64, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential(\n",
" (0): AvgPool2d(kernel_size=2, stride=2, padding=0)\n",
" (1): ConvLayer(\n",
" (0): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" (1): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential()\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" )\n",
" (6): Sequential(\n",
" (0): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential(\n",
" (0): AvgPool2d(kernel_size=2, stride=2, padding=0)\n",
" (1): ConvLayer(\n",
" (0): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" (1): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential()\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" )\n",
" (7): Sequential(\n",
" (0): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(256, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential(\n",
" (0): AvgPool2d(kernel_size=2, stride=2, padding=0)\n",
" (1): ConvLayer(\n",
" (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
" (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" (1): ResBlock(\n",
" (convpath): Sequential(\n",
" (0): ConvLayer(\n",
" (0): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (2): ReLU()\n",
" )\n",
" (1): ConvLayer(\n",
" (0): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
" (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" )\n",
" )\n",
" (idpath): Sequential()\n",
" (act): ReLU(inplace=True)\n",
" )\n",
" )\n",
" )\n",
" (head): Sequential(\n",
" (0): AdaptiveConcatPool2d(\n",
" (ap): AdaptiveAvgPool2d(output_size=1)\n",
" (mp): AdaptiveMaxPool2d(output_size=1)\n",
" )\n",
" (1): Flatten(full=False)\n",
" (2): BatchNorm1d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (3): Linear(in_features=1024, out_features=512, bias=False)\n",
" (4): ReLU(inplace=True)\n",
" (5): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (6): Linear(in_features=512, out_features=1, bias=False)\n",
" )\n",
")"
]
},
"execution_count": 211,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cnn_model"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"learn = Learner(\n",
" cnn_dls, \n",
" cnn_model, \n",
" loss_func=root_mean_squared_error,\n",
" opt_func=ranger\n",
")\n",
"\n",
"learn.freeze()"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [],
"source": [
"learn.freeze_to(-5)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"CNNModel (Input shape: ['128 x 3 x 112 x 112'])\n",
"================================================================\n",
"Layer (type) Output Shape Param # Trainable \n",
"================================================================\n",
"Conv2d 128 x 32 x 56 x 56 864 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 32 x 56 x 56 64 True \n",
"________________________________________________________________\n",
"ReLU 128 x 32 x 56 x 56 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 32 x 56 x 56 9,216 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 32 x 56 x 56 64 True \n",
"________________________________________________________________\n",
"ReLU 128 x 32 x 56 x 56 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 64 x 56 x 56 18,432 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 64 x 56 x 56 128 True \n",
"________________________________________________________________\n",
"ReLU 128 x 64 x 56 x 56 0 False \n",
"________________________________________________________________\n",
"MaxPool2d 128 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 64 x 28 x 28 36,864 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 64 x 28 x 28 128 True \n",
"________________________________________________________________\n",
"ReLU 128 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 64 x 28 x 28 36,864 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 64 x 28 x 28 128 True \n",
"________________________________________________________________\n",
"Sequential 128 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"ReLU 128 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 64 x 28 x 28 36,864 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 64 x 28 x 28 128 True \n",
"________________________________________________________________\n",
"ReLU 128 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 64 x 28 x 28 36,864 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 64 x 28 x 28 128 True \n",
"________________________________________________________________\n",
"Sequential 128 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"ReLU 128 x 64 x 28 x 28 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 128 x 14 x 14 73,728 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 128 x 14 x 14 256 True \n",
"________________________________________________________________\n",
"ReLU 128 x 128 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 128 x 14 x 14 147,456 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 128 x 14 x 14 256 True \n",
"________________________________________________________________\n",
"AvgPool2d 128 x 64 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 128 x 14 x 14 8,192 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 128 x 14 x 14 256 True \n",
"________________________________________________________________\n",
"ReLU 128 x 128 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 128 x 14 x 14 147,456 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 128 x 14 x 14 256 True \n",
"________________________________________________________________\n",
"ReLU 128 x 128 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 128 x 14 x 14 147,456 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 128 x 14 x 14 256 True \n",
"________________________________________________________________\n",
"Sequential 128 x 128 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"ReLU 128 x 128 x 14 x 14 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 256 x 7 x 7 294,912 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 256 x 7 x 7 512 True \n",
"________________________________________________________________\n",
"ReLU 128 x 256 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 256 x 7 x 7 589,824 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 256 x 7 x 7 512 True \n",
"________________________________________________________________\n",
"AvgPool2d 128 x 128 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 256 x 7 x 7 32,768 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 256 x 7 x 7 512 True \n",
"________________________________________________________________\n",
"ReLU 128 x 256 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 256 x 7 x 7 589,824 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 256 x 7 x 7 512 True \n",
"________________________________________________________________\n",
"ReLU 128 x 256 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 256 x 7 x 7 589,824 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 256 x 7 x 7 512 True \n",
"________________________________________________________________\n",
"Sequential 128 x 256 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"ReLU 128 x 256 x 7 x 7 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 512 x 4 x 4 1,179,648 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 512 x 4 x 4 1,024 True \n",
"________________________________________________________________\n",
"ReLU 128 x 512 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 512 x 4 x 4 2,359,296 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 512 x 4 x 4 1,024 True \n",
"________________________________________________________________\n",
"AvgPool2d 128 x 256 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 512 x 4 x 4 131,072 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 512 x 4 x 4 1,024 True \n",
"________________________________________________________________\n",
"ReLU 128 x 512 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 512 x 4 x 4 2,359,296 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 512 x 4 x 4 1,024 True \n",
"________________________________________________________________\n",
"ReLU 128 x 512 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"Conv2d 128 x 512 x 4 x 4 2,359,296 True \n",
"________________________________________________________________\n",
"BatchNorm2d 128 x 512 x 4 x 4 1,024 True \n",
"________________________________________________________________\n",
"Sequential 128 x 512 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"ReLU 128 x 512 x 4 x 4 0 False \n",
"________________________________________________________________\n",
"AdaptiveAvgPool2d 128 x 512 x 1 x 1 0 False \n",
"________________________________________________________________\n",
"AdaptiveMaxPool2d 128 x 512 x 1 x 1 0 False \n",
"________________________________________________________________\n",
"Flatten 128 x 1024 0 False \n",
"________________________________________________________________\n",
"BatchNorm1d 128 x 1024 2,048 True \n",
"________________________________________________________________\n",
"Linear 128 x 512 524,288 True \n",
"________________________________________________________________\n",
"ReLU 128 x 512 0 False \n",
"________________________________________________________________\n",
"BatchNorm1d 128 x 512 1,024 True \n",
"________________________________________________________________\n",
"Linear 128 x 1 512 True \n",
"________________________________________________________________\n",
"\n",
"Total params: 11,723,616\n",
"Total trainable params: 11,723,616\n",
"Total non-trainable params: 0\n",
"\n",
"Optimizer used: <function ranger at 0x7fd257834170>\n",
"Loss function: <function root_mean_squared_error at 0x7fd238a29200>\n",
"\n",
"Model frozen up to parameter group number -4\n",
"\n",
"Callbacks:\n",
" - TrainEvalCallback\n",
" - Recorder\n",
" - ProgressCallback"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"learn.summary()"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"SuggestedLRs(lr_min=0.06309573650360108, lr_steep=0.3630780577659607)"
]
},
"execution_count": 79,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"learn.lr_find()"
]
},
{
"cell_type": "code",
"execution_count": 220,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.694909</td>\n",
" <td>1.432587</td>\n",
" <td>01:29</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.108113</td>\n",
" <td>0.106551</td>\n",
" <td>01:28</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# high lr?\n",
"learn.fine_tune(1, base_lr=3e-2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Another attempt with lower lr"
]
},
{
"cell_type": "code",
"execution_count": 221,
"metadata": {},
"outputs": [],
"source": [
"learn = Learner(\n",
" dls, \n",
" model, \n",
" loss_func=root_mean_squared_error\n",
")\n",
"\n",
"learn = learn.load('siamese-xresnet18_5ep');"
]
},
{
"cell_type": "code",
"execution_count": 222,
"metadata": {},
"outputs": [],
"source": [
"cnn_head = create_head(512*2, 1, ps=0)\n",
"cnn_model = CNNModel(learn.model.encoder, cnn_head)"
]
},
{
"cell_type": "code",
"execution_count": 223,
"metadata": {},
"outputs": [],
"source": [
"learn = Learner(\n",
" cnn_dls, \n",
" cnn_model, \n",
" loss_func=root_mean_squared_error\n",
")\n",
"\n",
"learn.freeze()"
]
},
{
"cell_type": "code",
"execution_count": 224,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.186704</td>\n",
" <td>0.213321</td>\n",
" <td>01:29</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.098838</td>\n",
" <td>0.093982</td>\n",
" <td>01:29</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"learn.fine_tune(1, base_lr=1e-3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Discriminative learning rate"
]
},
{
"cell_type": "code",
"execution_count": 240,
"metadata": {},
"outputs": [],
"source": [
"learn = Learner(\n",
" dls, \n",
" model, \n",
" loss_func=root_mean_squared_error\n",
")\n",
"\n",
"learn = learn.load('siamese-xresnet18_5ep');"
]
},
{
"cell_type": "code",
"execution_count": 241,
"metadata": {},
"outputs": [],
"source": [
"cnn_head = create_head(512*2, 1, ps=0)\n",
"cnn_model = CNNModel(learn.model.encoder, cnn_head)"
]
},
{
"cell_type": "code",
"execution_count": 242,
"metadata": {},
"outputs": [],
"source": [
"learn = Learner(\n",
" cnn_dls, \n",
" cnn_model, \n",
" loss_func=root_mean_squared_error\n",
")\n",
"\n",
"learn.freeze_to(-4)"
]
},
{
"cell_type": "code",
"execution_count": 243,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.128863</td>\n",
" <td>0.134146</td>\n",
" <td>01:28</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"learn.fit_one_cycle(1, 3e-2)"
]
},
{
"cell_type": "code",
"execution_count": 244,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.121713</td>\n",
" <td>0.113839</td>\n",
" <td>01:28</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>0.110108</td>\n",
" <td>0.108692</td>\n",
" <td>01:28</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"learn.unfreeze()\n",
"learn.fit_one_cycle(2, slice(1e-5, 1e-3))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## More training while frozen (+ ranger)"
]
},
{
"cell_type": "code",
"execution_count": 249,
"metadata": {},
"outputs": [],
"source": [
"learn = Learner(\n",
" dls, \n",
" model, \n",
" loss_func=root_mean_squared_error\n",
")\n",
"\n",
"learn = learn.load('siamese-xresnet18_5ep');"
]
},
{
"cell_type": "code",
"execution_count": 250,
"metadata": {},
"outputs": [],
"source": [
"cnn_head = create_head(512*2, 1, ps=0)\n",
"cnn_model = CNNModel(learn.model.encoder, cnn_head)"
]
},
{
"cell_type": "code",
"execution_count": 251,
"metadata": {},
"outputs": [],
"source": [
"learn = Learner(\n",
" cnn_dls, \n",
" cnn_model, \n",
" opt_func=ranger,\n",
" loss_func=root_mean_squared_error\n",
")\n",
"\n",
"learn.freeze()"
]
},
{
"cell_type": "code",
"execution_count": 252,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.163659</td>\n",
" <td>0.194384</td>\n",
" <td>01:28</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.112255</td>\n",
" <td>0.100931</td>\n",
" <td>01:28</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>0.096926</td>\n",
" <td>0.094277</td>\n",
" <td>01:28</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"learn.fit(1, 1e-2)\n",
"learn.fine_tune(1, base_lr=1e-3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Work in progress below...\n",
"\n",
"See e.g., https://docs.fast.ai/tutorial.siamese.html#Using-the-mid-level-API"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## WIP: SiameseImage class"
]
},
{
"cell_type": "code",
"execution_count": 393,
"metadata": {},
"outputs": [],
"source": [
"class SiameseImage(Tuple):\n",
" def show(self, ctx=None, **kwargs): \n",
" if len(self) > 2:\n",
" img1,img2,delta = self\n",
" else:\n",
" img1,img2 = self\n",
" delta = \n",
" if not isinstance(img1, Tensor):\n",
" if img2.size != img1.size: img2 = img2.resize(img1.size)\n",
" t1,t2 = tensor(img1),tensor(img2)\n",
" t1,t2 = t1.permute(2,0,1),t2.permute(2,0,1)\n",
" else: t1,t2 = img1,img2\n",
" line = t1.new_zeros(t1.shape[0], t1.shape[1], 10)\n",
" return show_image(torch.cat([t1,line,t2], dim=2), title=f'{delta:.4f}', ctx=ctx, **kwargs)"
]
},
{
"cell_type": "code",
"execution_count": 394,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAASUAAACmCAYAAACcNJm1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOy9S4wtzZbf9VsRkZl71znf43735W5bTdNgt2hj2hJYCE8YWDYyiJllZCxgwBAmzMBgQQNiwGMAI0aAkBoxYIRAmAEPy0ICCWHcYMlyd7v7qh/3Xt/vdc6pqr13ZkQsBisiMjJrV9W5/Q34dLvWUalO7UdmZDxWrPVf/7VCVJUXeZEXeZGvi7j/vxvwIi/yIi/Sy4tSepEXeZGvlbwopRd5kRf5WsmLUnqRF3mRr5W8KKUXeZEX+VrJi1J6kRd5ka+VvCilF3mRF/layYtSehFE5F8RkR+IyBsR+c9EZHrkcz8rIioit93PX+7e/w9F5FdF5J2I/C0R+ed33/ci8u+KyO+Wz/x1Efn4x23Hi/xky4tS+n0uIvJPAP8q8KeAnwV+DvilZ772saq+Lj//Tvf6HfBPAx8B/wLwH4vIn+ze/yXgTwL/GPAh8M8B56/Qjhf5CRR5YXT//hYR+a+A31TVv1T+/lPAL6vqH7jy2Z8FfgMYVDW+x7X/W+Cvqup/JCLfAH4L+EVV/fWv0o4X+cmWF0vpRf4o8De6v/8G8F0R+eYT3/meiPy2iPznIvKtax8QkSPwJ4C/WV76Y0AE/lxx0f62iPxLX7EdL/ITKC9K6UVeA2+6v+v/P7jy2U8xRfP3AP9w+cwvP3Ld/xRTLP9j+fsPYW7dHwH+XuDPAf+WiPzp30M7XuQnWF6U0u8zEZG/2IHU/wNwi+E7Ver/3+2/q6q3qvp/qmpU1R8C/zLwZ0Sk/z4i8h8A/yDw53XFB07l97+tqidV/RXgvwb+yfL6e7fjRX6y5UUp/T4TVf3lDqT+s5h79YvdR34R+KGqfvY+lyu/pb4gIr8E/Fngz6jq2+6zv7L7zl6+Sjte5CdIXpTSi/yXwL8oIr9QwOh/A/gvrn1QRP5REfl5EXEF6/lPgP9VVd+U9/814J8F/vRemRRw+68B/7qITCLyDwD/DPDf/bjteJGfbHlRSr/PRVX/CvDvA/8L8L3y82/W90Xkb4rIXyx//hzwVzCX6v8FLsBf6C737wE/A/xq5yL+pe79v4DhUZ8B/z3wl1X1f3qfdrzI7x95oQS8yIu8yNdKXiylF3mRF/layYtSepEXeZGvlbwopRd5kRf5WsmLUnqRF3mRr5WEp950zimAiLSfGB+mPDk+InOGVxcEmHTim+GnYI6c5jfo8R2n7JnnhPeC9555jgiCqpKz3cM5h5LIGZyDEExn5pz7NuG953S+knrlHOQMqiCCeA8S0QwkQAYQsfckoaqMk0OiI+fMsiztHvWe9X4i1tbXr18DcH9/j4i079R2qqo9hyo1iFD/fthv1qf9M3rv23UAtDCAvPcApJTsdVWmaSLGSM55873a5pQSOec2dimlds/+p+/fnDOK9V8/9lXq/Wt/PCYOaTvecTrgEQYfCN5zPp9RVU7xgmDjlFFyzrgQmOMCzuZJjJFXBLJAdJBRUs74ECBnZEl4cRzHifu0EGMkhICqElPEieNwONj9zqfWp+LsGXJUghdGH9CUOQwjOWfezTOKIgjH45EYY5v7qmp9BKgD713rj5QyzkmbJ8uycDqdGd2Ac671t6peXUs3fmDJqf0t3nrxEheGMNh3c2IIw2Ys6k8dk5ubG94u9+QlchhGm4PR5nwWEOfACW4I5FMm58zhcCCVPgSYl3nTtgOeLJA0Qyjzwyl5VrzYS/E4MV8uiNqc1ZQZhwGS3UMUhmHg7fksPCJPKiXpJuaTn+MeL4nJw80ANy7x3cMbRufJDHx6Dz+cR3I+E6OiGhEBJ3Xa6mYRo5ATRM2omo5Z25RJ7vpikKKMtLRZVPHOkVAyClkBRZzDeXDeQ0rEmDcLTETaxK4D771nGIbNwKeUSCnhvcc5116rUiehc+7qBLzW1/Xa9T79ver7e6UnIgzDQIyxtSmlRAjhwXX779af2vb3kfr9EMJGIV/7XOj65ObmFTlnLvO8UYQZcN0in5cZRPDiVuW6JDJlvxFA7Jr+EZ3YnlUcWTPzbItLMEW3qG1UIkoIjhQzS14QhTQoKjSFVMdvGIarzyuKzSsBVBEFTcp8vrRnd2WMYoykonCE62sq58wwDO27c1wIPrTPhxCIs21CmzVTPl/HRkRwCinBJc+E0qcpJVzwOC/krMynM5JsA7PNIrW5FoLbKFIWu79oJpLKOvGkuNjGL9Z+L876I1vblmVBsqJqrlkdj8fkSaXU76BPibqFIQg36vmDh8QnH0T+kZ+HP/hT3+HzN2f++t868fb7x2KNXIpltO7+zsnGOrCpulosvVIyJaXwyKDCwwX+2Ps2URLdxtSkt5bq72VZmMuiqlbI2q6tUqu/n1Po+8+llLZKolpMu2epltD6HHHTpr21F0Kwvky5Xa/f8d9H+vs9Nzd8UZQ5Z+K8MKdIXiLLsuAQsmbEeZwI4h1SF5i6Zh2kJZoFBSQyuWxQ4h1SnqtaflnWvsw5E0LAOce8zMRkVnntB1UlLdbP0zgSXURjQpxZvjlnnNhiTDk1y24zZtXi1IzUzQ5TUofDhIjY4ssZD8QYbRH7sJvrW6mbRH0OJ2XsWJWOFquyzoNqsWddx2RZFjQmDtOAz0CysT+Ok20Ol5mEKQpBGYZACJ7TaV6twOxQhJSLlQNmnTpBs7XTOQfeoZJtLGNuxkbKCbRcTc2iDM4/uZnBe1pKz3GZ1AFOUBWOo+OjQ+Yf+oXv8Iu/+Av85m9/wd/5/he4H1atWzu/V3qu3adfw82l061iek56KyMXDV3e2LiJtogffr+6PNeeu7c46t/1p167/2x9/bn2Xvu7/25vFdX79AqsV0j1/f7vZt5393jOBbvWztqm992w6n3qYgcz/xUlln52xVJOqs0aTWoLwSa+7eotQyUrrrhMGcWpXt0gnHM4eeg6y2aTK8/jhOBM0Sc1a7rfKOqz7H9rejg317mXq7GAsi7i5po/oZiA9vzaPV//3Wvfr8pyWRZSUganSC7PCQwhkFJiyasr5515AaG8VyGBet+qCIMbwNmmEZxu3g/BI1nbhiBAUlt7QQQV62fvv6JSGoZhs+hg6560ThzhIp6QBlzIHG4i3/mpkW//9MiX55FYdin7oVwH5tlcmseUn3PywH2zwWqQx64hZZfBFl/K2cz9bIPlqkvgPLH6zrJ1aWo7qrvVWzF1l+0nXW+xbHbinSX1voqp7lL172qm91ZP/b0sy1XXq3fLcs7Nncs5M/iwUZ6P4YTXpFpb7+OObtxL7zjPF4ZhYJjGYr4LOSezLqqy7Ps2JUQNj8o5w2w+vdTPpUzO2tyhOUWGYAota27P2Ls5TVGkBAopZs7pgnNCSsrh9QGNQmJplkDt616ZbPC4FKnqsniWpMVwrWkY2zhcCqYyL/OjrptdW0nJFm3OERX7nRWmydZjXlwb24r7SPlXvY8lLtxMI2Qlp4gXxwcffsjlciE4z6vDkSWbe7jkhcucWKLDSWCapmIdCs55QrBrSkqkbJhZ3RSXZUES3BxH8hJxcWEoG0HM1YvrFrATrjgm23n21Js9SFr/roPS70b5ZmLkFfE0c7uc+ewu8hu/8yOOH/0uv/qbX/LpmxPn89ApNsOktV1LNteu0i/23urod+p9+3qMpG+nqpK1AxjFfGLnFXQLFPaKd7+A6737vgkhtHY655rPXP/eA+KtvZpx2OBW0zv40NrrnCM9otjq9WKMG6uo77trFlh1Zfrr9X22d+f6Pu8B8+csrOpW1ABC3eDuzvftObViiVHx3m+UfsXw7u7vCD6QcmIcRkSEy2x4TQgBSTZm1VXs7z+OI+fzmayZsSiIeZkZx1DcqwVVSMks9Npn3nsytrDrONa+6BV+xRLrGCngRJimqY1Rb/VUd2zvNtcxr/OuV/h9N7cNalmtpuoO1vlTNx/vPOfLzOh96efEPM/M84yqcnh1wziOxJzIMaGaOR6PNi/wOBdWd1HXedSgAsnEmHEeBlfcUzVMLc6L9aOIWUuAd9KssOfkvZRS37EVRFvBsMASA8kr6oQfzY7lFv6b//kHfPC//4Dbe8fvfn5knudOkZi1MxZTPWe6RXsNdBXY7UdScCfRFV0afGhKQFHEQcpxc5W2MyvNdWBnbfRKqD53v0vW39VyqM9VcYOnTPReUVTl4JxDysDHtB00ZV1gQJtUdfH8OO7Xes2t4q0KBOgWzZXvPeIyXJPgfGvrNE2c59ksyWEko6gIFQiqV1RVjscj5/t70rKQxaJiEcUVsz84x+vp2Fy3nLNFkYInXdZnqgphGAbmeV7HRhxBHOM4MjjP/eXcWRexLEQQNfxnP9+rtA2QzDiNeO+5XC6m+KJZsJkyOZ2gUZsS7jeecRybMs454+KFGE0ZhWALGyDHjGGt9p1+A65uV3O5NIOCeGFOiYBFQ8/nMxmbO/cX+/+SEwVXL5G3jOCLF2ARQ82m7AZPU4CJjAgMg8clZVkWPEIQ16w280wgpmQwSum351DW5ygBG3zm2mLLOXM8R9QnLmHh8zlxF2GeJ7goIgfuzso8WzjWdlujAdSdSVW6Rf9Mi5+Qve/9NNC9BZf7Z+r/38C8Turg9xGuvc/ft+ExwHuPHV3FeJx9pi6y/rlqu94X34FioXTX6UHT7Q7+sL0NX3gPxbQsS9tKYoxmVQSzLOIyo5V6UD+fIg7h9vYWXxS7qG06x9c3OITTu1vIynE0KsRpvhBTcXFQXAmCOCmuTVGEYFapFIs4LZH7eTHsCMhSrIysiBecCIdwYFnMxW8Ko6yHZi1rxgXHnCJOM1EtcpbKs6kr1mXwhGz9kDW3jce7lWpSNxlPIBarZxxHcu3vuPZ9LuumWmRt7KqV6czqJAin+zMSPCLm7ntxqHfMuiqKurGvik6aterEsySLfjrn8AiolHHN3T0NxM5ZG40FEYIIbnAkzW29qHt6kT+plKr0i2e/MFSVQ1yYVRGfSAqX6HgXD8xvFpzL+OGhMnOOxunozcOvIvu2WeOffqa9i/eU7IHOvWvTv9e/X3/v79Er/PpeH0EBCG544FJWeSqK85iklK66aPDQddvLj3OvOqm1ANa+hrm1szrrJlc3OBSPMI7jGr5WOC2GU9RoW+VkNUC/Wn76EIdrUSq3upOqBqpXaYtT1k2ouoM9hADr+DZIAZvHFMB7KPiYYlhKxVTaXFFZo1tlXHtaiWruNmYtZBYDjFXr5kFrS3WxNhZ47ReH0SdQpEQxQaFgbuLs2XPhBWqJ67cNMoMW+k3v8q9WUAXDlXEIFnVzK/iNFDzJO6MJ+OoVPL2Jvpf7Vjuw3y36DriJCZISJyvCnHLg7nzDkAdimlmWN7hjVUxaJo6wJG3+fBtwfcR9q98tRBW3vsOqmOWh66HrrxqyFdYvOX0IdPduUT+RYf3s3n3bu3cPlfA2Kte3t5rbsOIL/Rg455imCVXlcrk8UGY/ruyB1mYBd5M9P6Kg3veedVGrmquWNKNRiTkhBS8yMl2x1EqYSlMuGFsixhmHg2DYR231+Xw2xeU93gtoJi+GD1WFUhdrKkTD4/HYrCcfI2EwC3dJsSgCcwHr+N3d3W3wxOoe7a2luYDStXExJ1JOiGZyKhiq5uJ+wTiMG1JrDeWPw1hczaXRG5bFSKS9JVvn3flyblhkJYjWdlZlt4iCM4smSW4KMiclDB7nHWkpnEFHUcLgZOttVEUU44I6aVyx4/FIygtxNks4x8TgAnMZ06QVYtFirRl149oG28uTpUuGYdAeMO1DlP33hoYN5abxe/YrXI9c1Wv3i2zv6vRu497NWUPGa9i07tCtPbIqgw1zuXSYE4eTqSizCl4nUi6DZfzKsgt6Yu921HYW9vEwDAbsXZZNH9U2VWXXT/D9c+0Z3b1y6D+7l70FVsHvfmc3DE0296+s6QdS2PRktRA8MIo3Ez0lRJW3PA5afjx45qVG1+wytYWDC8bqdxeb4N6TXSBlA50Hgfk84xUmD2dsPI/HI6rK3e1tQS0Mn3l984rb21u0LKae5No/aw1IaB4QdyHlBRnggw9Mwb19d+b+zty/gwvtGkZ6XMHswXsOhwOXy4VYolAVAK79PQzDGiGbZyqf8PWrV9zfndFs7PrJT2VBmwI9h7had+IYfCAtRux0zuEU8nhkmU94BNEFB7y+OTAvBjCf52iYnY6G/XhPTAnxjlzJm6WPUIXlxODs4YbihhETZLNchwJRLN4TNZNQc//qnFOFwn+Tm6lt1G29JQVv9xrL5jrfXR51j55130IIza++inkU6XeP+nf/nR6PaH5oARjtuVaLoleC/e963WvcjT2Ws3er9i7UNWvBzOyEgYke54RxCizLhWVRrq3BamH093/AKak8nM5MT3mNYF1ra+sP7zbu2zWFdG0s+vtfM+2vuZ29VehrH2te3QZcw1KCD5AeV0p1woqDEIaCidl7fjC/ImKQmVDdyoLfFRdG1DaERNqAwbVPTZ/5Zh3N8bJ1hfPqXti41rF3eJFmIXz88ceIeJb5S86nE5p19/3cLO1+3Cuu0wdx+nkwTdNqnXnwxRUXVUQcbDajit+a5SW6zhtYicaZLQO/3s17j68urWS0WliVal0UNr4GNMxDUbTxtrx3BB/w4piXiGD40BC8ZUEgeMTmQ+HIbTdfkGTWr1MaAXWJkcEVlzsr7pk5/Cx5st9J9xMYqsmXWuPq4FSqfJVtmHPb0f1rffh1/169994KqJ+5ZkVtFnhnim/uI8k6XbPhA5IZxwOH48h3vvMtTqcTX375Oe++eLgIQwjNTF2WxXakR3zmfZi+b1efX1ffU5Qg66Kr/XjN/O3pB/X7NQyfc177vwDd7R6qD77bYynW3x4HZiWqudGWonP1MQG4FI6YE3BeCMEWb0rKQialBbkBxHOJiWRRfsQFJIPLcPAOLeHtGGNzqcxG0hYpPJ1OnOezPVNpf1VWNk8ofZcK3hNxRFNIxxtev/4QVeF2unCc1NydmNrnwRRSGEKDB87zxTaZxW/6sM7DeZ6btRRCwEtmKBt8U+pZDdROllaVNaNuVRJkJWFmuniHptxwpEYhwcLt/SbjnCMLnY29whaD2Obri60ZUUJo+AmxAPaLKFlhEGUIpjSX+xkJD9eseQGmSk5xpUG09njDCVW1RZGfkieVUo9h1F20f/AHWrwHH5+I1NTJv08oBDYm8LXv9a5fr4j6CbGyTIOlKmh+cJ9+8Tqfjaimig9lIa59b+HjYeCaqdTcrKIE6a26HR+oEi1VteVl9flVe6yoKpO+3df4R3076vf2ird3Z/rv13bvuVnsFGTCFIyK0Skew5zadQtoa5FssxAJnpQjiyb84GEqDOoZ3BBweNLFMB6Hgfw5r5yvZsWJkdyGYbAIVK7YjfXVZV4Ihb5SXbZ+7pxjLvNEOZ0u/OD7P0JVuX1zT1oUzZmUKsC7eun9nKn9dT6fGYahLbo+qft0qge4YNZfnjeKX1XRlAqY7IznhOC7qKqqNiC/Rq/GcQSNZrXEU1PMS0x474jJkOssRiQdCsztM8SCgakMxfpRlmjPOoRMqilfArnsO3E5I1F4JSW/kmJBrxOmpZaMJVE450yKtgWIwOV0JoTAzYfHbb9ckWfdtz3Os3fB6i4BqwVSrat+Uj+1kK5ZD3uX47Hv9u9fU4DX3LqH11dqKouIpcLc3Z25XC6Mo3XR/f35av/kgjFJNamrn961rb9nj2X163qPpdXXqvvW81Iee85rvLL+2s65lvu2/1xjklcliQORLn9JS3RFkGwRnadECr9FyWTUXAAVAqYspmkgH4MR+i4JyZZPJSI49VTeb9ZtgKW6lEK3QZWcuvFQrfOFmDLe64ON0vpESuQvcz4nUnqDU7hcIPhCgE2JBkfWDVNX1zGXSB1xvX7fpz13CIx9lyStuFbp01zd0DJ/Yl4Q93A9xGz9uDbJTKGkJak5JdPNKZMxcLkPvQsW1AniyZrJMZFJJM1NCUjwBO9JmhuxFDAlB1yi4UkqgoRtRL0y61PuceRtVQQRy4c8n6+vpdbWxzAigGmadJ8uUTuk58j02r9hJo98b2Nidu9vfdMtoNvjWtUc3ltLFXPor2c+9fpa9XH76zvn8KHuRFudEoJZSZa3pTgNqKyMbhdKisluEg3i2/+r9AqivaZruLon6W3wN9l9p+vv3v3dlxTZK+D2/x3+5ZxrvJmapiBiSbK9O15dio21+kRot5rpKS0gxn0ZBqss8PHHH/LNb32DeHPg3Zs3fPrDz9GzIllw6pBkeIaQEZTzXlkXK8mVPrb8M8WF9XnNTSp4SGeFZwU3HkAyXiBrhJwJBTOJ0SzJ7GrpFy2blaU91T4zsuSMFKpBjSZeLpcHEeqcMwOGPTrnqGb4EhccRvh1Q3Fr8tzGOMMWOqluGiNCMhDaRTRlhmBgNoDiucSFWcCpMDrP5EJzH+e4oN7hh2AWlc6rFe07Xp6sOXTOwbiUTTt4kqOknFhydF6sndmtCrrOperK1mCP955PP/389wZ0712wB5hH99O/V9/v/7/HivYuw1PKcW9FXGvPtUV/TVqbWQFqI2/2z7YqpxjXiXlNnLMExdqWWMzsvaV3DSursnfT9m7v3tLcP2Pf//vv9lZk31/95uCyK+b4qqhj2gLxKuUaeR3/p6TukOAK2a/DG0djqIdx5N5bNG9wAVXDkownbSU/HlN7odRTauRGcmOIV3GyRn0bUxv72BgCzpX7pUzNmHQKqJJFG9+Igs+k+uzFea3gd+7ase8DqNUMEpqt/81bKxu5WDCDch06y67OU8EUUougiofixgq2k3rvV6JlIwYriOJRkEyQmtpkCbRhHGDwLItFGJcUkS6CjWolpFsFgAKy+xBIOTblGUIopUmUcVoxI1W1RaQGbueUiMvS0lkekyeV0h7P6Du6X3g1BNuXz2gYS5F9BK1fJPv3rkm/uHpsa++j7xd2pQRscKt9KkcWjB+VmvIRAjlBimpRIXFXM2D27aqujupaj6dXyvWzsLKre+X/mHLvrZ59v1b87FofbJ6zTpJdP1d3rd9w+h26j9YVQq+FnNMTG4kaI9sVx9BhIW5c4u7dW9IycxkGcoagpdia86X/TDEtNFbfg+unlBp+55zDiyeptTllxReaRp2PMWWcmHV5Tgs5TEZkzBUPVTSnslFZxM+eufbdulkZ4XCts9VjTD3Jsh+zoMpQGNhzyiWqNbCUPsxaitd1FRCcasvZy6hZpgqjX8ezMvItx8/a5wuWNkuCmM21ypllMa7S6DzDOCLiOF9mZo0opWjgvBCXjEumSAaseoJzDjc6zsuM7NzpeZ4tqrbDkvs+OZ1OOGd8qufy357FlPaLoHZG7iZEv5P3i6uab/vCZ1X2nJxrCwm2RaF6Rba3QPaKCiDFNQH1GnZibfSodhnruubGrexb4dq+7b23pMb6HM7hdtZk/f++DeR1YjWSZ/2bijs93H37Z64/PS+kuribSom1jzFMJOVkGYSdIqv8MsWUuepKRK2upP3xHpZStOiz9wG8I+UZSZm8wJwS8XzHZRoYnCfNCaKB6V68RdCAXBjCciXKl1JC66THdushWLSrBmdqP81L3HyPobgxOeOy4AvLPKAM3hbWOYNzvYW6unFVQYWwFrxr7s9uHdQxnwQD0HPGBysTot6Rbu9ZUmQIxnPzS7aSLqW/c/3NOtZRI0JCxFGMLJZcFH95YVkW/NFibCFCQPBYjaOclfkM4h1RE6cYQeHVzWRtIOKyMrjA4APHacI5x3kuIDer9yMiljJUmPvL6WI0D1n5TbFQAkSEvDy0KPfyY6eZ7F2ANkF2LsNjP3sFt8c9nmtwbcc1C2K/WzWFUF21nULaWwsiFX8o7ppKWcRCMdQftKUqpd4tdTtl1KcV9HzzPqWkb9vvRXrl/r7S82DqfVs7RDafqe5Y67Nn7mXfWSkFPoyIKJd5rWElWYk5kpNy8AFRt73se3RF7dGcM8MQunSNFXCWy7qp5YLraFY0Fxy0uqayUjNq5b/9nNzP/2tW7bVNQ7F1sqTINIwtGmmLev1e/zd1TlcWdTcufXss6pvMHXWuKXULSgjOWdXJIJ48Wx6bxkhwhvM4LCPDFeKkiuNydyJQKAplrRjfytu4eiGez507V72DqrTXSKSqFb4DuFwuGyz0mjwJdIuI9p1QQSqRrkJfiehUnsYGpK0Rm10n9gPY+829W7fBizRvrpOtlqlp446/00+C1p74MNer8lyk7LD4REqZFKu30CurknKiDh2XdaFkAxFFISe71lgiLurdAyVR+622swLb1VXq3by9e7YPKlQFsaFoZEW6bP9aJK1GBiuGN4h/YB1dzasLVg2SrJuys7H2pZMWir8mw/gKjZaoKkTEFYpGhuy8LbRlVeZjcT9jTZHHGPTee7JY+ZMo1X0qTQCmavEqHBjIKDOZmUwS0A7vy9lqRB8V/DiQUE5xbrPDiZWQJSszjuAEJKMlFaqsfSRAioL4gEVuO2xVTRGGAoa7MmHeLWvEaRxHDocDOVpVSxEhR8MinUylVG0EiXhfqRyKZnvWGzkgJfJgFlThCTrjAaWUEGfVCryCVxicAd6XGIkZ3GAJ0rMm7twRFxe+4RJHn0CUc4bLDJMcOMgryMJn+sY4VyW6LqIt2bqSM6VY2zbHbKP3biCl6t3YXDzFu98b0F2VzDha4fE+U71nu5p23IGzZdFX7b/EZWMFbHafoiQqDrOXGv7t/879ROgWV13YtdzHJZ/b/TZ8pU4J5q56oE14bbyT3IU4pSitasJTkhnr887VV94ppB7j6hVRDQ/vDwWo3+l/1/HY78ZVKfmC86xWaZkcrIou6eom9tInsPYKvGJIdBvH+0pvTQhWRM17xfuAOI8KzGlun12656qF6GolQ7ygwa3RNtEW8MyFZYx3KB4EI69mi+BRgGunBtLXJ7E+V1x2LeRdgWwBCM6UGoCCd8bZyd7IitkLOJjciinVDXaJC7lseKK2mbDEUvAAACAASURBVGTW2tyX05kct5Upkq4h/y0TvW7eqyWVAPPstc1rUcWroNHwo7hE3OTRaEnyaFEYgDrBFUA6zpHgTwxBGPyAH0Zjg8cLoGRJzMs7UCs+Z9POEulz5YelxFLm7s3N1KWaGf/Panj5Mn8KI/wJeVYp9bv3YyB07dwNYM0OIH3iHkDjOfy4Uq2MypGqi75WxYNugeuq/Pp27++8Z5rb94XBWVhYsGhVbJN4R8p0W6yml6pAHwPrewXW/91bj/3v2kbYUQEeKQ/RW7EVG+rb0fpGtVmjVzXZM2LWZVEBxcLpxyZ341DB2rqZrPWdSrXGZLlnfggWxcmpFOjPhb9TAimuZOhXML7OQdXiEhVHfOdetU2mf1InrY9q++sH1EkhB23HsnoNIQSG+hzlgpfTnV3Wb6sN7HNEq4iYRuxZNXXDiM6y/h1rOo8WfNSJ4LxHc0TFoaLgAaSmMUJHkVNVvGYOYWAcRhDbMJacUJ8QH/CS0KT42W/mXC2h673n3bt3ZGh4HtRsitqdqwfwHMrwpFJKKbWM62ol1QlTB8M5C/nWAesnd58P5GQ7GFUar+mSHt2JRWSDvzhxdkrJjgu1VwLzPLdSF30ax94lcsU0rwvbi4NsEziU+sXeD0zZFdIdzHEhl8qEtVJhzIlQE3MLNWCvYPbF2oBmcvf9s1ecvXt89bMlt6i+7srfiq5IWAnR76W3anxxV6ui7sH+H0eGYbCFUsJZgha3PxLZYSQ93iddVnxxaRYy4rFMc+cI2a14RfkRgYsmohbMhBKVUyEUNwIsoTVq4rzMpQibEVRzzuSo4AqrWjyiCc3gM1RaZlRwCS4lDFnbsZ+H1cOYBnPVktiCre9rymuROmgHHaTZlKT3HnGJimOq2mYoIsw5ljnr8IVPRrS5l3NmDAMuJ95FEDFrLapynssGXu6PCFmFj8fAq8MH3IyfkNwNyTkON2dETowSGU63xGXmw+NAjKkdN3U6Gydr0KnNsZyMG+acIyOk4loOHZFySV/hNJMKVvVZ9/1iqoPRF2evC6UtoBo6dasy20ssETJF23lWDQ9pu922Dg26WnI9PlXvDeu5UyLb7PvqNtV7BF+vVU436ZRWbyHWxEvvAj54gjjmUrSrLoRlWRjHcaMweqtom1NmirUWI6sEs/q5Sjqr1kX11fvv12vHFPFhxdcMNNZWWM1Iew4pJTRqv/aF3Htsr7ZdYTO+TZk/Y4LnnJnGkdE7UhTu7u+BiHOetERc8GvaDcpxOiAitnDLvWp+VpUaccs5F+pwCYGL4J1HfTDOVa39jRBzbvmDAcPBFi3zS+B4c0SlHGekdm6heM+wZMiJ0XmCRobsefXqFZdl4ZKihdpJ5LKC2mYoRjkJbjTsaDpwc3PD+PYtUW3jqlHOfl6KSCEuCnQ4Va2P7Vww6koZKT/Y5hGXiCsW4KlUlkxLxJFZ1HM4DGtVTGeuU86WkjOEgePNxOvxNVN4xeHm2wyf/DTRBbyeSJfP4XyHi+Bl5nR/yzxfSAXuiAlGt1XIDgtgoGtirojllaIgGktCzePyXpSA/d+bndX7Bnhu3Ied7BXH/rWKPfQm/QO36MfcsG2XXxVDzpbh7tmi/1YCwtaCp8TZqlmNQso4lwmq5eg4A/EeS7XoLaR9H/TP3H9u/7OJdO36q1qXvZLzHVsdVnZ9PZWjWYhsx/BRKe5b32YDNFd38Sk7PMZo1IgkaN7yUh6bH23uFMspU3MDyzN7X6wiO/aHnWdZC8hpWSQJ8MXVFjFalaoiTshGtyTmZJQFtGA69szBECm8Wjh9VOHbH37MF+/eoZcTJ0vm2ERe2zjoGoyIMdpGHq1g3eAD4h1eOwwS6GIr5Xor16e6stdrjZX7DgGfM6RYPAvLQ3N0h5J62ZzPpikRhoHgDxwOr3n10SccP/k2S3CQzujZwf2BdDmhlwu3wz0xmWs2zyuW3DZK1vK9/Vg7X5jz5e9xePw54D2rBNSO2nOS1kiRPlhk9b0KxNVCZteU0h5X6QHpuvj2+MpTCaHXcJL+XKz+GXrFV59J+nSUbDufJGUWo9ujGZZsk1ygUgfqVaqZ3vdjAzQ7MLtaZP371RrKOTdC5L6vele0uYDT1LL4FSuZOgxDU8rrz9qm/rpX+zHbjlgjSMMw2Okdzym0IsuyWDVJl5mmUMLVjtF548ic56aE+oMVXNmg2pmjmhowDBZxGnxAyaVUhu3OS42kCbjaR8micDlFlqJ0Uu2jcl/Htp+zWlEyt2Ry4a85hHiZWS6zFcZHGI8Hcp433oOyWuKXy4XlMnN3d8f5fLL3GIx8eWUuWht8mRf1NKGH3CfJxvepSiEV6wtnpV5qWuXkHcsyEyWRs1VFmA6WpD4OjtfHkY8/+ohPXn2XV68/5MOf/g7f/PmfRY4Tb+Z73vxWIL05sJzvifd33PEW7y1okd/eIeILkTRzGO3UmdEHYuzq8TvlcDgS41LWdnqW6vGspdSH+aty6Hd743msymrvxpWRWv/bTeiez/G+aSJPyWP3v2a19N9ZP7O+VhVqH7FKBUCVMvhwvX/3bdi3pX+9dw9FZOOi9dfq27/WNt/ep9EEiiscY9xiN4+Nz/WOqQ144Ipa+55XTLbwcqmdXd1lgG0gQESadQM0CoMvveuicZuaYhLagZWluCIiK0O+L7lbw/K5nGSpFEJiuU7tT1UjKVZgOmJEyhSTYSMOPn/zJXdxYSGhbihlP9az0mof9RthPSwzlHxIwapwklf+Un2W3sozd94D9YgoWUvHZNoxUlKm57zMVGSkuUfJDog8jBOLlxIBzHgvTIMwBMdxHJiOI9OriY++/Yq//xd+huM3PuZHbz7jV2//LnM6cz6MLGnBnSrhGMYpoNkb3KFrcMjqqjvqwR4OIZYDXIMXVP1mfl+TZy2lEELbCXpsqacE1ETFPWbUcJRdZK1FYbojjHvrq3Z678Y8wI6eKD6+dyP7xNfe2mptyWXSq+LF/G7nveFWxQVEBQ0gg0cVNCfEosoN96hPvjnnqrTnsfPbgHZ+W3/8d79z98/eK6PeIk0ptfSZIQzlvLCSNFu/30VTn7OUxJUyLLJaxP24P7fbqZbghhqLOS+1b7CyJgJoxlcukq7UjlDGSXLhwZS+rVPZizOmfl7d7aCCnyZiTpyWuSnA8TiiebXia2BaSyXEhLbKCRTLV1U560IaStmTZCzqoJmzZGaBiyTIM2PVk3WOFvC6jYWzUiOvbw5ksZM9JEWSV5ZyVFRdJzEXJS5rZC7nymGTRk+x4v3WD34ya2pZFsRbegw1ILDY/D0cJ5bsmPMFzZFh8IylxtNyvke+GZk+EH767/uYP/GP/zyf/PR3+bXf+h5f/u7f5F7fcfeDwCUHeJO5v79rnoQ4Z5UYUl7pQikW7LfOs+LKe3DY6SYhfAX3LUvmkmeyM1BQg6UNONUGSA7TSLpfXaP+uOPNJK2dX/k1O0yiXxq9KayqBLc2sym6ih90u21vbVVQfnIFS8AAUcoCTgrOB1JU5k5zG2aUcGgj7h2OB9sJLhlJ0ioKhODwwbdTNHK0EqF7AL4C2H1VA+89yVkJCRxlYsXCNjZ/3WtmueJu9SB8VXSXnXXlnRXtH8TO/Uo5IUkfRLlSTi0yqrqen+bMByKTmXMqjGG3AeifkrGkXogMLd0gzXY6yFTOFLtwbvPEVRqGs9M2LmV3XTQyADflBJMKzCsdv17E6lEXK/NmnOyI9RTxaoXLVEBCKESzkWGx+kJuTnhMOc1kojOF5YFUqmW+K33mhAIWYwp7nlk0WE6dhOISxgaii8CskePhwF08mZJp+YIOQfFYhDAvyTAhrLyIqJAvmbEec5Qyl3Qxt/awHnI5DKFZH6rKGEJbL27MpGXh7ZsTYsPJB4eBwTtcigSNTOPIcPkR3M7kL/4Q/u9+wXF8Rfi1L5j/zi2nzxbengOneSLcHnHnN2QXUee4zMrgJiRGBi54YMYDmQVFJIPz+HEizQskT8ieZXl67rxXPaUefO0pAb1ScAVQfJ9rPQW07l/f0wT27kffvt4lWS0h43MkdlUPigUgQYjPHCPcX/+a+0qnOGTn7tTf/WLeYGl1gevezesA5ef6qFpzRfZpP7Uf+2BBa8MjJk/f9msu5HNgeeWNqa5HUe2v3VJbdE3erAz9/r51X+35ck6MXu2db65DLP3cU0UqgXQ7R7rnYMUDa1IRlPMMu8Mk+4DBU/3V/i+0e8UY27FR2s1BYd1kG5Sxm1/tuk6QtJJ+q9VaMwSq+9i7RoNz4A14r8TMpFaS1qeEqGOJEc2ZeIn84Ld+h//jr/1vfPytb/E7v/0pn/3wB8x3C+fTifl8WnFiDHdLKSE5WrnirlcVj0VaC+bcrYfU4cePydPkyWJCS/HHU1oT62rN3XiZWzTLmNYZHp+rVyd4L32Nnp7btB+oik7USdpnhPfWCGq7q6DEtJ7t7qXu5NdNyV7Z9Yu8Dn4IjhQzOSeGioGU8G1lYewZ8H3ELMZo2dyDcT9QVs5Jkc0ZWl2f9Rah7wDda3yi6v726TgbkmsXDOifuxXK37Qnb/r7qWxvH5RYambHRcl5KO6gIrZWcOlhwbrL5dKoGuMwcjwekRSZK9WicHk0l2JmAjXQIsUVvCxzS01alqX1YQvUqLkXNUjhCrubdCkuiDJNA5IsAlhxOoex4rVgZLYZbBnKlWpRLUAtYHqYrHqp5qUVUFthu9XaD9IFMbDDIltBOWcRyJaOw7aOVn+oqPVDZJgC2a3ldGI2+oQvR5xf5syXn31JXGAcPuXX5v+Lcbrh7bsL5x99ye3tPZ/+8HMrZawXcja8bVGL+KlaoOv4+iNz3U7RrMkI3o3gquIfLOCVrSzwU/JeaSZVi8eYGmNzPRkCkqbNTnxtcfRpEXUgrimmumP1n7uW8DuVU0LrItu7E/V7DqxIurMTT1OnbExpxKtn8mbNuBKCrUTIlirQLeIQfAMz233ztmyLainvILJRoBoj4uyAggqwmlleMCqFWhDsMculjk9Poags23me2yGMwzC0+tD7fmrusT7EsH6vMgyelJbVYklz4axYeNs5y9uofVnJg9UCcCVNxvhFVqfKdQq1MrXr9y1tx22s+cx6zt0mGpwNvPbiQEpZEEOXWv9cTqdGuk2sRGJyNsywjOOSzJ3r+9973yJiZiisz+h9RnUp3wF0TY0CmIqyWOrBlYXAKQJRrM6T68ap57U1rLaWQg4Dc1SQAR8GlMjdOZIHh5s8Tu0+4i5c4hvifWb+0T1DmHD+wLsv3vLufM95OVvFhtJv6MBhGrlfLkbwdMoZQNxaHBBlydoIn1ZnOpNqrtwT8jTQbaGKVg5BJdvujSLeLJnsBE1sBt0m4XYX3ZMmnzKFN4qL7QJpdPV29I9cUYFFtKzpNojd9Z8xIdsleotJc+uLlPLmEqraCqOlR56rsnx7LCjVyEWX3NrIn9hOfK1/egsMtm7YPpJZ+zCl1Hbyeo1rkZD9BnDt9eeU1hIv+GBs6ThbxKcuppQtOO+cf/gcXcAjJqvP5Z2dWlufYXsoQHkO1rPZ/LAquP1zmbttLkV2GY+zSgWqpMaexhjX3UZhUT4pPKYyTqz9W38LNfXJTjOxDW1pyioELUm2YiREtpQYX+JWbe5DYUTV0rml7lS5X+0Du/ZafdUWvuN0OeNDwAcjBocwkLJymSNBHIMLnNJCJnKQhcUvSHCEwRs+hnJaZi458kExdmPMyAA5R7PuRbksZ1QFH2esSF85ntsJKUOoFrnQjsJ6TJ5ldKvCPC84VyNxhr/0jFRlu5PvF0o/seuk2qdi1OhUrY3jnCung8TNtaxy3ppm0B+bXQeoj+qFYEzYekhg7Q4tRakEB/X4nQZorkpDRNY2ODaKV0qkZi6h6iDSIm89+XE7UWgcpLmUPjU+0cPqhTFGCMMm6tXfv0pPy+j7vyohWGtSVR5Nj73EFMv5dw8B7Opa9C7GcyFda3tfQ2u9lkWQgFTOoy/WRUzRLCekMeKrBSTe2M6pANZzSnbEj8DgXYn1rOD9WMDwmgSudNYDINRzySgUSqj/qxDI4MqxUFgUsc8CsGeqNBhHcGGdI2X+icDpdCp9Zn1+OBzI6VQwpJWpvcEqpShX7VqWM2EMOCfNrTb8ciXPhhC4v78H1qOdXKnRpMB8iTjvmA43BJTzuztmjXz86gNuQ+KUEpe3b8mzIOqYjkc+X07cx8itnJklEW9PzNGjBM73M4dXApKQYFBDyqCzjauKMKfYShXr4AkO3MjmUI5r8rRzp1bBr0pO6ymlmg0bQBVXakzXAQshcJkvGx5Sw3i6gX1s5+2BSu/8ZjE2zKjaR9lsW02JsVTATGktA2Jn2jucd4wukDFOxzXpU2Gq69BbdOmKmwjF5ZQV6K7Ps7HwOtC39UGp4WbpExUA3ZYoUbaKsLco+vInK++lKKaUHwWxezpHBY33VI7LlT66ln/3qKhxg8o6s+fBFmg1NXypaNgiamrVGTakUZSYtOV61T4ex2HdFKvVWZTw+XzezMWKP26sXozdHrFgSG2nrs0vmIl9PuZEWrKxsUs7lmUhZTsUwReMNWc77daHdUOKcebdu3dWv1vWihBm2chmXt+ni+VXlrZkaBSBHhCvUk9s6TfmtSji2Y5zGgbLT1XH+f5kBd+cVQY9nU6cDoGDD8RR+Hy5kGPExTNfnG65kEmDgYDZCZkRwTNI4tUUwYN6mC/mnt8X78QKtZZjIxKEUfBBGF1g+CqUgNoRtXOvmcPmK/sNn2m1JNbvVuuoLsw+q38vj12jLrqU01UcaG9BiEgxwetC0AccInt3nbT79uyVy2oR0gJjVSG13fNKu/fX0wYqFEVz5R6NI/WIbNjuteZzvg54tz5hdYOqFdDfV7oFsO+Pqiifi56U1pkCqn2vFVOEUgXowTWbi9ktMAA/rIXbtGA6WioCFBiTLLRIXCxHOrm2iLc4WeXRVLW6brxrSZT+2XsLtFrx62a19QaqS+XZupgpGa44hFoSp7Zp27e5BjxQyCu+KlooCd1Y9RZgVc7KOq8aiVITWvhqZKPIjH7Ai0Wec3RElziX8+d0sRQhU9zWW05haWev2Okr4+A43CgffDzx5svMu9vIUkpgikDMWL6e1+KyOaua+Yyh/aRSqsmCpsXtmbxfB6qfwLWSgPFhbPdtO7FznM92ZFFbcM38XV0Cc6e27kGzEGrqSTHHQ8lmrzW4M8b47SMXVrqCsmvnjfv2mFSXIWu2SSHSLaDeaqlRGKtlbIvAnjns0kD2z9OUVMlIT2nNSavXzVkR0VYGu++n3mpqIKpfzzd7yoq5thGkvCZAV6vpmlKq338fyRlcAfF9Aa0bnlX6cM7L1sqR7dxqFoDWiOd6PFHdAHtrcf/95mq6rXIps9ZeE0XLabE2l6xvL8VSBlqalHOOOddTb2QteMc6T4Xiii651a43a83A7XoyjhZYpBIR11NkLAgSWas7qGqb2wL4yY4N7wst9vOieiSjr0o9sMwGDQxiTx7EEpQ1g9xnlpyY04IOE1kjconcHCazmucTKc2k44CLE7J4Pnzl+daHmW9/d+IX/tjP8r3vveG3f/tzfj1/YSVTCAxyMPd2mPBO8ZIY/MDNYXtQ7V6eVEpBnBHPSu+48pot+hrqW6sp1tDpfgHVaFAfJdgDlb01USfXHvwEtuFWtrtf7660djhXdul1t3zMkti4mzy0Cpzr0k9Sd8hAt9vvgeG2EDoF3haLVOW9lvG1TaAq4i6d4Mr1e+UTOtD4Kal9v5/Iz8keV7oGJG9Ene2SIuWQEQcIUk7iaEeBdy5tz0PaYnrbdq6WRqcMRDbMbaAcKplwYY1gqmoDk2vIswwFzpX5ppTz5rq+EQzXipEcjfGvYgm/zf2iHEndAeR7qdf03pFSbtHRNrau4J9q1q/mNWe0bgf9GurnVj8mIoIjgws2NwYtgSFz2zRHkpbPlcoRuetP5yxH0V6XctYf5Sw/G6NpGDhMgcPkOY6eV1MgTA7nR7yfmG6+QRgmxnEixQs5nkHPHL6KUjrVgut1sQJzLWxWLJQUE86VhVdOkKhYTuWHTMcD3/zIHvDd3R3LbDydc7KJg3hCKJXw0rKayMVK837N6ze3w2rngNXGWQffQsm1kFbMdsihCEzTAbHQgV2jcw+quFDTG3LLG1O07ezi6rN7QvCkqKQEfgokMnNaCKPDF/5NzdUaSn5Ur1S8d+iSWpRCi4k/DCM5FOshRiu5W6I+qO3mvbtZn32Oy/oa68TqlaJIjX6UjHoKVlcjquX9vs5PP+lzXtMJngO7Q5fInXNZfM4zjgYgJ2Cs72NKIWs07CNBpi+yJvgwNsIeRSENzuPU4VQsiuYXalQrOGOS52x1kqxPvKWo6GwRKW8HL8bC3J47UEBcpwiLFyoKg7N5avprILtY3KfQ+m0Yyxlw2XIEDfy2WtZoIqdUFAal5I2lsQAMiycnQQig4KTiWkIuljjnU4EMwAK3ig6B5AI6X0pVTOHVAkuK3OsrznGEwwHmL2HwuBAgWyL38fwjJGAQwBLRJeFwXBYlDYFP0wh+ZHrrEO5xXnizAJ+P3OuR5JVPPztxOiWm6Rt8/PGR4xT45IOBm6Pnow9GnHvFl1+85e3txO3dNmH9wdx56s3HJt52cfmNO1Encf/dFU+iEAczMVZdZ9jANRengYydKQ3bHWFvYfVRuP6nP/rp2vOAmdZP4SYxgpOIZUfT/GvbnUud75whx5Zu08z3DlyuGMA1Nyul9UDAVNILtGABj7lUj0m9Vx8k6Pu4/u7don2f7K3UHv95SjHFrpDXEAY8vswVC5GnnKiIjPeQMEsHrYH1LRmiHt8FJTTfRRvFuZIYG4vba59f4sJhOhRFldBqkagvJUZKkm9tSOlbhRIJrH0BIKQYYYNmOpx0c75Y4/P5slaxKH0apgkvljYTgmP0gfMyU1IsyVI+mnPLDbM5Y2oLKoZl1xsHD+WI7pgyOV0sbUoEF+yzJwdZ7extp8ohnxjkwjeOno/DBVkS+QSfD3BeYHbKdAgMhwPxbkGCkDXhhVI2Zi4bhRGRv/zyzPl8z/3dW8QlhiHwjU++jcjCHCN393aQ5eFww2GaGKbXuNM958vdo/MGfgygu/fXe1xin6jZm3+1Yy3h1Eob2IF828HuzfAeh+lf683SXmk8tkj37XxMIdW29u7CPhLVX/PBd6X/rE2sfWt6Zb1x366IWYaPV4f8cZRS/wzX+vLaPa4947U+eB+3r+JT+3vX+xv/RnAWUwatAPiKz9jntoGPWgiwryzgnMOn4lp6Ry1UP3iPZuNI5aLYk1JItdJwJIWmnJwIU5B2eGTlnSk8wCR7S1RVW0LvfhIkA6Jso8iYZZRBQnWny/XO+mDN9eNQLUsabmknkWSB4E0hO4zmEb1H8wQRPMpNuvAB8Adc4g9/Y2RMwpsfRv7vaAcIaIY5XsjOKn1qXliSJdy7LMUDKaz8ttkrp8vM8RAQCeQMy7ygeUEXJcaREO4YQuRyWfj8zT1fvr1/ct48y+jeWxzVnep5M/0A9Uqgxy5ub+/L4Jjp7RxYXl7NyumoBx3W1A98HZj+un1b95+teEVtd++HX5Nrk6Fvh3OVNmAAruZyPVKhRThiWnAaNmkv1eXprZYYrzPJrY9a6vmmHT+uMqqyf946hrVfeottv6n0fdJvPs+JE8fNzQ3ee96+fbvZRFayYQDEdvMSoB/EQbE+Kph5uLkB1sqfNcWiEiprH6eYCH4wtwfjAsV5wbnQIk+KHSIQnCDimHxgVm3KR7Jhhx+OB2K2vprjQlYhFl5VhjVFhRJxq/OzZOJ6X05s0VU5DsPA6AJpsayIVzeTFelHuSwXYgaf1zP57Dj3YTPPswAyEqOlEcdoQaibY7Az69QOaIgKtzffhkXhzT0TiQ+XmT/+HfjD3x34p/74H+Ebw8Cv/cr/ww9+40MGueUzl/jiknA689HNay53M2ji4Ec0R855wYuWYBR2WMCcmOeF+yEg+o70WpkvdziUV0fH6B3f/8GXLNF4YedZOZ2/Qjnca25QXfR9Ua69ldRHE5yzwwE/+/SEc2K0d4UQ1tMQKNEPm7QPd+y9u1YXVS97C6outn4Xu6bMYAUO+zb30aB2Ta2Kt0bliuIrZ24Ng0dKGPdaWk0tL+LEMU0Ty+Whb12ZzOWPBrj313tfcPoxC7Dvi9pX+z68drJKH5zov3dNskbm+cw4jngvHA6HNm8qAdC7Eh4v7HiPt6z3XI7LSkYgvL+/Z5qmxlh2lLK5srrPMUWOx5HDdMP9/T05p1brKJT60JWqIeVIMDseK7esgIyRUJ0I6TyXFAkYxZOdI6VLIzNoMa28lLrdta+8bbyQ28GaWiyLHBPLPDOIpTzllPBhLNUrYMi51CcyG3IYR7NStNtIE0g4kqK5RoJjGBzHITAGoxSY1SIsMiFkFu6Nm6QwCXzz9SdMcsRlz+heMbmApIyKkgOEMbAIXKKhbCEn4/aVOunOOSubUiOFOeOiEKNyt9xaeRRv5M77vFjUvcAYicDl8vT8fbaeUm+e7smP/WfqpL22GGut7FyK8WcgRmUYfAnV0z57zRq4xo+q9+ijQf1rVXqWdI9P9desyarVMuwX88aqaAm/xvvQLAUgtkjNPBsQscRlAzJXaVwStdIvlWwgSFtgxmAuESgRS3LsMKXeUs2a8TXlQB5aRHurse/jmhTcf6cn4V1z0yrT+lniJFZwLefM/f19w9CaG1vdshyb0g1iQOs8X/CujKkEVNfE0+b25rLINTMNE14c8zxzuczMl1pszUiyiqLlAESpVR2LcnzKam59VblgCkFCsYi23zmOI+d5LtiocjxOLeOh3qPWiHLDANnqr4fBoTFxSZFMbvXUNa3QQ7UOx3FsFU3jcmIYAs4FUlwaRjuNA07hgw8+4Hx3yyEI9+8uHIaBoIkc4bNb+PXf+YI/+jM/88rpgQAAIABJREFUx9ss/MYXmXd395wvkUsGf3SWoaAXwlACA6meu2hKUzXhJ6tBzjwTo4L3uNzrAeH23b25wtPE3f2ZlDNhGhinr5CQ29eCroNUpd/5qvR4wV65hOpmF56Ec95C9QrwMCWjl2vv7d2IHuCun927gfu/q/TZ7nt3pf5fxDKftaKghkoYoG0nGJpeaeZt3rSp51k9JeM4Ngwlx9jyq+ozGcO5ui9by2+PtV3rx6cWYW+NXvvcesjg85ZaGMzadALjGLjMJ3O9UsT54oIvdtjiJ598QhgPnE4nSw9ZkoXFSah6vGznU60AcJgOa7taonHh1PXPpQUgKOzDVM95Qw0nqZUtskPF3LNZEyqenBYiipeAGwITVs87abaDKcUKmAVfStEKOM3F1S9WUolOx3khLjOT2KkqfWLtvCiyRF6FkeNkp9vE2Q4yICfSMhfMza65RHMBx2kAMmEKfOObnzCOgZvjwO39O4bLHTeiLDExa+Seke/dz3y6zHz/r/5tWOCHn77jd4EzINNo9IMciUskMCDOM4xGf7h7dwsYVzFVKlCZV1bIzaHnE34YcNiJxylnLueFEEZCmDh3B0M8OneeevMaPlMX2eFwaKH/95GGG6kA60F8e7fvmuzxpfr7McC7t9z2kaI9MLm/xjUcq3VWoJzmXBVSTYDctm0fWcu65W819yc9LP1RQVIRi/dK2vVRs6+2ynos+U7Vbe1d3P1zPibvo9z6fnvOyojRcsCqu9h/R0SYBMagfPvjG4bpyBcu8f0fveO0RHOBxI77zvFMSolxLOU/nG8KMhbFfXO84SIzLdKW12dKaukOoUR7c7T+dAoqzvhghYdknCpl9nA8WHDmfDoRNTKqWw/8zEBRdkEcqUQWFbhcFsMXtfL3FKQUZXN2JEE9wdjjGX1AJJZ65iVvr8vtrNHbseaLioH83jnGwwFQZPDcLhcmjbw73/KjN/dWlTNb9DHimb3nUzKfzonf+v5bhAn4Jrd8xgKkuVQ2iAJLZiFyiYlUlHUIY0kuttNRThnG0XEcJy6zHbA5jkJaFqtRpnY01TRNzFlRTZAXGL8CT+naYq7SE7iu5oPtFoAUvk1RF6CWGdNPUiuSfh3+vRYBuqaU+jbuF8Fjr1XZg/Z7BdU4Pcrm2atiagql4wmBVUx4fyb0ykC2tm7TRpy4lirS90Uv1xTrUwqkD2L0f++/2/fhY+PeX7OSTfvvVZxHy4L2AkIippmcYwvr19Zqd+BjJeGqK8B2V0tItRxQkasV/VABt7ki0tXxtuz76v5qubcTSA5wDj94cqLUa89tnFaLzMDz8l+L4PnqotphE3V+Ou/bWXgpZTRGM69KcyUraVmMKiHOapmV14fBqpyeUzk+3hkJVURxYeQyz8RUs/shnZeyziyQEDFX0ZqY8VhGxOICiyZIBkmELIyMFi0kE8sz2VFV9kc5CnNjWKRsFnKeKyxBw580Xcq8VmoC/GPybPRtXynxcDCTuaaM9BUFe0xpP2EdJVlWY4lW5F3YtLpW19uxd73qvXrspv70AH3f9qYkOt7T3lLrF2hPdwAbyJw7y6Nkm9s5XV2ERHeF1dIW19JVNV+V9ixXgOS+bEcrVo82vKHH/q5VoLwmfT/Wv3swu4XwnwC297IsMzkbS3pZLtix3VJSL6ymUT28NV5uuZwcl/PFPuOCFesnoN7jSoJ1TatIi80hVbWM+Ji4P98TJyq4tqb7pwQoqTvq2znXWNNWQ7ykJ9lDAhAdvLu/w3vPdJhwWH2qtJR6Txgwr9pvApRyyjUAkmmBVDLkjKbMdDwQvCfmhaVWtHB2sHVKZiFNoxGI789zq08uzgrUBSccbw5lThsmOi8LKS8Fa3L40XG5t/V7M76yfmdG04Jl/U3E7LmbL1i1f2d9Fg2/DFjyessVFUfOSghjOQUYnJj1c386r+s253KOIqTZ6AnLciHFBT+OuCDk+Wnv6mmlFK20x0IG7wjTxHRzgwBx/tKOQ465BHZLykQsBzzW18oEj26LsaClJERZYJVjkkI5typbmYsQXFucvQIZjJbcjvxJ+pCeYEXeurBeYdcG568eE64pW1qK0E79LTCRuSPJMJ8KmAuRIQia1iQXUeH/I+3tumS3cS3BDZBSROTxseve6q5evaaf5v//oHmZt1k90zN1yy4fZ0ZIJIF5AEBSyshMd5e8jvMrQiFRJAhsbGxg6dveWOgpYm/pgIdMIP0hhDTLZ6ltf0JxuVUaKPTJe5PIBAiwkDHxklqjRPbpB3ZyHim4GSYQG0Ct6l0mBDk5yC0VTZ9c12TgvjJ2WbMZ5+paP06nYGWUrQIg/ABjayvW9h2i1RYIGCuZoW2tQkrFJvVAsVhS7vIepRTLYlFCTiuKFDSpWJiRYJgGg8ACJN9INx6hfitTf7+Y98xgl1Eh71unXKFlR/aqJWswa6N8L/YMKKoQVFALIaUV6sqn0nZUBZaV8apbN1p5iW4ogrwkLKq4XleklPDYq8k48wLmjN/uDcwZ16vP4dbweOxoF9+I0wJUA9T3tqIsyTOGb4BkoAq4GCm3LkCjCqTSJ1fWUej+Bxo4GYseVcBCWFLD9bpg3ys2b1KLqDiI+SAX06eyzAAas+GkpYD2gp+WC7Yna+8wdz77I6EBzsxQUXs4ZQc8WwKG9aCa+6T5f4mO9UYyTeRIz1omxrM+0xy39/g9ShAu32NAlqH5ml0cr52vZ9zj83q1kEyJ957Dw68wlVIaSjFMJU5vXsxUr0RDvnTmMs3YFNGosYvrG2GWl8WAe680wMKTJATlDJGGFrK6yXfzKaOY8/CGbdf3a+X3Ye6f8briiDIWO6nzobyoNZyZxAm1Nfx///F3pGTs4ftjSjpgiNzNoWXO2ZQ0Q5UC8cwYt9sN99c3z2K6BpLXl8mk8BmZxlAE7eGVG+KLV/OrtxwVKK63C/Zi4PO6AAabEPZaTbyPrJ0Qp4zL9WoSPttmBtTZ+XuRMcYE8GLGrJXdQ3UClFGL8wCJrWhbzDtsItgfFcuymOKpAnU3D1KpdK93LwWgq4WRJMaiL7utQwFEvKMMGlK2Rg+XZYXs1ZQClCwrqOGdj4xtZFM1JowO9n1fn2q9B2NzzymbRnhruKTLp3PnC6Nkgmrik4tKwdYaMpswmkpDpgxk17Rpo6/Xk5AeAPpiMIrACLN4WuRhXzrLdTJSPSyT6cniY5D88J4n+Mr5b3E8ozYwnUiYfg8pwj4/Ra0NyzJ0fgLnsHsbxrM6deB8bd++fQORcXHcnDtg/Bx4hsJCImhv4BhYjKL2rqjgofIQBcWqw3OKzwFG9urPGuHzIcCh1IKYuxQxO9+o+vlareBmMsCXq3XyYAWkMUQAyqPcKNQo5pCeYWUmJtBvRvZ2ueJ6veL++upeBBt9IgFa926U5nGc4Yetln4n7HwxFUVxT/NyuUKwoVQYSZLQ8zilVbT72wCo1xXb3ixtDpP9sH5oBaSMTISqBWhAowwS+NiwRQrqmVjXfVIB2maeComVyjRVDxWNjW3T7O7lOF5ik8yjUdg9MAFVrTaUmSGlYdt2uEAGmBOIrXmntYK3EDpgicPY+aO2pq/qIYbTXErBJa8gtxGXy/rp3PnCKBkHJ1wzgi1Ahk2g6sBWb5KHj6UtZryGaCg0AoGzzK8ZnoJNPL+aycuxNC8DX6yTCKy6J/dkYX222GaCYezI8Xvp+BAdvD+DNOZi2OP57RTvPa/4egaH406e3p/vUkrohaoDnwsgGL3j8xiH4RXF8czwnL3TP3to8D8AAzjdeAq060SFbIdow14NL/l2y+bxqUnQYhrvuL4uwKfavWwiKxkJox+7emkNCFA74+k8ON9jwAHRndbWGGHfKlQN8KZ9t352sIYRTT2acOMkKqguCbMQgOg5KAqmhMQGPJMrKZAHTs2qwBF1eswwnCm6MwPgBmhtnffHRN5NxEtQrNbXVH+haM0bFYha40siJFI0gqlBknXPM5E8RmbqIRYRARJ6TIOUHJhrUOzIM8bRUQaELk4ngW2qQShfRTVfdDPxXTRCJ6j1Kk/J2J+wBxc92kHUyWZR3BqT6V2nDk+TqypKLVg4dxBX1co2Omtbh/fUy1vgDQskNG/0Q4PYBzcm4bTAiY7yuXG9By8uDIy0QxihHxgK02BW7LtXfi/pMOmDJ3O73Q47P2Dj+Hg8+r3O0qExfIOEGQbdwxOtaGrSHEywHmNsmu3NDVM7hQ9EwUA+Pfs0SJSzkfyzByXvX0fUO8BKE6+Qt+s3kqhlFPOFsK4L6mMzeQ2yWqtMhLdyx7IsQ5FSjKsVMjqtNZRWYEkp6kTFmINxe+o33KkEn2Rb08Ldw51704VHv21OSoKB7W9vb5amzwYQz4Tb+9sb6OUnZ5Ab2RFMIEqQamHn4kuxQCHVE0hTpQMrsIZiY7PXNJiYXU4ZwkCtm5NVzIhvYoJ4jQxGWC+rKYoqDi3R913RigBN8W29mPrnvuO+b1Bts3y8z+vdyKRXM4UM7dHCQtS95OJ4LzH3sqoM+lD5NY7Py0wSAQy03a4qs6U4S6tImZHXhHupYI+/Y+LuZe/4Rt+ZpgnOzMgpdI0NCzFwTKBki6ZWw2TCXT2LeZEcF9IwgEf8gSfDB/+0+WvE7c8mZmcg0xALm7OLaQLMZ08pOodYAsge1mjr7GMr6MYHGJ5AKaXjHAbu2nhYNm8sFHX3PjAlQR2ZUG1Y84IiBVVkqtWCn2vgXICT4drYiUf4fFy0Myv7q93uzAqfRe0j1JK9WIr8khA1yErU9b0tRButseN3KScT5XejE5rUpY3W2fH66CwCH4Ng28c1zscsL3PY3fuOb3VxVh6VcL1ckRhYUsaSsqkqqv3MzP35Xq9XPJobLDXP2jJkK1AaqgpSCokSQaK4Ftv2RMQbXiaINBsjNcmbS86oKlb357pRYs4WLskoBSKW8HjddxBhFHw3k3UhJZAQ1sV73blxXdaEUluHJWxtxQ/A9tjxcrui1R3ELjeEqEmUPv6qitvtat7bXrHmf4Gn1AQdu3EnGszmlTS/EU4JyfVjgvClMKAU5Po9GC5cB74/mNTnX7vX/y6sCCD6WXnFv3p0I4RRWGye4nNvIe7H+roPYxZh2kf3OoeC5xCpj9EEktP0sCOsOJyPANJgK7f3n+tZ32ek0tlInZ2ic4j5Zw6Gh+jhySV4JpR6Z5DAKrUJqofplMwQEVFvPwW0rmnNzJDavNts6xvPTOGYr9nGkDr3K8Z7/v5ZGRNBMYAiDw/d6JPXomkDRBqQsnFxyOAEnu5RoYAoloWQ2LlPIhCtWFIGLd6g0nGdLBZ2SzMKQZXmnKXw3k25E20HQFBOvcCA4NQBv49MgJAAaJ37lWCF5CG8tzB6h2hV0+4OKeHYhIo8X1+zNx0bgRCBphrSOFprILaaz/QBFzGOT43Sbk/VivmITYGOCEKKvTUbyJy6GFvU+wA4XNS5BGQGKMO7SBSpzNG6aI7GZoMWXoTF/j6gMTjT9QcI/NVxBjwB9FDhozow+8XR45oPW/jjd7PuVH8tjYcXn9sNYIR6vl5SpieGK85lO6x/CxUxrWQAvBhQCQJ4YXxfv9l5HXPZth0xSLE24yO6se0G8cjp+mwzuC1rr9tiBVi8/AYENAGL0UZYANSGEguD/F6zsavLtmOdxoRo6oCrgst68Wr6jMfjAVXpALsAQ9UxcQeksy+2eC7zPcZ9pz62/nyQjD8lA5/TpijtAWrGrmZvHpC9/Ge53sYYqUD2Cq07UspGqCQBZ7aMvFkeXDOj2sLrhctLWrCmbO2uicCXBLmbx9fImkNWX48xhgCgm/ZMJ8JAcrJxkcDhMtbk99oETY1GI1xN/kSAxUUcREYROhxDaq3ZxhKGCTb/wIPvp6rY9g2NGHklbPuIEJ4dnwPd+Qrdi4N0bHgAW6sXgtUbNeXe4/2cyTqTD+OBq44CxVgJPds1fX5scvP7ABxuNsDnPkBMB8MSPJRP73MKC+Pnfr0TuP3OwKnrRk/3yMRP7/eYYbO/BV40G7/Y8ce12OtlGqdz/ZmadRwF083SJ3lNyKuFcVs1/OH+ej+EpsB4X5SFpJQg+jlr/MsxVVjhLMxjaKU60Cu9Tm1B8mSFAbRCwOVlQVGFBDh+WVDv26HFUS+faeoKoQ4NKKABGQcemBNq2Xtvwngy81yKuTtzoeLajbvsc0osa0xkxcKlFVzT2jEagxoUbS8gpy3YuFZodSpBJoAFioJSBS2lTr/Yi2CFd1+hBsqEFQuIEmqBWRtlvD0eABGqCPY3F0w7dBWIp7CA1QyxORMAmEeGtgqKinmyAIgTmlaUVrAgWZiXDF9jZjTN1iTTPbhWzcO75IxWbH5dL5denBwbbpQCAd4BGf8KT4nGDQG28ySykI1VuvjVmV09v38+5kke+JJOr32eGXt+bd1ITR9hvJhxvv9ZcHY+Zr2hrhrwxO0ywNs/r+NF58JgINr4nO8hvh5q5ab3n41y/EwOsvZjwrtsKx/UBba0gGNbg00bCYgzuM/MkPY8U3m470/+buN1NM79+04c8WfkeBx5CFO3DR5rAM53m+v4IiHSpnFp0rBQQgahwUD0ALbn8TuPe8yT87+P7qkbMw8Hr+tlqC2YGwEmK61YopmDAmlhqHN97tujJzsULrECdQkQw1nt2iwcHMkd7p45Bw2n1uNO3h8QDgoSwMiQRXQCwFogQQ6F34BjdwvDisFGF99nygrzGgB8k/Xwd3ZQmAhoiiFu/fygT13w202jxohodJcIryQe6oVGKGXtrT1cobHA5p1uXoTzjsU8+CbnMpUAO2NgLj4AW9mhCqTV3yfOwYjQsb6/v7MES7qknuo0QHlB1E6pKloNfCfEx3TsxP6QonfZ5XJB27fJe9POWTIDNa5H1oFPLLwY76k2zyBlQAiEvU/GassN2TG83XXEAeCFgfV2xbqu+P3HDxQRo/TDjGFkoJbyfgZnB1nZ2bfMjEctPcQLAz0nMEaxzPMjSO0WmTgGQ8CoSWOs3g9EAGQ3jgHSmsdi7buSNGRyLkzrJAyAF+wiKBBwWrHwZtgJAeuyYm8VtUan22FsbmkZIZ4IdgfI05RMSe3oOc8JjxmaeLkRyt6Q0wWlNDyKESkvlwsoRaJE8dutYQGD9wreFBmMrAllt3m+12bZ5JuAKAPKaI06idKMl2G6u6iFEao9Y8wgJDLJXiZTPriBkfKKojZGFV5uE564N1pYVr8fMjKpCpAFuKllyxZYCczrat5ZI8ajjudP3LBkkyuBJmwPA9SXxSAQErVkwLL0msV7ax96DF8W5M6Yx4wRdcyjNWg6EQ1PKfc4FzAwk3NYdz7mnThca2DUfmWiKVsyPKMZx/nI4L4jMhb/HLXMQYh/dfBOBABbqh/un7iTFq1vQFbcmNl6z59326HTXRF2jUG9KYG14bGmlKTkGtaEW1r6OM/XP0JKm5iJGG0v2Jt091JdJtUfit0j3j+jGafrtIyyH0La/to/A9LFa5kQTTJjfDGHsf469pAxpdRrwQKTyzljAawBhES3EPcIk6XfWRVIjIQEIulifCPZcJyDkUmNjGAYpXk+psmLj3AzeTaQYBmsWiv2apgdwcY6Nk1Bw8IJgJiuU1UIW+fdZTUDyxW4XP1edmuiKoug7F6SVfWQjhcxffhEdAiAVBWcUvd1mNkbKhhoXRVWbOtwh9XuTYKNu4DIxqQ1AF4JZcl+giKZtpfWPp/OcERr1nSSkyPuNDkayTxHW7dD+vej40ujNCbIMEJzI0nVQWaL7h+AFaHOrvPsbcXvzqB4x4VwXNQxYeP7SNmafIWFNMVrcTiNrJJ5Ne8N8lgUvtNIXAcDArTNAXs1wHPNi/E+9q3jC3FN+753d71Ig5bar9XuwVL1UUbiThaIgCYKIum6On0sXCBtoQxand4vQcocxjjBoxxiLBBoU7RSkdkyRdturr16pgUR1nioMVx4Z6tD8ditsNfY5Pb3ztMh7guUiXuS4dnBC4PZ7qPVIy5n5SNT1DF53oanHOdFaYC0CqmWUcpeECi1GG0F8HDTDL69n90rmyVtqM9FpqNWGHA0SrQufUMa4+R8ODJDVFrDfreee5STkRGvC9KygLghXY2USATcLt/Aah6ISrVsIxq+XW9oUCSytuWPVlAtYWb4GCer3fO8WgKhEHW1TMCMfWCb0USBmZGK2sbgFkxgmU64USPfXclJyDa/kofRZsxEgSJGoDbjxwAlrCmhBQ7aGtSa0KCgWOfsKZJYKIHE1hJgGuufHV82DrCHORoGRogVD2pdV6Q2Fnlis9hReZ1SOigcznyTmHjzZ8Tv5t/HRDp0tKjVw8SQBxEsC4MdrLQJhenRjSPac/c4WUboGNdo9AZnHzdT3FvTctj1zauBTxrq3TE0HbGzeWIzj4dlqnEeg1e7ZtAw2ELAvXldE2xCSOAWnu2BCDIn/PX7DS8/fcfr2xv+8fsPCBiScs94VXfxok3UDL7PuFnoFM3p3IO3O2F2nzlNs0dsbaFiLlHfDOYjPOeqx9OKPLBeMjSp43KM5jVsxhUzBUabY+MzarXQjclCGGAS81PjrYVGUzTybBPdolFDjXaTBBBbMfTtm6lk7PuO5bYAbBpPzBmtFKTEyOuKvAg4NXAi/Pv3v6DSd4hUJAXK445WC6QVNKrY9x2v94fpOl2A2+0KgFDvlglbUjIaRNnA1MBpMbxMotLU2m8zM1SakRarZeSyriikh3tTjX4xRhEgzaYnpUCLHnAHQq19f202Dykf1y6R8wY9b2VtFkf33r01oDY0NumVZf0Xykz6JXVXWLuHEMbBMlxb3+UC9GLnU3wEjp2zSDN7+KNreBbu9de3MehfHTMWRB4OEBISL24QS+9uCkg3cnPWL0LYOTvXsw1S+s8W+o/7mj1EC0WOfCOiUYKjrUG0OYYFgMk1pcdr1ccg54zr9WoSFk2sf15a0MCmXGBVmNBk51eKAmofvjBS/m8exf+V7BswUUGmsx3OO/0cz4OtZgTRbJIocBV7g0CAJkgwfAPuYbVWkX2DalOt4bzB9a/+4aJjo1UdhtJ+Fjy77diQ+4arDOKMlDMUwLJmpMy4rAtABSkDLy9XPPaMBkKrO1pr2GvBkhi0MFgr8sUT0QQsq6kpyNY6pSEqCUUUxL4pnq7NMmT2bEW9lLg1aDquiR4FuNe/5MXaoKtC3aO3E04RBKymj0VBYnreHfj3eUT+QOeET3IKiExh41fHp0ZprgiOY1bFi58v9B5NZzajNCrQj6Hg6AWn73S0z+S+mUsSR4ID1t3j8d5gPb3u2ZwAWTGY2/E5cT0pmSj95bL6Z1yQvPXNsiRUn0iz+x9s3W3b+qQ+9ncDmO269t17fa1rN3B2HoVlxcYubiSzqQ+b30hyo2ZGfmBblBL2VvE//v4bfnt7ONkNSMsC6xzTrAeHwrABPal++rjEeMe/+eeDQf2Al/Vu7oipP1q2h1yDJ/cMFcAofg9pyv4lZtTuTcfObizvSGD0edAEl8Tmqawrfn8zusN6veB+j6YMTtHwjr2q5vWkac5GeC0iXS9sr/duNZnNYKQM/PHHH2CGK68SKhGKFhASbrcbvr1YsuGyKFIyVnZKjG+3n80YtR33S0aRHVILALGSFgZaq7gIULeC0hStNiQk7M1kaPJiIfjV51EkO2JexHrlnKzQV6zPXEqrSQoNVzJ0YJHdq4w1adlLQegr9UwaEW7XZF53U5Syu2cmSEy4rCbbshHbM6zVDJKonzdZLKjAtv8LZSZ9Ik7G4Jkn0n/XJzo6PhQ7Vhig2D23bevaRPOuFp/50WfPf4vf2TnRwzfbHe0hGDV/1C8Bg+sS8qq35S/9Z2a4sLkZlMt1McU/5h4WbNuGf/7znyil4NZe8Hg8PFwwneJrvjqRz8I169xi9xxdObZt63yRYOF2AnFMHgfdCWP3UVVETUZrR3Lnj1czlJkYRRTV65YEAFO2OsbECLcjVDTBkaWTgwojcMQTw4gBwDn8+uhQNUG/l/WCZVms9q65MiQ7zriaV1prxcOzqTEEIoILX53bwgb0sp03s5EvuVqYE8/ImMkLpNc0GhcodvxMrWNrtdaDimXf/JqrYpIZTbiBNKWFhOtiWcofb38g8YKXlxcsq821uu1YecGyXJEXxnXJ4GWBasZWGVV3tF2wXBfc73eIKNJyAWerOXt9PFA3gVTzDJkAdYMkoshNRgLBQ3vzkMyfqtY1FUtiaD2m5dWVPNjxKYMJzLBlKFa2DRUJ4EyoYq2lALWGAky+4WbnLVpjzYXJRzpZdxovyVG17r/JIybyRMpnx5c8pXhQc8jybOLNO2d3mafNdKajxwDNvwsDdDZMz94LOOgoMmE07w3mHG7FOc98FCJCWsxQ3H66mdLgJVnYBOtWulyyFz4aS5lzxmPfrTBZvTJ7321i2Af55x8zh7UK5i4aOYdOlFWYi6rxjci1og1ZPSgqzGMjnuIFFEKENsm56GSEDXdUBHcpxuZcYjE/C0zjM48nY8ITPnGWLCPp71Evo1F0I6s6DMAcGkfYhv4aC1css+bYHQEkinVdsXqn27btELKwi8NrdYW7QWJsHZ8jjPliAvj27LrXgIH/Rdp9ZEAFbS8uL+Llp7WgpYxrWpBTwpovuK0rljXjdlm9yaPTVRZGUiudFSU0JRPsgyLDMnMmE2zXEPV+IZ7W5/SUmlPVzp1qKn284FcYz8Scv/GflfuMsCoR9wjDvCVYQT4BtRUjh6phtZySe7meyFLFkhY0n4/BnC+t9pIj0ud8v/n4n8KU4vvzESS5jtUE6p64hytzy5nAQEJS95yJO/9uPneEk+1+7zsdMDAJzAsL6FkmwpFnFe4uALQbcFlX/PVv/wXX62ptk6lBpKJJwboax2JdryjF+ljl69pD2Z/2Hfu+47fffrNq8VoOXl3gFimNCcXMpiAJYwPX6UEZ8QwAaOBH4lgBFFVGCOaA4CgsAAAgAElEQVSrC7skRHTa+6oRsOSYnAKpO4oed6nZE3pmwGc8cB7Xr7C75tQGIqMrbNsGzZ429vBNYaJlpbWesCCCK52M8SulQCFIavysVgpIgctltXNVAbtAmqig7A3rmnycA58a9I6KCtKjvLJlBAd/biUgRTNJKwLF6t6+EQGB2hqWlfFvP/+MzCsIwLosWFLGbb3h+/WGdV1xe7mg6CuqNPyxP3DTC1LO+PH6BlFLRAhMa4nrHVfO4CRo1ZhpygperGuFAkBxfaiJC9jUjERgN2ouHrSiG2BiRkPtHlIYW8CkTRiWBFrY5FLqY7Ns45osxL9kL9C1+Zlztkxk3SC1ITFwWzI2USTOWJcLqgqyZFTHXndt3v784+NzlQCvhA9m6JFpPEtxHImQUO1EwvWy4PF4YM/DUldtaKUeLCaRIjGhMAGeNVtgmjrUmivoWYmLkIIuit21yCmZrCvIpnprw/8nVaRk8iFjz0gQYagwml68b5ZAi2AvGzYp+Ld//w7mK5bbN9x+fsF6vaBdvRbr8YBy67Vd27bh9f6GOzb83l5BtYEnHM4IfNqHO6R+gw0CDELnuzKS+H1QIhBDfMzqWXsN/5bjK5uxm85F2rpUCfMAdYnIRMTi/MmY+wsn7I/Nd1PHfvwZfj53YsITHrW4J8LIl4y3xwMEwuX20sMnQYDNCS+3G0QEb/c35JRRULHkBZwNtK++AP+oDT/cUAqAiwoSgDUnQBoWAjgpSr37wrXx2mFGntwC5sWyQbJXQEwSds/A7hpCLLAMc2lYlyuIkv2NF9zoD2StuKQrFIRtu+P2y3f82y8J3247vl0bvn8T/Ee9or29gR6KvDVgq7jeFfff7qBiJomZUd4IBatd63KBeKi6vW3whQE0ow/knLFyQhVb7ItLD4sC+2PDtqy2kYm4jvfD8DFVNH9+10XB1bhFG4AdRlGZEy68CyoaSmas6wWNLPmyb3dkcmgmmTDd75sZsqoNdzGdqa3svfZTavvXwjfgvZc0n/DZDjqHAzPhLwSfhkcjvlceszBgY6MSrE5KxbqQqucsizSosEt2+j/peHD3luJc2RfrrLRoBsqOCBv2fcfr6yuWxEhkAPayLLi+rN2bqPtuu5cD1QmeDXPP77KuJimaW9deOnoXn4/zvHPHtZ3Heh7v2Zv8sxmyYxjy3vuJcpjZYz1cD8WzojHOH3xOZDD3dqzVCzxq5gHNn1WmDFBIxMxg+zvyK0ZIAngfOBokSXW8ZY4aZk86KBAhc6IgOKnGjJJ6CZG4hA5nwMusIpFiYaFdSSkFWy24VIK0Y5JGRLDwAl4Zr68bEmU0mKcNADcmaBsbVSk71Hln1jn4/bMzYz4cBQtz0QXX5ujAtMpi44t7T4gykOD+cYwoUV+7lcaYfzbfntmF/pzcc/7s+FNGaZ7Es+ZMfMgMgM4Xse2bCXjlbJXhzOY6glCkuQKhuYIkMFGw5DiRsrXDJqCpSfK2WqHV6riSd+wUgbF9Cd4eZ+Aq6+UC3e8++OZ0xAOxh6jgBJSyYd8f+G3N+P7tGy5Lxq+//op1XUBJUVBBb4zCgJSKsu3YXy0D2SpwXW9YbhdAM95ed9QGkE+0cx1cfzgGuLwzNrFA5kUIjMlwbqcdZNJn/feeUSjyMnS/h7d2HBvVAVBX8XAFM4XiawMYBD47d+rZH1V1iVbtxue8cCLUX/LSv49QXcQKeqVJD7kAo6BwXsZYOIC+1+GRK9ybVvMWxMOQ2GyXZQG8cLkkkwzh5lLETkw0iRGr30pMoOWCxBcwZVDKWNJqxbq74gFrW7RtG0o24uL++kCtgsQLMlvGblkWXLKFNHV7w7Y9UCBIq5dWKcOI0mxQSSQ6YDV/Sv43AkQ8243RTTnmiul8aRfMUxVv5MnjuTYxbJKMHxXPkoiwSxmChDpJJ/v4tdYMOmDHN2Psp02PXZTu07nz2R/nkoT4Xtyljd1rxh0OC8wngugA5UIYXdUyPwF6zoe2Yl0fVQH1tGRrsCnir06MbFqfqEEK44il0QeBASAtEO9Nb9fLnTsUE9J2udgtqZeTiAheX1/xaBvSYlrkrVTUfcf+2KZdiQAvMcnEaCcw2UTUTi2nmBFy689wtT4eT7yh84bwFb4zH2F0zsfZo9P4HdB3THHPNZb4ZwcR9d1/zhye7yfG6AwLzPc6t4oKfFBhqeY6NfRs3jlXyUJXSsnT7jjI81rWM9TP0UH42UAmtmp6SgyS5p9JPctKacFyWdGa9W/LyTbSxAvUW13XBlRhUDHeWID+UipADeWx4+FNDsTpE8pAJUX1nnDdIO8ViS18Vz7NB18jwbafvZk52RNqBJ06wGao9r31CgmajQ0bKfIcIY3nhL6G4k2dYgKa5KLR5wF9Pm0AfGGUZk0hYOykceMxKEEoO+ziGB6UiCCHhGsx5m2eumVkDM+rkmBhA/8KKoiAy+2bIfgiEBgoutLNruNxR4UgKbtFV+y1AKrYtjuuy4rkhslUHE0oC1qhSkDZLDxUxdv9D0B2XC8LbrcrVAXlx472argVwYpmVazI8LKsZnSzZcyu6YafLt8h2xs2Lt3g9Yrwecdg7lpJ89/OJT3n98zZvEgifNTf7dnvqs+fnNNhwtpkHd1XxJl8xKNSPa5jipU/nDuR3LC5MM0Hn+Bm4EbYNCdCQrmz1GKYZhoFzXEwjayaqmXiQrXTrhOo+6QKOkva7GILm63DSXz+27Zh9RIfqgi1LxAS4PibbbIEkoIsDIW1jGr1gZTtb/omoHaFvqxQJTwgUBhvan8UPF43qG4GSQBQJexexN0WAS0ZOdmmRULeH4+QqpnRBx8TKcuyAL1rsHrWExaB0NgQUyaUogAaVLeeshevK4xiZwCg7JCFmgJsEhuDoPEgNvMwWskjEGbwksFkCRkb82H0jUj5+fG58uRUEhITJibBvOuFSzfLpcbiCWNlyD4DKaHW1hUtU5zfz0sKaycj6FwSgeLltljatRZse4NOErwLjIWcnYuiyT5TRfB47P7gUr8+T0o7+ewBUiPO3dcEqQv++CF4eXlxXgWg2fhPa76g7DsyMb5/+wkkirLvqOva29BclrWPQYQbQIRjR1JohHbzuMW/MDRndYV4X7QZmptQno/ZoA1PY4zF7BkE5mavt4p5bcZ4DnlXwOunVF3y4mOjNIeOQzb4eI1hFMMgEVHPylavdo/7jwrzCEki/LMSDwsdrGMJdUMNoBsrasDF23AzTA8IarynCH2XvADqahcP6UmGbhDzgotn4OwzCsrecP3lJ6hnGH/8+GFVD/kXAIK3bcO36xXUdpRS8PZ4GKkVwP2+oSqQ1gWJ1BQDuICSScpsJbK0QFI2trtvCKOcysKk6/VqWkf+SJacwEh9frTWUKo4dcayo7Xa6W55Aa/22uYFx6U2IHsmmOBtxsczI8AVMQpq9VbiqlAmlGa1fSKCtGRc8gVl241oCfxrmNIZ7PwKTD2HF/PrqypYZQhMwaaoACCR6bM8k+YutopCqmlNMxquC6A7QOw9pdTlOwRobXSPtc+m6VPG5GI2rRqz3CPL0KSi+g75eDxsoSRAPBPVFkEtxXYtYiyuNJi2zRZKNl3mc4nDPGznMTqP9zkknv8GjCwdcPRWPwrhZvxvxqc+AsiDmzPvZnMtnKh4mcrXfviHhtLfOjePiCP6pAVkMIcgs+EOLz68sVor0jJqMuOTI2RIRBaaqGKh6GzrYHtA1OT984iQhJG8aNfaY3sIwwxVa5IpYhuyCc0xWqtWiOxjtu87GhmOihplN4A60aOIlZtY0bGa7rYaQdJnkD0/DChlfqbk7tAx7Ff3ds17P5BfRbonbK+3r7OwXRxh3EUt9GV3jM+0kfMx6CzjeY+Q3e+ife4rfWqUYgef/31Wm/bsd30hqBX5cXCyPGZX1V6FzMy4vDC2h1EArssFrVRwK0iiWAj4Ly8E3IDfdMHr647kbua2F9MFIusMEX3PrPmAq+QhwlC7PiKLs9kn3f3+ih2GJ8QOrLAYn1PCY32DNiOalf0Ni4cWj/qGtGTwuuDvv/4P1GK7U2hD1XoMeYnIwL42xmk2EvFvfv0MBHfJDW8wcMZg4us5YzVPphl3aD3bQx2g3r2aHLD0sTTDa96BgB8cqtrDK6mDMnKe/PMxwwQhjxwGyfqJSV9oj8fjwNJnMray8eMyhIw5nkFYXP6FBUARLNnCqtqaJVzmpIKP3y1fzReUhr01iCqWFchk13C9rni53UBvD3AC/nj9gSoNL99/wsvLDZSArVVTX3gouASdgrHVYhX2KaPsuxV2LwlpSZCtoBUDrzNffE81UJ7UlTyJehflxB6B9L/ZLXTjmkbxeQy7amw+Ntar5B7tZDb1h+TlS8H6l44lDoNSa4VOTHj7DPfm3cOKZ7eQ3R9Vg1A+O/4UefLPHNGFdDZagz1Lpvql5qH02jaPR0VdxjYZld5qnJyXw8Ciir/9nPH9mvDf/voNUl7xf7wKXt8armsyQFOsiyggCAXclBYQGMSE2oYucCkC5t1oBSDkJYM5oW3FyXWjjghEaMSg1LCL6S9DFI/tDWvKVqpCFdgBvRO2uqHtu4mzv9tV6DA28fsBwlOP2Ymoc3hmwwQMFxpAD29mffRz5i4OA3Dx7nexu46wxOrlYqIDnuwgsuwVEcDw8X5+zIY0yszO21mQ9+aawfmaZ6MsKh1fikWWUz68Zg19YQVWsnmxcEaVatIZ7j1ABIuHgCszkFP3ukpADbVYWyqChVNs/Q1RdqhY80wCUPYN23bHJgLOgGrF29sPbClb6h+EDQnttYJyQlqs+4io4l43FPJF7Ib74iUk5Jvqtm2eJCpYAJNQbtKNROLAg0ICxz3AvUDS2PBsQxhQYHSvSakB3vJK1Mis8dCN/sBdnSPmQmTfSrGxYoq17tEVeXIkEmCe+rZ6WBgZ9ZPjT+kpxST76uh1UTRA7vn9ql65TMbqPYv9q6pLnkRtVzHVuoXx08sN//Wv3/G//7e/4v/5v/5PrGVBXoDLJYG9+PR+Dy6Sm0IRwDuAjutAf02Mfq21c2rIY/izx8EpobYN7F1UpFSQmBdGmVCloTZjgYsIpB2B6vi8OG+EUJ8B1LMHNRulmCSfea6BE50zdXHe2bOK8bHQ2Y0lR0mHpeLUsSRFZOY+nQrvrsVoBefQ8YijnaGCoEYYhjG8uLjvdV3fqZSKJyGUbENRVaiHg8mYiOa9TOHPu8/2kJscTkA6QhIi0juZiDTsFZEoRpMCTgvYCalQe14mdWt+RiPtKpy8ZJAqmm8+0pp7klMZludpKblAWhtrLREb9sYJSgKQ1cH1rNjp2cf8j+etatpn3eD4syoQoNZhWPrzfh66dYA8JhOPMiadxi55FvOz4/PwbVVsm5XjMbuLrFZBHBX3vVzDrypcalPd850bVuO1rFfDDEpFWpKXIji9XWBSHZcrtG5AVvz0coXWN6Sk+OvfVvyXv73gP//tij9+VbQf9oDX609Y1wv2xxs23NGEkIw7jEwrNvzo2S8bGZ+IIewGo8RLbbY7JeNkbNtmO7kySCqkEFKqqGXQCxoU0ioev/3eB93SvjeI7NAWvJyoGxQsizcdLDtuutiOktgE3MUaWDbyGcOE1cNI4GiMYhGN9O6xHGTGA997I7Pqp3bvLGrAANjChkL64kZPKQMAPWlgOR9XBXTbsaSMS8q9ZfcWrj2oy/BaGUlgQSNBUls16okaX03r5qqeliBpe8WSE9bkpD/OlrWVatrSIlgV0Gx4xl0rkIA3qiYU53O3bI/+uWHg3vDAsiyWwFDDNa06ICHTBbwQVBLKSmiyAcxY8g26Acu6ACK4lz9sY6oNy/WCJu6lr7kz6XMjM0K7bWZNGKIF1BTMOy5OdWkKECWAGC2Z15iVsAqBRbAQ4VXMA6vsK1sTeE2IesK0LljYJHMTEVJ2hY0t8NWKxTvDYNtMiqhZacs1ZRSvu6MpSUUeHpdawMR4aTtoSdil4Q8j7AFXwr4X1AZcjHL86dz5Mvs2G0Tbfa0AccYyDsCsTDvPxGgJ78Rea7/POQ1XNHbh8DHhch5VgQRse8WPPx74+6+/4p+vd9Qai7v4Dl9PFv39dZ6PMwj8zvp7ONNF62UGFue0fbgasYDl3bmM6zN7PjYwZw+UmQ95rbP3ENd9vodn93cGy5+9BjiCl/P1nj8jvu8e3Cd2qUobNVbM0FqHTpT//6PrOV/rwADHvdtmOLxFZga54e0e4gTMnr3D+DpnCYdX8nxO5Jx7lrg4X0kygZKJ7ZVSAGdD53iOqthqAVWrU2uqaEWBIMhSsKi9ODnCegyRtPPzsAwiOSBu7cvjeoksxFMGVKfwCYOnpB6mqVpbAK6uo0/clTNqrUAUSj+Zz4AV7QaxMsYz54QizoUjGJWGGUKte29fxVyf933bA8m3fwbcHiUeZjzEuDe1XyBjyKdGzN6zOCIuZ+IsVPhkrQW8LGAFHm8bMgOvAP7fX1/xeOz47//3Ha+/Av+UB2oD/uMfP/x8sPITNZwIDFBWZGTfrWzCzSFmTObo+R4PFhh92matmbrNbGo1MDVEuJRN2J0Yb/uOAAQjRLAJOH5n7dCbtQciyxCaTVNodKgQQOhIFziD2h8ZVfVdPYz1LGN8nmCdTzSB44lG+BDjFIu9l91MQPP5WK6X3mSyPN66Zy0wfF9xMjx0pEvY5HUDmN436yRmENvTFAdixYF/08a6dC9splPEuMyeJDDC0zkbGOMWn7vvO8jJgaNTieCyrrjf712S+XWzNuOJXCcpEfbg7GTTi2rV6AytEaRVqFr9W3it57kX16JqtBnDcG2uKxP2VrGr9V3LmbGLIDl+o8W6w9BlQRUDr0WAJEYR4CX3zyzSzGimiIoIFBrdIbzHhOSZ5+Zk6sWNWUZFqTtySvjL7YrSGsCMt/0VRoU6iv49O77IvtkN1jpKDy6XFSJHvOSwaOLEE6GSQRBqLtQVCoOTqBjggBmhgbC4jEPMwVKB//ijYm8ZWoCyAa9NIcIofm0pAWATjTcNIZ/68h7fiiM+f1585/518TMAJBoqA/Z3E/iHRHcI473YuWia+LEAT4aDIkVsfd6RTKALjyGHS5WPuz9ORMbp5zOGcF5482videEtzMbGXjjG6QxCf+bhxFFUIGoV5WtKlj0il+hwoHfOwsVnW6lC6+GUbWZxv+hfDTulHpaWquCkPeyLuXe+3pgHXRP8tEgGUfNIGk5O1hTfWEMYLqfUewsuy4LlcsHb2xt2aciZgDVhuX7DUo3/REsGq0BqtSYJpTn3ycTPLmnw0kJSOv41aUiUsOQMbQ3c1NtIAa/NSaMAWhFwMoO55oSKFdqsRKSrQzqAf71csb9ufQ7s+97XQnDCQpwwui+H4Y+M/IhSFIkVxBnLuiJdr6BSnfaQoex1q1/MnS+MEnlro90WT3eDZ57Ee/d/fsiqatbWPYbuLpNR3AUEkb3vpCQOIpOJUAGKlBO2vYFgfc1NZsi8IuIA5/w6vHbFgjczGLOLHiUKs0GdmeqzRzIfIuIUfALAZmiEEOL0qjBgHbHA5jQ/+tcD54eACnOgUmZwzr6TGEPWymTSh0bgWXF0fP/MID3zkubzHDyvU1gT6fg/a5j2Wno26HZZej0amMxhdAwNiNB2mlN+6u45+TldKdeNvGWQiI61gPEcD/gYpmQBjs0plrQcMngzsD7PG8AVKidD11qD0FGmOZRI87JguV4QzVHr/mYSLeQ1a3ENYTw97DtvMPN8mcfJKvHNW4LJHiGvJhGyazMd7Ma4Xi5omVGKl/24N2ipe+1SJ4JJgQJH1YpnSa75ec2beG0NUILUgmXPFobWo2f/GenWx+TjF/z7X79rrRVvbw+IuCczAZyzu98Xs+MkeVowDEJlObxvXRbrjSWKbduw3S1lv8NoAOSGRmmoVsaAMTPK7tiCF5Iyo8vW1qIwhUCAW+7eUBznQaEnGazzhASso2t/D6xLqrgmUvbOHUwZuihU2+B3ae3GsI8JD2VDEeD79xes1yv+8Y9/oDqZ2BbR2sc3vs6Lqu+ik8pn9MgDjvSAmQ09e1XxvtvtZpKt+/7Uwc4p91qzr7qZ0MpIzgBeaHh7RYHlYkL1XN6HoFFaEsahfRIiMh/xNabxrOf7m3EPVcVe9n4PFkK9L9Op0g5yzaFsGfhNdnpCIzNE5H3rqofqAu2lLMwMue/uKWpPj6MJtFRAFLdl7eH2vFGGtxie8iGEV/WNW0za5ZKMbgDB9eWGNV3x888/d/nmt7c3vL29ARiF9eu6IvlmuW07QlRujPHoct2mzkDndR8hfkLBXqzd1OW2gNNiLaxcx0tbg1RFa08aEMY8+/CJA/j+/Tv+8Y9/9J+HDs/Q7Y4LigkgdWhyx4Rb8oLatv76+Fqr8UeaI/yAYRnZFQAitmFW7KKjKwcAqpPAeVdUVMe+hsHc98Gl6Tvmn2AAPtsdrKB47L4WNibjfyQHvzmE544LdsaU/Gy2i3qO977tKE2QUgbRaN1d6nHnnBfPGaTtn4OBKc3GaZYffhbyzb9/572cPvvL8ZPQtTKPNUT9CUDxcEfluMsC6OTI+T4+Mn5DadqNbhv1c2GIAi+bDXHgVwA6KfN8z+exOc+Zrj3vxog9S5nE0/rhzgEQIlzWFQIT30ezeZ1BEHXXr7Se1KmulxT4VjyToWA6FCHCHxSpHbBeLgu+ffuG7+sLfvnlZ6gqfry9Qh2ML6Ug59XxVEF1LA6wtl+hzqEKMI+52A7zzdeIO7YG6ltBfLOHg1oEJAVMyRqneoSVL/9Ci6XYgYHgYLgHPqWgZ0vZJ4fIoQ3TPLBhrLoESsh7wqYXsxXVAgT1Mu7mNT2iBHhxZHLcSdRBWpv/IO8nCwVmHbK5acD5OMvNxr2fD+tZ31+Bru+kajKhoke52Phsr3nD9LvZaMfiOffTs3Ebr5/fdw7N7Bk9pwbMeNFsqM4e0zP8iU7X/Oz7rw4CeisqIrXnSgNcPjd3mOfVh+c8PZ8Zzzz//mzQRQVLWvo5wnOaPX9gJHPmkLKfF0OVohtWBzSXlNAg3dgdsk4uLkcKw4YygNK8SSO7vPHxPmejbeM5wDU7rzfChEUWOWfcLleseRT2rlP9ojp3TwloJbAgUyiI+dbZ31B/gAQSejen3j0PbV27SjzrZ/DGlPH8Inz71CiZOH51j4CQ1iFYNWc04gHa17Ezd7Eup8mPcVVA7W8pMixwanynV3l2StFjUoUCeQFxQtKxw9mDAph8ojWvM4L0Hm9zTdw5NHsW4z4jJaY1Uqx+DxGUeUCuaBASLHSxxafHfzP4LQLnpBAYC1qrzlqGpZMDXJ5W2mdgcxgcYLjmImLu+VTA2sOiky5TPMMId7S9H6szRvPpIYrFd9KVYt4Yo3f3mqqzZzJ7Bl8ZprNHo6qd9xSlDecxi/esywiJRaQrqx4WWht4TkrWiaO11mGJuNagjJRSjG+XErRUEBR5Gq/y2M0zdg+WFZC9IFV1OSAFi0IX6k0/58TLzE+LJADYmmKKVtSm4OyZOQefqwh+/7WhQbHvBeWxWdddEcPjmrftTuNzRrcb5yb28E07cXiGDGLcenQUHVIBAGxdmrWC8uoieoBs77W/5uNTo/T6+tovsFbFulAPV+a2SDNOERPNxKOmFDiHQp92b8t2R798X1RFrKsC2xvBpNbiGJ5ZUEDFCIlEphIZ1fetxQS09pAJjKa1L9BZe+er45mnVF0cbagY9tajELKJpQpQNq7SjCmZBwAfT3UKwzACKS0dKCezcAZKnppHxvdxjX1BBwDqEzewktD/md83nyveExOrZx95pKGf4WtfHTklb8CmaN4Pw26Fu47WnOmM6zp4BGEsnzy3p89nel14pzHPZmzp/rj3182NSc943QxDzHQSY6fb3/dWjM/jf+0eIQYjPhPjzZUsS6sIbTHAVB1ZGYv7+KWMUOpdZmsK30gMLjBpW1sgFFSNWvH29gZKCY/Hr9aYQIG9tB7VlNIAEeTlAiYXLJx4iczoVQ7bZh1mZFaSPXlJfRNxLxjzGhdrxVTFiNd48uzm41OjdKNfrA+62kXXXbGuGXkliBbENc5qlPHwIv4kImOYWttMt8QEY1UR9tbQmnhjPwXxhgJgm0DbPgFFgLZhSRlaBxjaBwYVQVIEBh4hocf80WCcduPoSWdtkrQX5+ZGJi8BCzNri3SyOIQkniJ6mFfECrQG8RRbrbEIDDP7HhSGouB8M9UdKXjowwwfjy4edvuDuhD3N4Pb89/nTSPGZx6vGNe5tVBK6SCVYmC+hcGx4YhYbdRX4duFV5RWoORiamodLgiE1ReX8NEwfmT83oUv03jMz2wGuIM/k3PunTRkwmJmb2/mzsV4LDDeceJkJUZkYU9RQVZCysmY2il7raCdUxzcno/Nc8EAwKSjwiBbt9+qpmOVc0bSpYeTiT19TmRyKiFYx4tppDcFZ0JOKwC/djL65x9vgofebBPtEQX1yCVF2CkF38g2exEG8QIkRlUx+g4aJG4nrR4gZIhYMbBIQ627FQIDUDnBCFaJjyVwvFZ7o5GPjk+N0mPfoDoWXlMDcbO3YTGPB5BGB2s+79jAUcIVGIvpWYo6FtVMyJxfN1z7sbN2l/IUDjAbaD6HBPaMj5Pm7IGoDuLa5XJBrdZa+bpekHN4JAAO0bH0/XHOlAxM6HiPBAKSt7gR9omsPnfNzdcPbei4zuhYHCHEnN6e7/O8sOdU7wyGR8g9G/tnoPj887PjmYE5e2jxcxikM4Y1X+v8/MKjmfG3CKPm+fDsGolo4FY4zov53kQFOY9+dEpm+FqpVv5CtirO5z+fb5xYpnkZ4VHgfIOOYN2ayTd20yfv8yXGUZpFEclUTe28xvBuHtVspeCC9/M6/s0F9AUKogRKbMXxIrisCdI2iAquF0JOhPvmmkooIE5dFkYx9nuika0LfldO2caLDIdl/RjfBb4wSkWH53bnM4UAACAASURBVGH3Jd7qOI2aNaLeAjoe6uw2nwelD+wp1h8T1LD8+XVzeBF/J4qF7CAkE5jS4RqICDpl6Z5N+Pnz56OzZ6f3xHXYdbXDdc5HGEzfO/wz/MEFq5vNcwDQmz+OhWyeFKkCXximGXeYfz/f23zEwp3PE4ujL8DTwn5mxHvN4weHwIyq+mcYGdZAzsQmCRMA8GdYWR+8d78aG9YzQ3C+x/kegp1ulzBghzhvANvdg2qt840O53zycGZPdj6ag74jU/3+GsWzzcDA257dN2Hcu8EczjmK6TZ9PYfEh7H2excYSq72BigamA1CMNVLBUOxMFCaAOL99dJi8zmsEk14l49zUITIrx308TqM43PpEopgTKxYVa01r0gDMyE73lPx/oPOWYw5kzHH7+ewYnhAsSNGOpT731tT5Kk/enx2mdzzUC2cd+DeXePUNviZpxRfZwXIKJOxnaYh5ylTJse42k4ZmBu98yBTSmb0faE2KSaxAWu5jHj7+47o/ZpjIj8rH5k9zvlezjIhoyddOuBHs6Gaz3l+th8dRwPueIyOsbaFP67hUxA9FurkAce86R4GjlUG52s+v797h3TERsb9HjfaOUMbC489pX8m3z7DLsOjeRZ6x9Fa67hNci7TM07a2uege5hNDa9ZADaBJQBAfa1j7Kdrn8eaiLCHxwwxIiYBhIZvV7Z4rNozYBUzGCwgTtilAuplUuy0CUGHO+zaxriIyFCe+OT41CgtF9sNpSoARc4JUnyOeMcDjzYO4cDsvsXPs2Li/JrZUAFOKux1Z0eRe3N17TP2VsEyautYGKABalJK4JyRp9BAndPwTDTx3S5Ig+8SbZ0zL7D9pYEZeHm5eE2ZubW1WDwflAQDjKN8JbwLu6ecnZFOCmoEEZNp6WDSgPY/vda5pi3+dl6IM3YUBtlalPOBuhHPY6Z7xHg8C7U+O5p6KREwISr+jLvbiHeL5tlxNpRhQMOrO3vnB2PyQRg5g9bPFklKYxNKOUHFmigye4OInI2F3YHhEbbQk7j7TOCM98TmEdcdutnAeyMb97ksFqprrSgaHngkSMg2SGjH7s7PcTbyQUNoarxAymTJI21YiJAz49tPC3IiyNbw+4+C0oBHaRidFAlECQIgJzrgmZEQgBjHj0Gf0nOAr1QCakFiQl7zYf9iMpvEZJO7llFoGxcU2jdzODAPzNmlHgDr6Hi7LBOfaZp4AcIC6DH3/HBFxXrBT6GKQg9s5Kh5yl7aMU/uM2DcF7Y0XNallwakTLhcr/jx+6sXKjNebi+DWKdx7XYNy7JgWbIbBsWa7YEat+SC1hSPe8MeJFVYiU8sxJljdD5mwz+HEGcmcNxfhF7nBT97XvMmE+cNOY85q/fsCA9oPuKZPTMkUcYyv382VrNBilqsbRsdZc6fPX/t5+tz4eiRzUY2PBQS7fOnM6yZOxWg1to7/3YtLh8/Zj7U79mcHWoTZxrNcZzGmBMZ4zooDnHuUop18UmMDDdWibG7YgZdF6zLCt32w73P4z5vRM1T/+pzlQgopaEm0/q+Xa643lbgUvH6x6+oAqwrY6smOdQwPKF28jD7+GOEu6FI+tHxqVG6OFu1lArXWQcvtpPX2owjUQuAkVY+D/xZSzkGJSZ2PJTZtT6zcU3aZCwu7TEsOqSkgFP6B77SVDq1YJZXPWSnpmzSAYvSI5YFAIlX62XHwF/+7Rv+8pef8Xg8sDh/q+zq8rvhHxg1ACpY10uftHmxcf1P34y7ISDUZu8t24bVRFxRprn6kWcS1xdjFtcdhmksCjngZHNftmifPnuu84SK884h3Vch3JkgZ8/In5Rah5fYRYmokxmf9a+LORUGcW4WcCaCfjZOPYSu7xs6zs+91oqkA+urot7vja3CXhXFF+A8T+exig0vnnnKx037WZLHL+hwbY9J6ynOfW/VOUSWiEnJxuXarJHAY9+x7xsWvA8Z53AwfheiihZNmAgdCbBvAKThB91Rq+K2JFxfruBV8LYBBAXYQzLPFOonqpLMjJA2+uz41Ch9Wxb88ssv2MqOP94eeL0/wDlgLwGaoqoehMDnkE1ERjrdPaFenX1a8DFQVhFe+kScDVFwnD46zjhGa61DMgEOAkOqIxbZLMFxxr3mid5DRQ/HXt9+x+PxQCnNs2zRGw3e0seYrKomIl/KDmLFL7/8gr/97T/hf1sL0rpAoPjjXnDfdkAU//HPDa0VMC99aA8kxtNDnfGV+XXnKvlYDHMINpNh5/uP18+7XizYz9L3H13j/Pu+MFz+4hxG9vvCeBZEhOv1isvl0ru4zCTJ+fu4XuBIFejPfc5k6cgYz6A5uSQtYM9doINU6m22BApyryiO8NzDs+24Xf8+xu0ITYz382ENZc792vuzuVraO6eMbz99x7quuC5XSFXsjw2//fY7WivY2nbYSGbjG4eIIE0NHFRdnUKBzShYaGXHujZckoJ4hVCCMtBQQGRNOQXGZK+nbsjan0WM79e8t0+N0k/XC356uQFvwIMfZhhUjXJE5BWlMJLDdJPA4CrEbt2JhNOCmC04MCbS+aKJDhvIu5/7AOiT6+jAnpqV9v+YLC9L/N7KzWDs4SH201vXU0WFNSMcg09EEIjXV8W1xN9sd1vXjOv1ilsWLEtChRtrJANEYeQ6hxU/3f3j6zMjH+NwnowHQzsZo7MROn/WHMZ9tds9e/+zcOoc2s/3FF+byqdG+dlnPMOZ5vDtfK4w0OM88QzJuzoHifLPHYf7w+yFjmTOZxtsHB3+gGLJ1tm2pTtSzkh5wfXlhpfrDd9fvuPxxwPUBKjtoPIAPFtT0/NQMUdDAxF1L5iMUbQXQLShZSAvDcwrAKMfhH2P6OCjOXSOQj47PjVKf/z6O0iBH/cH7tsOZqA219DOXsIPdBB3HsQwSDMIOy4e74xVvH71VsUWbozMW2vSH6Kd9/2NzZhKDECmdJhwAMauAN+1J5B4Hsg55QwAmRfUVlGr4vW14HKNzzVDKcrmJTlfiZkgUvt1p5Qgas0A/v73v+Pn/GYqfwz8Uayf3fZ4NVyALBX91UOM6621HjC0Z/jYuU9c3N++74fnFeFgTLAZz4mxnTNDn13XPJbA50byDNj3SewVBOEdxXzZ9/3gDc7v+ejziMi6h0yfPcucdIUCbYAMTAjw14WwPybv84SFxbjPYZ0RhGOMzUviJxtibRVJvVxIRoZwXdaxiYuVc+TLil/+/d/w87efkDWh3YuVkZSKS1qhU27pzNM7PJ8GKIvVbXpbqVYAXhfrkdcKWrGaYX0UKBVPyiWTxCWFSH2XzLI19mRz/+L4VLokJ9JlWd5NbGbG/X7vhuWiplddSrG6JoQ+0FQr49Kcs5peDJDq6Ct/ZdcvphEC1pFj7++ZBcLOE/xQEzctNuBYRd/j/ck4zrF7/yx//TkejpBiGFFb0BcKzkiCKEGIIeEZJlt4y3XBf00KShm0ZryWglIFr/cN5VG9Ngxovmu9e0okXXLFwo08laQEdgTMiQ4RYFHqoCPTUe1hNtyxj9RoQeTqj+IGxO73z/oNxzR+fxYT2bWHk5OH0scdeKd4EGTJ2cNLK8BI1hYboSoqqMxudNxNqeXgRc0eUhihqBM8X8f81TwLHHSmeilIqwc1TUqT0Q+jqKM2c24bHs3AGmmfm0kJq2f8Ntnw7XbBt/WK//zLv+GyrNDW8M8fP3DfHvhxf4NA8YZjkkIFWNaBc4kIxMS/wSBclbF6QbsSsENQINi7iqplG0N9v8ucEKG62FXb3kMLZy9NVdFUPrRQX3QzObr3McDz5DD3+rk7L7V1KVOVkcV45iE98wg6TtK6UzZ27ydufjckExdjnnTx/TMC4XnSPTueXeOhUDKMo0ZXFTERO7WrUjVZCxEBbYpHBsAVaAvue0FxvXJx8P5ZanlctLF/7czoBul4vQdbboamHTNPcxh93Mki/Ahqw6BbjNf+eaM0ey/nMOocXp2PGawf7x0h0fwZAQqHTAazNQ2tpJBiaqSzIXsWUsz3+dH1na919tCeYSbPvHjV4899bONfgOuqkOadhBUQ37D3VvHPP35g4YT9sVlHnd5FxSkwGpw/u45OV9EBbYRH06MH37QUCpymoJ3bMVqywBZkrwYRiEbSKsZslob5M8fnPKVl/Dm8HNNiyfjpp5+wLAve3t56EaESkBP7TRmLNYfBwXESzIS/8JJSSr2XV/c8oOCUezZnNh5h0OZJM08yUXk3WZ5hDjOJ812oN03Y63p5d44zuGoLT8BC1nnDDcu6LFAS1Go7pIjix6urKq4FFW7cwVBOgDhhLxjgAIDToo5Qkcg8p07AGiUuMbljjQ3g0Qx9FZM5nccPAEi8Nbj3iG/BCZrCos+OOXyKcXm2gcy4y0dHPBNxrou2kXiI8SUibFsDk9VZteaLgRgN3lUjLZahrZPe9WlzmzfK+Nw/u2F9ZpT6AhVrec1etjvGcjKCZNit0FgbRkNRZE4gBt72gsdesG07Frbyl2VZrFQkmY5YhnV2tvDU1nPXO5s6klQnPjZVFOfFsQZ/6b1hiiPGSkUtWeRddSMEfobnxe8/Oz7963kHERknvl6vuF6vtotlk1FQ9VTpJAZnbzwai2dp3Bmr6H/D+8nQz/PESJ1fc87ezBMvXvcMw/hsPJ5hIed/1tYaiDomiqxcE/OerEIVRYGiVqvU/H1IDCZrAqjgw2eGxK59Po8dFTj9beBvXz3bwz+8D0/nxSlTyPzJ+jy8f7z+/WbQx/FPkCffedE0asTGXMBQivDQCi4LEnMw+tjP93a+xtmAPJ1XTwZ3fs+z45mndX4G5+uwy5d3gx1eVlPb+BsUmhmNTWo3Quw5CiHCASdUDE/1+CzghNf3zyQ8u8NcPyWwgAG7zIbo7NF+dnzZYknENHnmASyldGbwvu8oHqMT20OPi1kdj4KaFgswesXP2ELgVmcvJHRuqkivPRpp/BH+hVcUMfy8W828jDh/PLB47dw77UzWnA3zHKrNLmlfVB7umvzTqGMjwAFvq7onBpaUcE3mqTRiKJsYV8qrt4sWaGvvNilS22m1FwCb5EXUqce92qRHb9/cExGtdUa1qGk0m2Ce342/LgqZo88decFwnIf5c0zpvHjjecxyJYGjhOdDRAc88Hy++Ow4R621g8GqBv4yjHBY9+aFs4ycF/MKm3WiZTqeYz7Ohmn+7HnnPxsscVWCORw+nzcw2eDyhPbYmdMU5kJpwA1JCa1aKVIVk4YhskYbtTZPitgcy8RYouW9M50J3rhyQPSOCzGa60URXFpIDUJ4Z5j0AOW6gaf+R9tTh4xxEEi7MYQVGX/mcQJfAN1Lfg9UmFg7sK7GygxBeCJCdumLYPtG0zpVgF2KdbCdj5SAmKg5quppmtjM3TWM8LE9YRMHnjAzcUsbpM35mCkLEZrObZVi0saAiozWyucwcW6eSAhlPfayFEzyog1LUqyXBT///BPk8cB9e6AR41E96E25i9olJDTx8FB8D1Ng8SpzgiVBmYEyFeXG+0uxcpjwrCwMwAEgfpbmJyIsPv4x7lUdX+LB/fnMKM1eSHw/j5mqdvLkGXOYSzLmTSW+7/wfn/Sx2Hd5gJSRFCBlA2VTwu7lRVXhIfFxE4oQ8xkjfj7mMRohtPRrOI9hcPNKKX1TnY1xfAIRYUmDMNzUUvHW0NebiYKtkwoIO7vukXpCiY3gvKSExMZGDzBdxDrHEI6RT8yBlBJ2OLPbxekAr3oAOoFUHTNisSL84HqpRwWaLDnFMhyAeD6htNHhGGJUaf9rQPcIw+adzybnYFvDmt/pcBttsuuhxmz2UuJBnA2F+sSHjfcAulW7r9kLFXECbPFcBG1OU55d8RkoPU+q+NvMNgdwWEDzYovf2blTd5Gtjrv1ScjJ6onWNaPsRvUSD7eICU0j38ZIDKhmhx7jnoD14tXXaq10GADltafIWxv7l/TE5cigRu8tIjIMQuTgzoOOYG94eDEfvtrpYvzivfHczuGzTtnMc6g9GzUz6tyzhsOjGM+yzyc1IDj700gpmeSyz8941u+A81PoNXvTcc2zAY+v7zzZD0KTwVOivi5ousf4u4gVv+McIsV1O4tIXA/byLkEY2UzVAisZlrSkiClWIbN/tqf8f/f3rcsR3IjWx4HIjLJkuq2uu/qLub/P2wWY92attt6FJkZAcBn4TiAAxGZLE3bjGlBl8lYTGYg8HQcfwssW0OLGQMZENoc2XGnOGwtUC0C8CyYKFlKPbPSkaUfU7ug5GOd0lOmxGf9YQ/BOkDvanEwT6pyOufcAxVrW2mStf2CcwA2+eRKI/SnPoNMaR6c3QgWMe03j8Sjsm0OhRmimuuhOPN/OdMvnOoQak5QqVn2pAgWEUgwaKy5IO13oOy41GosuRam/PLyire3GzTXCGxdTQdVUZIE4OUa8PplxdfXKwQJ9+0dP/9meoNQxay0c/248c1vKsbRe3tZlua75ClXVCsDcu1z/ZFegMQ5I2rwn6e8N9eE+ULxxPS19IErpbTbNyXLb5RyQljtYMSKmBcJ0Fxq5lITdDNM++9F/LN3Ey3PCnuvC5KKGLi3/EXrmRjf0UTQyZ0FGL3vgwQEkXpZdUS7LAsCBDFb6p6mGyKyI5ouQFDFlhPiuuDl2sOMSs0umXMBcoHIDng9m7s8MK+Fqv1dO0IEGDc3njEvbu/7Poz/32JKQ0Br+4naEVrR+sRbCg5jIFHQcqlECPK08JxoHoym40mlqS79Rsgu9zdT7ZaTOJtZWetTeM46DjKVbduGskReIcjNJWK6I58+lRkC25gqNDUfJRN9wDmIASEKgiQUTXj//RvwbknWX74CP/3Xf+Ll9QeoBPzjf/0D7+937HfL+mfIKyNE4OUK/Pj1gr/+5Uf89NMLlqi4va24y4p//avUDWDjZuriJrohopQeID2jA0/G2vr5KWpMztalFv/8Tiql4Ha7tTXgu6OMIRA82HOcpN8H/JxWKY9WU7H6aTEKrovFg93fb83vJkgACrCXvaFo//6zVLjeenh2Hnwc3dzns0tMRBqMpU6Ue4uqABMxmSa5ZkS4bf1y1mwIPIgV96xnLVDpU1H5Xgo0mI5JgyEqwGR/Wt8UlhNe1fSLRNFtronqAKjEipYt2XQbVwi1UGVBLtvB9cPPAcf9jJ4ypXPT5vH3/plW6G+DFVAeRePs/bnJBD0hkbNBzf3ykJ8Mocm/GJXQs7joNzRvES+qeVjN5307A+P7qBSx9hslhgjWCM01yBkA/uOHH/HD179gSwn/va5mQIAtv4iZtkMoiFHw+vqK1y9XXK8rXi+CJShefgkI4dcmAvtxNJFYFaqjiMKDMBMrGD/22X5Ofo7ORHaKAWdMqa0nHSBduXffjkcjueQGyxsTaQiMSL5bGDnueQ/65+f3nVWBCXJE0M+IIp+OB2ecHzdf1N9heoaiLDD6G2HqSymlIRX/uVfJRKGOMBnD4vf8HMCgstY4wFhrHtYj39ePY5zO0Zm65hE9L7EUeunt/lmFsxUpSggIuoBVEBIXTgKwWCeSWmVbKAY9E4CWUrMUC3I09Zdw9mwiSmkTn2v1XMqWzAW+NksfGjoxGZxNdcsdvXWBCuMrrJXan7TtuLBIYS30B1jWgewqu15mBV4IyKXgC5l5qsnkBNCksLS3oXlpJ2REEaQdWErCtdxxCYL/uF6g9x05KDIWpLKZo5oCIRXEsmHJC/7rp7/iyxV4f1f8z9+/If/3DVqsrLn5VhZAlrZ1VTMkjwyAczLnuN4qVG9WUrVjYPDb5vv9vSfgnyk0hT96qhitFqCqx9pSh/WqdXdLXUK1+TZ9yIJUKJgJUq5lozXXsluAyIKVaW+y4FstDhBCQKnlvFncgTSn1QGcdVC9MtuYGVUEgBXmzDljvQTkCGxbPaDBEOplASLbFsUd5s8DQUvwn1WxTwnuUtbGmPSWoXtX7mf6aTXxqgCuLiCt5Pe6J5HQRHoyrcvFROFt25CrZQ9LZSTqzh66pNMYdLCLuwDYQ0FOxeoAoCfB02Co1IwwPSsA9ZZnOcxn+tAlgDTfep4s1VsPXZg5onKX+WcmiDxvjo/I6zW8YnQ+cL7/PkMBdRwtcrxWS+W42UZ0ZWXI+Iiq5j7wnftJVVe7aUyZrVqj7WHxg1tW/PzPX/DrtzfkpPjnv37H2y0hl4i4AiULSt6tTtcCvG8Fv7wl/PPXDfvXK37/psjvAtkBbIAkO/xruLb5sDHRrXXqm/TwCh5Un/PmDHafpRg5HbMjMkDG2p3RHPZi7/TZF+2Q5bLX6sRdrdAdbLsOUmuBSsDmXmBJzPze8+JGc6SFcz+prgd0wfAo8G0Xy/RoQWDQNSBcLkAG3t9N5FrjBahijRftGoog0qlo35+fPZnejethOcGOaxiCxQKy+APdbnyal33fxwRsoaeu4fzOyMb7OsUAc18hEqqpcNUZtWg4KUWxhIAYghWQQJdswgey/4fi2+BYpaOymQf0jLzYUN2MjjB3ECv6ZPCzM1Fpfod//syBi216pjS3ycmax+6f/SN05njWLB3BQm7Ma9cEuS1l/PrbG+K7BfTuWQEJyCpVVreaZhIsDe/7PQO44e//+xe8ba+43d5xvxXkxHAeIMQAVct5boc02ecnt5RPvcoD41OJHC+Zx7ooT4PLxyRqfzSns7jh94h//yCmov99DtEZL7CPU7WkkrFg6bogp9QlY6kNwDTnghCNeSzLgpQNidilkxHdnqBnOoBmxfWfnZFP33u2v872/Rk9tFpiPJ+zzlFEsEBMOV6HvdYL2zzn6zrFiKK5IUsRs0DTxUfDEbTM9DxHNzoKIQOiH5BfnABn2qxypimEj4xjaJumxckU6zfXI/JF+vyzTXHob70wKlSBCQXWCdy2bdgYvLV4S9Jrfe6vH98jy5RUCM3sl+acFrCVjKSoeaQKXl4uiNcXyALkLaOkHVoywhoBKdgz8Ou3hNsOfNt+Q/z5G1LasL9FQ0saEFUQcgRUmwIylK68PiN/wczz6pHobEp/Rn6zE2WmlBAm/aIn7yPG55dgzJV7y0RtGda6aNexzH04O3yzBfJMEqDfWfNpctkjG5NYFohkvKyCy3XBX7++Yl1X/OPvb9CrALpY+EsMw/4wkae0pHWqPaSE1PoEbW4RXuc002zt4p72UQvcp0yHzEvaG3QADL83ZOX6FBeLOjDkhVakc/fMvvbLEhl2KWZOqzLTdzEl/78XWxqjkSOisA3DmxZND+PbPSPPFBjbdPZdD/N9P70Pypl39pmTGz3HS+n+O8WlyGW/vHjY+nu2iU6GVjApNquFThkuEgDVbOlPkmU7TCljrTHjOdc5hmDbC0IUIAfkbbe0LntAyR7V8iWcb87vyZxPYu/ZWvZ2nrhCTOTXzaMB6pjO6PTyerBXPKMxceL4PZsGaYYXYPSZ85LAIL44kWoW04c+5A1LLHiJAT9eBH/9auWEvq2KCyIgC76lgj2MaWQANOuxZ/j+HaqKUnVGZ2qReS6Y5ZUSznyxsAwXf/e+RP47FLFnBKWurTP0Chiztjzc9n/z2gcvbb8S5/RdLgFz2g+ve5jhM/mjqiInigwu2lk7zOT3ZwYzoA+oIS/vsVyTxl+v1wOj8RU5/Kb1izHTfMD8DUVGpTimEj3LUc1YQC8uwt2QvCXishiUrbW6kABAcL9lJEmW/N2wb2eytf20F7wjQ98TwnKBqmBNimUxJaY45aK5bjBPEk73A0OGPKr0pnA/l96X6xlaot4MQPU43psY5+eU7+B3vT9TE0lSQgyhZWHk5wxy0Pq+7BgdD/EZ84zrMnzus2lyXGGaqFDf78VbEcG1bLgK8LeXjL/9KPgff3tBCAGX+wv+/vMN7+87Qi5IZfSps9WWNv/UBTHone9ca+05XrIhjFV6/FnxVXp8HTwSmc6ZfolMcY508Gsv2lMse6buK7BclmhuEqU/6y89xRGgzPSHXQKayOYdF3OP1+GBDcG8S0Wqw2XuNxCJCGUY+DyIk1szhIBUMrZtw/V6xeVyGTi77/ew0ZwY5xf1mTl/8OrF8WY4nzhjRIwzagshffwW/7RXEYtxRJUBKICgTfw1hsT3mTe37oamwm6pg+96Q4wrWFUiJdvApZo9S3V6jdId/zifswjqxYxZr3S2JmdERMRnvNgzo0t/o88e9GzNTNhVoV1qZZ2SW9hTjAGWqaOjVYWe619criSO1aPE+sqxBzqGSPG7JiorVgUuUvBlBS5LxGsUxJQRVfBDXPHGckjQnkjOmfrPLjg/b56GfqKfycM4T9QMAA4Mxzsv+7S78zpJtEUo9AOo+lGIOdtqyVDt1toQYstnBq2J706MQDN9KL49GuiIbrzPSR9sTxB3rEH+aGM/U8QB46bmYtLy4J971D5hrq8me/o9jJY9e98YZvBH6bjxq3xOq4RalHdQC+eVYLmYtOkRRmtigCCoIiqwvqwViRlEJsoLVaqJISLGgpL7/DSdzTKmi/HvGN43beZn80BdjB/3zAyB48Uz3878jBchTct+T/DxmXF+JO4AGBjD2WGc+zX/3DRAUsZ9A273jLdvN6RLLSKRgawBIb4A6e3Q5nwW5veq6kHc8kz0e/ahnwNvdfbSxCyePxx7qJes1rXQarCpNitFjVhQ54uFKnHVY21hVf8GUnrWwab8yxkiS2NG3mO4JTSTyjXdBPAQ+A03v+/sBme/CKG3bWvw22ez9Jtulp1ny82jOeJ7mtgWRzP2w01RkZLZZWwhm89OdZvwBQvNPzaaI16xevAiACQDwZZoIYJMGUvt93W1uvOrAD/854/YtoS0F2x6B7IxJgOoat7kIUDKeMN6PYKfm2fzMczdA2rWJRmdHLkHQjAr0ly37kz0XpFN0Z0zRIDLIhAUBLFbWrWi9ckF5FE/57TBZ4zQ1mVE7p4p8/u7/giRG359uyPpDtWfsSwLfvk14ddbwJYDdlgYhohdrm9oDAAAFa9JREFU3txTc3vsd3sneiQD0ZUxqu3Qj0frMSNCfnYmhh/ENTd2EbG0KHUtI1y5L+H/thhSfxYt2NM+jNP6c9rVPp5n3PblclWv2G46HZc72HP72Yzua7+9rlarK1ULRlZtpZ1zsdSuEgPWWFFMtprmjWIkdke8XBCLyw1Tx+Aj+tsiyw0hCPa9pvIIrZnaV+CK6iSqnYEVdP2Qj905EysP0NgpzLm5SEvsVV2o2/BMeWYKglpTLGhj8BxnSqaLWC8Rry9fcb/fh1zWPHzeafQ67Yii2rySvcppd4iGa0x9BPv7rO7bpZqB+VysFqbkqlkMIrQT+zm+nHNNQ7IPCG72cm7ze8JgBlGLFtt91KXwea+/2b1/k0jXkdTvLmJWaOSCrBkQS/+8XC5Y1xW37Y7bdm/zGtt+mxTEvKxqauJZRXDGbPoe0bZgqsCyVPSltq/olOyNCtfL9XBGIMUxPOpNUddDeiD2g7X21nhRtDAwjsvroZjl475vD1nTB+lwH0+QV2i371bF9eG7MipIGwS3+sCA48xNpHrCLGdGOusG/PtZ7tvKHY18DqiXq9sw7ecJSvMKPnt2tOS1Nk9iuoqOYgLFq/b3SYfjRnu4zWZdQSlWXYWVfIfb1iFRoDOhdntxfG4u/ZzO4/PGjmdkF48r4/SdIscsgg3iuttfHz3r54f0yF3Df3d+tjG2J88UwHIQlXJQMKvqqVWw9dkp/P04ZhQzktu07Zl5HIKSe0GEM188oKImPfo2sdt2KdUspg8kmTYPpfQkem7G5n300R54ypR8lQcOKude+RPAoW562946yuv3fWs31V43WqyiCeVQZMv9MsAYUukhAprzISZLodhTl7+bf4nYrRtEkYsxpnXt0FNwnh+c1jbBmFvHMyiPzPzPlgze34p1SLxRQhn1M77tsR+W+cAjJf+MHQRFyVt/f/Ul834v/FkALEvvu+47Ek3T0kVUeuh6PRNvPH7+jIzp9fe2+myY9GoT+YtJ1SxK/psUafym57997vexH6Ph5JGfDP2SPGprTFq7ywiplFKDYS20QktB3rYDIrT9fGTiZ3m7h7HOiKaNd60IqZ4JqRV1YLqbnKsD7YO59ZbGLsqNOCDG0Y1GRFtIj+/fbI2jjne+1Nr/GA0bZ/RB6pKx0B4w6gpsgnrQK4BmcSlaWpY5ETNvF6Dd0qzlZZ0tQCktpsfrHUgpWSBPM4+X0Tw/Kj774b7faWqOVXQbHQBLKZCwtA3RNiSqL432mCIfMzegOnRxwZtuSV7f1ZhSCIM/k0eSw3yfXCr8HsWpnAtiGD3aPbIbxJcp6PjsIMxj8+P1usBntO1bi/FalgWFot53oCX2gQYJYLp5MbqfsH98zu+d2V8HcKl2IONPN/ds48CUeNnQmVMEcenMZa/mdgDdrUDkVPaZpQMyuY8RhQAaBsYksGIJxnQnJl3DcfJJIcju5tJUQgAwiNBdfDs3AHB/W0K9+4BImzqkSgoxxFNG6+lDpvQIdvnNbq5EOt4y6JtiRiIxRpTsDqAfa61MGqTnUwaAArYrNnEtJ7X9vTU19ZevZXUL1VLzOJt27pEYEoKlucjTQfc6NIoW3tVAHmzAWYHrRSbf7zMEYZ9p++k/pyjonycD8jeUF0OGtL6ltM1IZDMjNn94ulgcn954Cu1KT/S9RPFLVVuQNtCRGVO3Mo0vcfgBeeK45ziPXg/2bH49Y2sXhRv/zIT6WvTnVRVS6mXpPxNpKVNqB45z5PrTxhXGMZ4iSjalAUx4xb2uDFCGoEypZ7uFfDQ4+fntqGlSSQQckBLJ++81VYpLT+3P/zPxmfShTmn+nYvoQzgGS5KD5kzAtcTFqmaIIIQ4HEaRHvQKAGExt3uRnldHtYcp7Pve3PL5d7rq3+/3gWn4ifCMBcCwKPsURkKGwb5x0mcF7bIszeGNjICOcP573KgAoMkdmhNGSoRAUblkHhR797ouuFwuTZmtqohLaKIwERLnyNekizFCFjs8uVqyri+W6cAspRgcGtknn896Nno8IoG0pHsPTc7+kqsMYjZ7Mxq/zadDOURMbV9qr5N2Zt1iu2eOkTMjz2kM+YjOo1rEdKFBAxLUEhjycDsDB/fBnvaeVkfH+SWqagnlavphfm8uZwZYoYnLugJSsG17/azUfQP4NGNa/cX8vJ6tXalpP8zZdsosS+fn0kVOe2fPe9XPV00P7IxgMUYE7eM/873y9F1hJh55DIjghPhdv4HaDQD0nNn+He7GjDE2T20OfL7x/Qbi5j1zunsEf+eb9ek4pk19hiA8nYkLNl4ZnqEIO/f9iPRG6x3H/Kjv/PtHcrv/fh+H3bYix36w7x+LFnUeJNgGncflGHG0RhtvEjGvYQfbDDU5kXleg7PxnPWbdIZk/Z79aJ7av/k5kbqO31XtObgDjg6LPMjz2HhBz2duYJAh1jp/lkm0q1RMArAsWKGN9QzdDb5OVXTzYi9j2qwP7MdxDH7+zubs7O8f7Z2PdUrMjzQpvDnJOechuRqVkJ5DW2N1Yhv0hqXMZdmm+s6WcycE3Is2861WmLqEWNNKVEhZqGCbM95x8kalMye/M7pRJCI9OgAeaXFxucBU+uXSmUl1Kz1syrk99pF+O/zbbPfxf6PoVYrWfN5d2eiZ0qDf4iZne0Q+IQDF/MZpEJjfOYf6PCOK6OxrQ73iv9PdOtjumWMgUWv/vafJ8fM4p5N5xOxlmtMW6OuePYgcOsZiNgQsZgb3zElVLbl+sJzaCAqdHEk9mvJ6pebDVaWC2cgiIoiLIqWbrfsCXNYF25agzu9/WQKijDpFoLsEeEZcdAxfIbOckR0kNpDgDT2eyc2pjTlPS1wGnvGMPgwz8QspUkvglJELHmAyRguULYBtkIWi17bZAdHKkOpA7tu9W2qcr0NTlNUseff3Yz4fL5LNzOR70JGnbsnpSmWvjKY44zc+RYbX11fs+27WL/TF9/q1fbf8SNwM3v/n7Ibp/dcmirGfkNI81Pnd+Xbt7XVdnGo/uN8zXx8pKD3lnPv66ZiyvvWRd0cHUO73vneoSGZfyOT8fA45rt2FwXd9z5qbHuyoX2pz4vRXg+JdRqQUY0SUrhONEGyO2Xp0xD7z39z7/K4XwxvKjpbyIULw5YcLvnz5gpeXC97f73h/u+P3398h0tOa+vXrl7GXOlzeqGw6pctlvDDM6HV0XTjM7RTX5vV2A4N7Qt/PlNjYtC+9IxswiinDItR4hzlMhE8BaAwqYITZ0f071H7J2biY5V5qng4xM6npG7ppoS1I6+953JHvf1uYEy7vRUneel585Y3ekFSuNbFO9Ax+XmwOOJ/sF/rf6k8JAfetxyzxtvWxWny/3z+E5S0hmvb3+Nv1oyIKj8ijapYLJ+qZ2/AHsz1P9Dj5cHm91qDnOUGi48VIeeTYz9my9IhRd6bEdurcTYzJM8VcsiWCOyF+pznP6rGI4wE5tnVQrGvE5bJUR+X7oXz7/ByRC+dhnkP69Xn9aWfyo/rmNCRpWkfO7Zyx4xk9DzPRqvCNxlQkRlzEiunpniCqECi2UEsEcaSAlajWKl5EYA2V46cdWoopkAk3gwXYWgFEe08IAZorExOB1ODdrJamNWJkEDFGSBUCc+pu+MvFDlpKe1PimshTb9FgaUlFLOE8AMukJ8zRAyxRASQUDYMII6iMtB7qBQGrRNxcRDypaAGy0zeIpZU15uj9VSJSocdxwFprlCFURXMVFXL1ybKKI9LCV0SqWKPAl5fXXnapZKvsAeAaV+T633zJdPzfSy8TslOh/z2IKUtdKwgQQgu+9ptyq17Tg+tHybheru3mLiUfDiYPb0TXv8QYoakeOFrwMBpROLTrYoaXdkgpnqFafmPEEiJu6TZMy1LFzW7cCIjqKo7U/NVa3VV2lo1fAkpO1T9sRU59LHvKdW548HOzXF2uJmpZWSXrY6hSh+35BYIrtjvw6y+/4na7oZSCZYnYtozlIu2c2Dlm0j+Oyd4XpYeAMQkgL9ZcAIhAEBDz1lFkKU0pn9TERcC2ExkZxUGmi1bVhoKf0Xe7BNAkWtTSEgR1sV3T7QvA8movFpT79ae/4O3brVegiLGjoBj7hgWgOsbEeS5LsjzB4+3hLRb87iwK8e+zWOSd2Awqc/wUtUq7QeY0Ln3c9Wbc0W47fyPZ3PUKLM1cCsfkpFY7bWLrye2o2hDygDowpt4QsZw4DYURWtbDZx4RTxSV2uPSSD6tyHx7P6KiZQhHmef+TIfjxXeGXzTU59a9TCLR9Xrt6GSymPr3ppRqRWEM+j5aOEspSKVbA9k/6no8IhXpPm8+g+csJq1rQAijGMp1GdEHz1lpIuoB7RRFSqjpR/5V+0yG3ePLvIXc9nVvh0wkpTLMmZzsCX62hoitWPjX5XJpjrC5in32oDTdcuvvhELn32f6MCBX6gRpXSxRtJsITYn7OLKanHKG1B7mNeg+iXX9htMD5D4MdDokXV52uhfw4J+XaiYRwTRHTV9GyuttJo7PxdCpf7ORAKgHrixQjKJIKQnVDNBEWNXny+j74pWx3rrjD9SsazmD076w6KwD+V60RJqdSeeLYjACuHGw353x9lnwZu65jTYnD8TMZoDgGuO4ntw7fm74roEZOvWFSE+0No/TmIZ9npJP9vbYovjIfE/RTbUzo5yrV7crpf1I3Cbjqm8Z52Y6e2d/a8gV85mz988O18Ckg/t3mBI74uGvFiKk0Bb2UmFtRq9CmrIpxFNKuH17w55HZaR6U36oTKOUIQfPYWDuQGOSTR99fxY5/ALNsrFNqjT/owNz1FGmhjvUInIavjAobH0u7NRhLYBmGAghoGiGiGWXbNVHwI1UDm4K9KgdLKVEZ27cdgC1BUVLZVRnfiPFFQaYGdCZQ+xMnsmcXSCtnxjXjmgsaO9bQxxTW96zH+ho2V9Afq1JUbo3vdcTesY5lNx2/U45NQ/lBQuCEyG9JXZmkKyT6BmoXRqjQtn3+cwaaO8eraO2Z8c+cy/P82u/j2vqJQvvEsD5Z3+TlhaRYYUvRgfmGKOFde2jHrPkMoztI4T93YpuMgEJZjURdOUzWE8LFmmvAiwvK0K95ff71uKrAFgGgGlS13UFSmmHwYtaRacCBlmBBp/7YnlxoC165dGtXIwEZK0xTvXzJXYLh9ZVW5eIlHZse6oOlAUq3ewvIki5OD2VAEyk7qw4vk8+epr6iabojJSmpOvrxSEKty6x5nvOhcpHxWWpY3DhN02UgEK01rYXtMIFVlnFHFYPVM3RXqfENrn5zyrreppdIdpY9MiISd6yyMvkzAo85wVqimKnoPVexWxPRKC5M/ZhDcJYEZdMaK2FLUspkFzXVN38ujbmw94vPiJgNKuYmdXXundjZcB7Ay+eWXlaYkRKTGlijsb7vlve91KgRVopJTIXe1/XKaV0RP8elVJv5o0vqwTsFlxnzsx175ecansZEuOQXXaeC2ts3ikjfZdHt0HnLs8KgGW9IiiwpTtiDi0xvtaXmom7KVPoVGTtBSsU6CejlAJ1MN8vNJWVg0Nm6ZzYk0cGAJp3NCPoc85D/I1naope0PLb27dhHkLot+u8UZrsLj1ly6NbkwdxGDf65otRoCo1FKZYZsMQWvlxex/FA7Sf960ziOa+wTGio7QtbZaKt46ZcX0cBxkQGRIRXu/f9wXkso35dvSI4Mx5sKFn1yeiHzIaMvz5xmW7PpB8RiFADZGphg+GQ7E9Fi6I1U2DJcNVtbl4kPHv+z4EGJ+KoxQDoQdGwLm3OX3sxzYj9JzTgLz8cw2J1/Z92h36tVGZbXtgPAN+HilFeECwOEvzcqlpdZYI4I6cC7Z9O4jWmJHZv6PofkY2EYJVVoRolgYrNwzTgxTzT48QRFXc1dBNc6cvzmTKmP/Sg3I9+QG1gF8cfSbmGBwRaU5ssiwooftj2OSYi8GWq5URESHEljwOqMppNURVaj95m/NGoMNoXFYLAcnd/f7stuubLGJZQtMjlZJwvb5AkVCNVsDWrSF93jtDov6LyT3VzcuZw2aUmk6X2Sklt5txvVxxbxfKGPM3M5WPIDjRpB//GRPhfM7zdBQ5XPoXKO7b3S4QdIW0D3sgQmK7RD0AsCyVEWvXl7INjvusUOXsUGgMpTOBAQ24eTOGZjnSRQDUAFlzjmT7XCsd3jPPO2B3vIlnTmEeFqRkfbhcXqCqeHt7Q86KZQntcvahW8/W0KMkrs8CAd1YUkoto4QG6ucElKZ9/z/SIc30f82U7DYyzVJKZtwvAFo29yrTShk3WNNtlGNYiIgM+hISNx6/Yx8e43i8HEuiV+yMoDzNVhX/PdEeYzX0yYkTxKP+5p/77293/iQioAMkYJVnIQUim23i0Jlwe9ZZWjiftAIRTYh2Re0wLqVZuY6hBkCjaLOs0ug3HwyO8WwOZxrQw2So4N/mw+fnyc9zG4PTKTWrlcowxkeiov/bGfOb0U7Bc4fSeV7Z1uxrdnb4yRDV7eFeTv2Ilnz7j/5Npjw641oEw9y3+fkz4voAk3hHRlVKy4uvoQfyinysb/yI/jBTen19tQ28WeXOy3qBloSSNjMzvl7MjyZbyeGcreYYBshIGbeKBfWWkgqR5wXx4QQkwtEzhjfoBbLJ0E0JLUKe2UqGXy6XJrrwlmyb1lnOogu+JSMQEUN4dVyU7Qfm5A65X7CizE21IC4LgIIffnxFCK9IacPtdsP9t/pdh75oeVG3sdeqo/KMYD4kZj1VoP4kUlxZ4cLpjmbRoA1F9bDBz8i7J8zz6NfKM2d5YImaDwiRHYBhrSjied2doAc4ewbI53PO5k/l5mno0wcMmPvtGcMz3yFDxtT5UMzyl6D/Ptv2UsIj8Y7zwGfvd8t4GWPXCeZcEMKUTRNACKPS3I/Li+rtwq1zstQkfn7MIkCQeDyXH4hrM/1hpvT+/g5BrVIM48oxLEjvBVnUUn3UPESaCrQAlxCQBEApVnap6pR4UJRKaJxP/JyGQ1WxXi8H2Ow37wx9G9pRC1XxxKRYlo8G0MH3KjhlaR7aFgj2tGOpMnRot+vJ7dw4k9sQldnu+17TQhT89ttv+Pr1B2svWvqJUgpS7nFNaNCdajpFybX0cr0oYoxtc5KBm+JfIRqaj1mUgLzbDXutKYtVFRqO+jmOff7sjFqZ6+l7XrykiOQZyIwqvQ7Hv5viG3+fx8s1G6xH9dIJjlEZ2qoH26X6oH5xZtAz02QeIc6bj1gY9or0UKXGsDFlEYUiBmnjvayX88vhZOrJaNkHOzM+INrcB9a1GxfY9u22nbbnlfj99+7OQMSe+32PuIymfwKOP0JPc3R/0id90if9/6Y/xsI+6ZM+6ZP+H9MnU/qkT/qkPxV9MqVP+qRP+lPRJ1P6pE/6pD8VfTKlT/qkT/pT0SdT+qRP+qQ/Ff0fstLBdqGR3eQAAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 360x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"img = PILImage.create(f'{ROOT}/images/{train_df.objID.iloc[0]}.jpg')\n",
"img1 = PILImage.create(f'{ROOT}/images/{train_df.objID.iloc[1]}.jpg')\n",
"s = SiameseImage(img, img1, train_df.metallicity.iloc[0] - train_df.metallicity.iloc[1])\n",
"s.show();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Updated Siamese Transform"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"class SiameseTransform(Transform):\n",
" def __init__(self, df, is_valid=False):\n",
" self.df_, self.is_valid = df, is_valid\n",
" \n",
" self.obj = list(self.df_.objID)\n",
" self.labels = list(self.df_.metallicity)\n",
" \n",
" def encodes(self, i):\n",
" \n",
" obj1, label1 = self.obj[i], self.labels[i]\n",
" obj2, label2 = random.choice(list(zip(self.obj, self.labels)))\n",
" img1, img2 = open_image(obj1), open_image(obj2)\n",
" delta = label1 - label2\n",
" return (TensorImage(img1), TensorImage(img2), delta)"
]
},
{
"cell_type": "code",
"execution_count": 400,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[('1237648722289557713', 9.146013), ('1237648722289951035', 8.854792)]"
]
},
"execution_count": 400,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list(zip(df.objID, df.metallicity))[3:5]"
]
},
{
"cell_type": "code",
"execution_count": 417,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"9.146013"
]
},
"execution_count": 417,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[df.objID == '1237648722289557713'].metallicity.item()"
]
},
{
"cell_type": "code",
"execution_count": 418,
"metadata": {},
"outputs": [],
"source": [
"def obj2label(objID):\n",
" return df[df.objID == objID].metallicity.item()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# hm...\n",
"class SiameseTransform(Transform):\n",
" def __init__(self, df, splits):\n",
" self.df_ = df\n",
" self.objIDs = list(self.df_.objID)\n",
" self.labels = list(self.df_.metallicity)\n",
" \n",
" self.valid = {objID: objID, label for objID, label in list(zip(self.objIDs, self.labels))[splits[1]]}\n",
" def encodes(self, objID):\n",
" f2,same = self.valid.get(objID, self._draw(f,0))\n",
" img1,img2 = PILImage.create(f),PILImage.create(f2)\n",
" return SiameseImage(img1, img2, same)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## General transform"
]
},
{
"cell_type": "code",
"execution_count": 395,
"metadata": {},
"outputs": [],
"source": [
"class ImageTuple(Tuple):\n",
" @classmethod\n",
" def create(cls, fns): return cls(tuple(PILImage.create(f) for f in fns))\n",
" \n",
" def show(self, ctx=None, **kwargs): \n",
" t1,t2 = self\n",
" if not isinstance(t1, Tensor) or not isinstance(t2, Tensor) or t1.shape != t2.shape: return ctx\n",
" line = t1.new_zeros(t1.shape[0], t1.shape[1], 10)\n",
" return show_image(torch.cat([t1,line,t2], dim=2), ctx=ctx, **kwargs)"
]
},
{
"cell_type": "code",
"execution_count": 396,
"metadata": {},
"outputs": [],
"source": [
"def ImageTupleBlock(): return TransformBlock(type_tfms=ImageTuple.create, batch_tfms=IntToFloatTensor)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def draw_other(Z):\n",
" obj2, Z2 = random.choice(list(zip(self.obj, self.labels)))\n",
" delta = Z - Z2\n",
" return obj2, delta\n",
"\n",
"\n",
"def get_tuples(files): return [[f, *draw_other(f)] for f in files]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"dblock = DataBlock(\n",
" blocks=(ImageTupleBlock, RegressionBlock),\n",
" get_x=ColReader(['objID'], pref=f'{ROOT}/images/', suff='.jpg'),\n",
" get_y=ColReader(['metallicity']),\n",
" splitter=RandomSplitter(0.2),\n",
" item_tfms=[CropPad(144), RandomCrop(112)],\n",
" batch_tfms=aug_transforms(max_zoom=1., flip_vert=True, max_lighting=0., max_warp=0.) + [Normalize],\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 127,
"metadata": {},
"outputs": [],
"source": [
"splits = RandomSplitter(0.2)(df)\n",
"tfm = SiameseTransform(df, splits)"
]
},
{
"cell_type": "code",
"execution_count": 128,
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'SiameseTransform' object has no attribute 'valid'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-128-8161a88e3ce7>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mvalids\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtfm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalid\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mv\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mvalids\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mfiles\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0msplits\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAttributeError\u001b[0m: 'SiameseTransform' object has no attribute 'valid'"
]
}
],
"source": [
"valids = [v[0] for k,v in tfm.valid.items()] \n",
"assert not [v for v in valids if v in files[splits[0]]]"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tuple"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b = dls.one_batch()\n",
"type(b)"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"ename": "NameError",
"evalue": "name 'SiameseImage' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-97-eb9c090722c5>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mtypedispatch\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32mdef\u001b[0m \u001b[0mshow_batch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mSiameseImage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msamples\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mctxs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmax_n\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnrows\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mncols\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mfigsize\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mfigsize\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mncols\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmax_n\u001b[0m\u001b[0;34m//\u001b[0m\u001b[0mncols\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mctxs\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mctxs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_grid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmin\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmax_n\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnrows\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mncols\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mncols\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfigsize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mctx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mctxs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mSiameseImage\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m'Not similar'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m'Similar'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mctx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mctx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'SiameseImage' is not defined"
]
}
],
"source": [
"@typedispatch\n",
"def show_batch(x:SiameseImage, y, samples, ctxs=None, max_n=6, nrows=None, ncols=2, figsize=None, **kwargs):\n",
" if figsize is None: figsize = (ncols*6, max_n//ncols * 3)\n",
" if ctxs is None: ctxs = get_grid(min(x[0].shape[0], max_n), nrows=None, ncols=ncols, figsize=figsize)\n",
" for i,ctx in enumerate(ctxs): SiameseImage(x[0][i], x[1][i], ['Not similar','Similar'][x[2][i].item()]).show(ctx=ctx)"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"> \u001b[0;32m/home/jupyter/programs/fastai2/fastai2/vision/augment.py\u001b[0m(141)\u001b[0;36m_get_sz\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32m 139 \u001b[0;31m\u001b[0;32mdef\u001b[0m \u001b[0m_get_sz\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0;32m 140 \u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0;32m--> 141 \u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mTensor\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mTuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0;32m 142 \u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mTuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_meta\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'img_size'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0m\u001b[0;32m 143 \u001b[0;31m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0m\n",
"ipdb> x\n",
"[(TensorImage([[[0.0000, 0.0039, 0.0196, ..., 0.0471, 0.0549, 0.0627],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0431, 0.0510, 0.0588],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0353, 0.0431, 0.0471],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0157, 0.0039, 0.0039],\n",
" [0.0235, 0.0235, 0.0275, ..., 0.0157, 0.0078, 0.0118],\n",
" [0.0275, 0.0275, 0.0314, ..., 0.0157, 0.0118, 0.0196]],\n",
"\n",
" [[0.0000, 0.0039, 0.0196, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0039],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0039, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0157, 0.0118, 0.0196]],\n",
"\n",
" [[0.0000, 0.0039, 0.0196, ..., 0.0235, 0.0275, 0.0314],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0196, 0.0235, 0.0275],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0118, 0.0157, 0.0196],\n",
" ...,\n",
" [0.0235, 0.0196, 0.0196, ..., 0.0157, 0.0039, 0.0039],\n",
" [0.0275, 0.0275, 0.0275, ..., 0.0157, 0.0078, 0.0118],\n",
" [0.0314, 0.0314, 0.0314, ..., 0.0157, 0.0118, 0.0196]]]), TensorImage([[[0.0471, 0.0510, 0.0510, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0471, 0.0510, 0.0471, ..., 0.0275, 0.0235, 0.0196],\n",
" [0.0549, 0.0510, 0.0549, ..., 0.0196, 0.0196, 0.0196],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0118, 0.0157, 0.0235],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0196, 0.0275],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0157, 0.0235, 0.0314]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0118, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0000, 0.0000, 0.0078]],\n",
"\n",
" [[0.0078, 0.0118, 0.0118, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0157, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0196, 0.0235, 0.0392],\n",
" [0.0196, 0.0196, 0.0118, ..., 0.0196, 0.0353, 0.0431],\n",
" [0.0275, 0.0235, 0.0118, ..., 0.0235, 0.0392, 0.0549]]]), -0.06884900000000016), (TensorImage([[[0.0078, 0.0078, 0.0078, ..., 0.0275, 0.0235, 0.0196],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0275, 0.0235, 0.0196],\n",
" [0.0275, 0.0235, 0.0196, ..., 0.0196, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0157, 0.0078, 0.0039, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0196, 0.0118, 0.0078, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0078, 0.0118, 0.0118]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0118, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0157, 0.0078, 0.0039, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0196, 0.0118, 0.0078, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0000, 0.0039, 0.0039]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0157, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0078, 0.0000, 0.0000, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0118, 0.0039, 0.0000, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0039, 0.0078, 0.0078]]]), TensorImage([[[0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0196, 0.0196, 0.0157],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0157, 0.0196, 0.0196],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0078, 0.0157, 0.0196]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0118, 0.0157]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0000, 0.0039, 0.0078]]]), -0.3797359999999994), (TensorImage([[[0.0667, 0.0588, 0.0471, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0588, 0.0549, 0.0431, ..., 0.0196, 0.0039, 0.0000],\n",
" [0.0627, 0.0588, 0.0549, ..., 0.0275, 0.0118, 0.0039],\n",
" ...,\n",
" [0.0275, 0.0275, 0.0314, ..., 0.0196, 0.0118, 0.0039],\n",
" [0.0235, 0.0314, 0.0353, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0118, 0.0196, 0.0235, ..., 0.0157, 0.0118, 0.0078]],\n",
"\n",
" [[0.0275, 0.0196, 0.0078, ..., 0.0039, 0.0078, 0.0039],\n",
" [0.0235, 0.0196, 0.0078, ..., 0.0196, 0.0118, 0.0039],\n",
" [0.0275, 0.0235, 0.0196, ..., 0.0275, 0.0196, 0.0118],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0235, ..., 0.0157, 0.0078, 0.0000],\n",
" [0.0157, 0.0235, 0.0275, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0118, 0.0078, 0.0039]],\n",
"\n",
" [[0.0314, 0.0235, 0.0118, ..., 0.0039, 0.0039, 0.0000],\n",
" [0.0275, 0.0235, 0.0118, ..., 0.0196, 0.0078, 0.0000],\n",
" [0.0314, 0.0275, 0.0235, ..., 0.0275, 0.0157, 0.0078],\n",
" ...,\n",
" [0.0235, 0.0235, 0.0275, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0196, 0.0275, 0.0314, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0078, 0.0157, 0.0196, ..., 0.0039, 0.0000, 0.0000]]]), TensorImage([[[0.0118, 0.0118, 0.0157, ..., 0.0275, 0.0196, 0.0157],\n",
" [0.0078, 0.0039, 0.0078, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0196, 0.0235, 0.0275],\n",
" ...,\n",
" [0.0118, 0.0000, 0.0000, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0196, 0.0078, 0.0000, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0314, 0.0157, 0.0078, ..., 0.0078, 0.0118, 0.0157]],\n",
"\n",
" [[0.0039, 0.0039, 0.0078, ..., 0.0235, 0.0157, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0196, 0.0235],\n",
" ...,\n",
" [0.0118, 0.0000, 0.0000, ..., 0.0157, 0.0235, 0.0275],\n",
" [0.0196, 0.0078, 0.0000, ..., 0.0118, 0.0196, 0.0235],\n",
" [0.0314, 0.0157, 0.0078, ..., 0.0078, 0.0157, 0.0196]],\n",
"\n",
" [[0.0078, 0.0078, 0.0118, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0039, 0.0000, 0.0039, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0118, 0.0157],\n",
" ...,\n",
" [0.0118, 0.0000, 0.0000, ..., 0.0078, 0.0039, 0.0078],\n",
" [0.0196, 0.0078, 0.0000, ..., 0.0039, 0.0000, 0.0039],\n",
" [0.0314, 0.0157, 0.0078, ..., 0.0000, 0.0000, 0.0000]]]), 0.34992499999999893), (TensorImage([[[0.0157, 0.0235, 0.0275, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0196, 0.0118, 0.0078],\n",
" ...,\n",
" [0.0196, 0.0314, 0.0196, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0196, 0.0275, 0.0196, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0118, 0.0196, 0.0118, ..., 0.0078, 0.0196, 0.0235]],\n",
"\n",
" [[0.0157, 0.0235, 0.0275, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0196, 0.0118, 0.0078],\n",
" ...,\n",
" [0.0039, 0.0157, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0000, 0.0118, 0.0157]],\n",
"\n",
" [[0.0078, 0.0157, 0.0196, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0039, 0.0078, 0.0118, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0196, 0.0118, 0.0078],\n",
" ...,\n",
" [0.0000, 0.0118, 0.0078, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0000, 0.0078, 0.0078, ..., 0.0000, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0157, 0.0196]]]), TensorImage([[[0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0078, 0.0039, 0.0157, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0196, 0.0196, 0.0275, ..., 0.0039, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0039, 0.0039]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0039, 0.0000, 0.0118, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0157, 0.0157, 0.0235, ..., 0.0039, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0039, 0.0039]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0039, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000]]]), -0.5190299999999954), (TensorImage([[[0.0392, 0.0235, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0392, 0.0235, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0392, 0.0235, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0275, 0.0196, 0.0196],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0235, 0.0157, 0.0078],\n",
" [0.0353, 0.0275, 0.0157, ..., 0.0157, 0.0039, 0.0000]],\n",
"\n",
" [[0.0196, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0196, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0157, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0275, 0.0196, 0.0196],\n",
" [0.0196, 0.0118, 0.0039, ..., 0.0314, 0.0235, 0.0157],\n",
" [0.0275, 0.0196, 0.0078, ..., 0.0353, 0.0235, 0.0118]],\n",
"\n",
" [[0.0078, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0157, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0196, 0.0118, 0.0118],\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0196, 0.0118, 0.0039],\n",
" [0.0314, 0.0235, 0.0118, ..., 0.0196, 0.0078, 0.0000]]]), TensorImage([[[0.0118, 0.0078, 0.0078, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0275, 0.0275],\n",
" ...,\n",
" [0.0353, 0.0235, 0.0196, ..., 0.0392, 0.0275, 0.0157],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0235, 0.0157, 0.0078],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0078, 0.0039, 0.0039]],\n",
"\n",
" [[0.0118, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0353, 0.0235, 0.0118],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0196, 0.0118, 0.0039],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0039, 0.0000, 0.0000]],\n",
"\n",
" [[0.0118, 0.0078, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0078, ..., 0.0275, 0.0157, 0.0039],\n",
" [0.0039, 0.0000, 0.0039, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0000, 0.0000, 0.0000]]]), -0.1087850000000028), (TensorImage([[[0.0039, 0.0196, 0.0314, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0039, 0.0157, 0.0314, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0157, 0.0275, ..., 0.0078, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0157, 0.0196],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0157, 0.0275]],\n",
"\n",
" [[0.0000, 0.0157, 0.0275, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0000, 0.0118, 0.0275, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0039, 0.0118, 0.0235, ..., 0.0157, 0.0118, 0.0078],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0196, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0000, 0.0078, 0.0118],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0000, 0.0078, 0.0196]],\n",
"\n",
" [[0.0000, 0.0078, 0.0196, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0000, 0.0039, 0.0196, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0118, 0.0078, 0.0039],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0118, 0.0235]]]), TensorImage([[[0.0235, 0.0235, 0.0196, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0196, 0.0157, 0.0157, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0275, 0.0235, 0.0196, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0353, 0.0275, 0.0235, ..., 0.0275, 0.0314, 0.0353]],\n",
"\n",
" [[0.0235, 0.0235, 0.0196, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0196, 0.0157, 0.0157, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0314, 0.0235, 0.0196, ..., 0.0275, 0.0314, 0.0353]],\n",
"\n",
" [[0.0235, 0.0235, 0.0196, ..., 0.0157, 0.0196, 0.0196],\n",
" [0.0196, 0.0157, 0.0157, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0118, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0157, 0.0078, 0.0039, ..., 0.0275, 0.0314, 0.0353]]]), -0.04113899999999937), (TensorImage([[[0.0039, 0.0000, 0.0000, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0235, 0.0118, 0.0039, ..., 0.0196, 0.0235, 0.0275],\n",
" [0.0235, 0.0078, 0.0000, ..., 0.0314, 0.0235, 0.0353],\n",
" [0.0196, 0.0039, 0.0000, ..., 0.0431, 0.0314, 0.0431]],\n",
"\n",
" [[0.0196, 0.0157, 0.0157, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0235, 0.0118, 0.0039, ..., 0.0118, 0.0039, 0.0078],\n",
" [0.0235, 0.0078, 0.0000, ..., 0.0235, 0.0118, 0.0157],\n",
" [0.0196, 0.0039, 0.0000, ..., 0.0353, 0.0196, 0.0235]],\n",
"\n",
" [[0.0157, 0.0118, 0.0118, ..., 0.0275, 0.0235, 0.0235],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0275, 0.0235, 0.0235],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0275, 0.0235, 0.0235],\n",
" ...,\n",
" [0.0314, 0.0196, 0.0118, ..., 0.0314, 0.0275, 0.0314],\n",
" [0.0314, 0.0157, 0.0078, ..., 0.0431, 0.0392, 0.0431],\n",
" [0.0275, 0.0118, 0.0078, ..., 0.0549, 0.0471, 0.0510]]]), TensorImage([[[0.0157, 0.0157, 0.0157, ..., 0.0314, 0.0196, 0.0039],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0353, 0.0235, 0.0118],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0314, 0.0196, 0.0078],\n",
" ...,\n",
" [0.0431, 0.0471, 0.0588, ..., 0.0196, 0.0235, 0.0353],\n",
" [0.0275, 0.0314, 0.0392, ..., 0.0196, 0.0314, 0.0353],\n",
" [0.0118, 0.0235, 0.0314, ..., 0.0314, 0.0314, 0.0392]],\n",
"\n",
" [[0.0078, 0.0078, 0.0078, ..., 0.0275, 0.0157, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0314, 0.0196, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0157, 0.0039],\n",
" ...,\n",
" [0.0235, 0.0157, 0.0196, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0314, 0.0275, 0.0275, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0314, 0.0353, 0.0353, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0118, 0.0118, 0.0118, ..., 0.0196, 0.0078, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0235, 0.0118, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0196, 0.0078, 0.0000],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0118, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0039, 0.0078, 0.0118, ..., 0.0078, 0.0078, 0.0118]]]), 0.06953000000000031), (TensorImage([[[0.0078, 0.0078, 0.0196, ..., 0.0314, 0.0314, 0.0275],\n",
" [0.0078, 0.0078, 0.0196, ..., 0.0235, 0.0275, 0.0275],\n",
" [0.0039, 0.0078, 0.0196, ..., 0.0235, 0.0235, 0.0314],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0275, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0196, 0.0314, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0235, 0.0392, 0.0431, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0039, 0.0157, 0.0353, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0157, 0.0275, 0.0392, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0431, 0.0471, 0.0510, ..., 0.0078, 0.0039, 0.0039]],\n",
"\n",
" [[0.0314, 0.0235, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0235, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0196, 0.0275, 0.0314, ..., 0.0039, 0.0000, 0.0000]]]), TensorImage([[[0.0118, 0.0078, 0.0039, ..., 0.0431, 0.0314, 0.0235],\n",
" [0.0157, 0.0078, 0.0039, ..., 0.0471, 0.0314, 0.0196],\n",
" [0.0196, 0.0157, 0.0078, ..., 0.0471, 0.0314, 0.0196],\n",
" ...,\n",
" [0.0392, 0.0353, 0.0235, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0275, 0.0235, 0.0118, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0196, 0.0118, 0.0039, ..., 0.0157, 0.0157, 0.0196]],\n",
"\n",
" [[0.0078, 0.0039, 0.0000, ..., 0.0196, 0.0078, 0.0000],\n",
" [0.0118, 0.0039, 0.0000, ..., 0.0235, 0.0078, 0.0000],\n",
" [0.0157, 0.0118, 0.0039, ..., 0.0235, 0.0078, 0.0000],\n",
" ...,\n",
" [0.0353, 0.0314, 0.0196, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0235, 0.0196, 0.0078, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0157, 0.0078, 0.0000, ..., 0.0157, 0.0157, 0.0196]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0078, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0235, 0.0078, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0235, 0.0078, 0.0000],\n",
" ...,\n",
" [0.0275, 0.0235, 0.0118, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0157, 0.0196]]]), -0.08887600000000262), (TensorImage([[[0.0078, 0.0078, 0.0118, ..., 0.0196, 0.0235, 0.0275],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0118, 0.0157, 0.0235],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0118, 0.0196],\n",
" ...,\n",
" [0.0275, 0.0275, 0.0275, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0314, 0.0275, 0.0235, ..., 0.0353, 0.0353, 0.0353],\n",
" [0.0314, 0.0275, 0.0235, ..., 0.0431, 0.0431, 0.0471]],\n",
"\n",
" [[0.0000, 0.0000, 0.0039, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0039, 0.0118],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0118, 0.0196, 0.0196],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0196, 0.0275, 0.0314]],\n",
"\n",
" [[0.0039, 0.0039, 0.0078, ..., 0.0314, 0.0392, 0.0431],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0235, 0.0314, 0.0392],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0235, 0.0314],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0275, 0.0314, 0.0353]]]), TensorImage([[[0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0039, 0.0078, 0.0157, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0039, 0.0157, 0.0235, ..., 0.0078, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0157, 0.0078, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0235, 0.0157, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0157, 0.0039]],\n",
"\n",
" [[0.0078, 0.0078, 0.0039, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0078, 0.0196, 0.0235, ..., 0.0078, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0157, 0.0078, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0235, 0.0157, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0157, 0.0039]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0000, 0.0000, 0.0157, ..., 0.0078, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0157, 0.0078, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0235, 0.0157, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0157, 0.0039]]]), 0.42098999999999975), (TensorImage([[[0.0392, 0.0314, 0.0235, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0353, 0.0275, 0.0235, ..., 0.0118, 0.0078, 0.0078],\n",
" [0.0275, 0.0235, 0.0275, ..., 0.0039, 0.0039, 0.0078],\n",
" ...,\n",
" [0.0118, 0.0157, 0.0157, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0118, 0.0157, 0.0157, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0118, 0.0157, 0.0157, ..., 0.0039, 0.0039, 0.0039]],\n",
"\n",
" [[0.0157, 0.0078, 0.0000, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0118, 0.0039, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0039, 0.0000, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0000, 0.0078, 0.0078],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0039, 0.0078, 0.0078]],\n",
"\n",
" [[0.0235, 0.0157, 0.0078, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0196, 0.0118, 0.0078, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0118, 0.0078, 0.0118, ..., 0.0000, 0.0000, 0.0039],\n",
" ...,\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000]]]), TensorImage([[[0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0196, 0.0157, 0.0118]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0157, 0.0118, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0157, 0.0118, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0157, 0.0118, 0.0039, ..., 0.0118, 0.0078, 0.0039]],\n",
"\n",
" [[0.0157, 0.0157, 0.0078, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0157, 0.0157, 0.0078, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0157, 0.0157, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0157, 0.0118, 0.0078]]]), -0.24318099999999987), (TensorImage([[[0.0353, 0.0353, 0.0353, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0353, 0.0353, 0.0353, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0431, 0.0431, 0.0431, ..., 0.0039, 0.0078, 0.0118],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0196, ..., 0.0235, 0.0235, 0.0196],\n",
" [0.0196, 0.0196, 0.0235, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0235, 0.0275, 0.0275, ..., 0.0039, 0.0078, 0.0118]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0039, 0.0078, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0196, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0000, 0.0039, 0.0078]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0078, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0118, 0.0118, 0.0078],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000]]]), TensorImage([[[0.0078, 0.0039, 0.0039, ..., 0.0275, 0.0235, 0.0118],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0196, 0.0157, 0.0039],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0196, 0.0196, 0.0078],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0353, 0.0314, 0.0196],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0392, 0.0431, 0.0314],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0392, 0.0510, 0.0392]],\n",
"\n",
" [[0.0078, 0.0039, 0.0039, ..., 0.0275, 0.0235, 0.0118],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0196, 0.0157, 0.0039],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0196, 0.0196, 0.0078],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0196, 0.0157, 0.0039],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0196, 0.0235, 0.0078],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0196, 0.0314, 0.0196]],\n",
"\n",
" [[0.0078, 0.0039, 0.0039, ..., 0.0275, 0.0235, 0.0118],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0196, 0.0157, 0.0039],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0196, 0.0196, 0.0078],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0118, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0118, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0196, 0.0078]]]), 0.05147499999999994), (TensorImage([[[0.0078, 0.0078, 0.0039, ..., 0.0431, 0.0510, 0.0510],\n",
" [0.0078, 0.0157, 0.0235, ..., 0.0392, 0.0431, 0.0471],\n",
" [0.0078, 0.0235, 0.0392, ..., 0.0353, 0.0392, 0.0392],\n",
" ...,\n",
" [0.0000, 0.0118, 0.0235, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0000, 0.0000, 0.0157, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0000, 0.0000, 0.0118, ..., 0.0039, 0.0039, 0.0078]],\n",
"\n",
" [[0.0039, 0.0039, 0.0000, ..., 0.0000, 0.0078, 0.0078],\n",
" [0.0039, 0.0118, 0.0196, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0039, 0.0196, 0.0353, ..., 0.0000, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0078, 0.0196, 0.0314, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0039, 0.0157, 0.0314, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0039, 0.0118, 0.0275, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0235, 0.0235],\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0000, 0.0118, 0.0275, ..., 0.0118, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0039, 0.0157, 0.0275, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0000, 0.0118, 0.0275, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0000, 0.0078, 0.0235, ..., 0.0000, 0.0000, 0.0039]]]), TensorImage([[[0.0157, 0.0157, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0039, 0.0000, 0.0039],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0118, 0.0157],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0118, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0157, 0.0235, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0078, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0000, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0118, 0.0157],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0157, 0.0118, 0.0118],\n",
" [0.0000, 0.0118, 0.0235, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0039, 0.0157, 0.0235, ..., 0.0118, 0.0118, 0.0118]],\n",
"\n",
" [[0.0118, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0039, 0.0000, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0118, 0.0157],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0118, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0157, 0.0235, ..., 0.0000, 0.0000, 0.0000]]]), 0.006355000000000999), (TensorImage([[[0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0078, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0235, 0.0196, 0.0078, ..., 0.0196, 0.0275, 0.0275],\n",
" [0.0275, 0.0196, 0.0078, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0196, 0.0157, 0.0157]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0078, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0235, 0.0196, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0275, 0.0196, 0.0078, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0039, 0.0000, 0.0000]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0039, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0235, 0.0196, 0.0078, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0275, 0.0196, 0.0078, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0078, 0.0000, 0.0000]]]), TensorImage([[[0.0196, 0.0157, 0.0118, ..., 0.0235, 0.0275, 0.0353],\n",
" [0.0157, 0.0118, 0.0039, ..., 0.0196, 0.0275, 0.0353],\n",
" [0.0118, 0.0078, 0.0000, ..., 0.0157, 0.0235, 0.0275],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0706, 0.0706, 0.0745],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0784, 0.0824, 0.0824],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0745, 0.0745, 0.0745]],\n",
"\n",
" [[0.0196, 0.0157, 0.0118, ..., 0.0235, 0.0275, 0.0353],\n",
" [0.0157, 0.0118, 0.0039, ..., 0.0196, 0.0275, 0.0353],\n",
" [0.0118, 0.0078, 0.0000, ..., 0.0157, 0.0235, 0.0275],\n",
" ...,\n",
" [0.0157, 0.0039, 0.0000, ..., 0.0235, 0.0235, 0.0275],\n",
" [0.0196, 0.0078, 0.0039, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0157, 0.0157, 0.0039, ..., 0.0118, 0.0118, 0.0118]],\n",
"\n",
" [[0.0196, 0.0157, 0.0118, ..., 0.0235, 0.0275, 0.0353],\n",
" [0.0157, 0.0118, 0.0039, ..., 0.0196, 0.0275, 0.0353],\n",
" [0.0118, 0.0078, 0.0000, ..., 0.0157, 0.0235, 0.0275],\n",
" ...,\n",
" [0.0392, 0.0235, 0.0196, ..., 0.0314, 0.0314, 0.0353],\n",
" [0.0431, 0.0353, 0.0235, ..., 0.0314, 0.0353, 0.0353],\n",
" [0.0510, 0.0392, 0.0235, ..., 0.0235, 0.0235, 0.0235]]]), -0.2791869999999985), (TensorImage([[[0.0314, 0.0196, 0.0118, ..., 0.0353, 0.0431, 0.0431],\n",
" [0.0314, 0.0196, 0.0118, ..., 0.0275, 0.0353, 0.0392],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0235, 0.0275, 0.0314],\n",
" ...,\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0078, 0.0118, 0.0196, ..., 0.0235, 0.0235, 0.0275],\n",
" [0.0078, 0.0157, 0.0196, ..., 0.0118, 0.0157, 0.0157]],\n",
"\n",
" [[0.0235, 0.0118, 0.0039, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0235, 0.0118, 0.0039, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0196, 0.0118, 0.0039, ..., 0.0039, 0.0000, 0.0039],\n",
" ...,\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0078, 0.0118, 0.0196, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0078, 0.0157, 0.0196, ..., 0.0039, 0.0078, 0.0078]],\n",
"\n",
" [[0.0275, 0.0157, 0.0078, ..., 0.0392, 0.0471, 0.0471],\n",
" [0.0275, 0.0157, 0.0078, ..., 0.0314, 0.0392, 0.0431],\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0275, 0.0275, 0.0314],\n",
" ...,\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0078, 0.0118, 0.0196, ..., 0.0196, 0.0196, 0.0235],\n",
" [0.0078, 0.0157, 0.0196, ..., 0.0078, 0.0118, 0.0118]]]), TensorImage([[[0.0196, 0.0157, 0.0118, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0275, 0.0235, 0.0157, ..., 0.0118, 0.0196, 0.0235],\n",
" [0.0353, 0.0275, 0.0196, ..., 0.0157, 0.0235, 0.0314],\n",
" ...,\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0039, 0.0039, 0.0118]],\n",
"\n",
" [[0.0118, 0.0078, 0.0039, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0196, 0.0157, 0.0078, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0078, 0.0157, 0.0235],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0039]],\n",
"\n",
" [[0.0157, 0.0118, 0.0078, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0235, 0.0196, 0.0118, ..., 0.0078, 0.0157, 0.0196],\n",
" [0.0314, 0.0235, 0.0157, ..., 0.0118, 0.0196, 0.0275],\n",
" ...,\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0078]]]), 0.1361270000000001), (TensorImage([[[0.0471, 0.0431, 0.0314, ..., 0.0627, 0.0471, 0.0431],\n",
" [0.0431, 0.0431, 0.0353, ..., 0.0706, 0.0588, 0.0627],\n",
" [0.0314, 0.0353, 0.0314, ..., 0.0824, 0.0824, 0.0784],\n",
" ...,\n",
" [0.0863, 0.0863, 0.0902, ..., 0.0667, 0.0706, 0.0824],\n",
" [0.0902, 0.0902, 0.0980, ..., 0.0627, 0.0627, 0.0549],\n",
" [0.0824, 0.0863, 0.0863, ..., 0.0667, 0.0549, 0.0431]],\n",
"\n",
" [[0.0078, 0.0118, 0.0118, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0196, 0.0275, 0.0353],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0314, 0.0314, 0.0275, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0275, 0.0275, 0.0275, ..., 0.0078, 0.0000, 0.0000]],\n",
"\n",
" [[0.0039, 0.0039, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0118, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0235, 0.0275],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0039, 0.0039, 0.0118, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0196, 0.0039, 0.0000]]]), TensorImage([[[0.0157, 0.0039, 0.0039, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0157, 0.0039, 0.0039, ..., 0.0157, 0.0118, 0.0039],\n",
" [0.0118, 0.0039, 0.0039, ..., 0.0078, 0.0078, 0.0000],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0039, 0.0078, 0.0157]],\n",
"\n",
" [[0.0078, 0.0000, 0.0000, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0078, 0.0000, 0.0000, ..., 0.0157, 0.0118, 0.0039],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0000],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0078]],\n",
"\n",
" [[0.0118, 0.0000, 0.0000, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0118, 0.0000, 0.0000, ..., 0.0157, 0.0118, 0.0039],\n",
" [0.0078, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0000],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0039, 0.0118]]]), 0.03361199999999975), (TensorImage([[[0.0314, 0.0196, 0.0157, ..., 0.0118, 0.0196, 0.0314],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0235, 0.0157, 0.0039, ..., 0.0196, 0.0118, 0.0078],\n",
" ...,\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0392, 0.0510, 0.0549],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0471, 0.0549, 0.0627],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0510, 0.0627, 0.0627]],\n",
"\n",
" [[0.0275, 0.0157, 0.0118, ..., 0.0157, 0.0235, 0.0353],\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0196, 0.0196, 0.0235],\n",
" [0.0196, 0.0118, 0.0000, ..., 0.0196, 0.0118, 0.0078],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0000, 0.0000]],\n",
"\n",
" [[0.0196, 0.0078, 0.0039, ..., 0.0000, 0.0039, 0.0157],\n",
" [0.0157, 0.0078, 0.0000, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0118, 0.0039, 0.0000, ..., 0.0118, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0118]]]), TensorImage([[[0.0353, 0.0392, 0.0431, ..., 0.0471, 0.0471, 0.0588],\n",
" [0.0275, 0.0353, 0.0392, ..., 0.0471, 0.0471, 0.0471],\n",
" [0.0157, 0.0275, 0.0353, ..., 0.0549, 0.0471, 0.0471],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0000, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0314, 0.0235, 0.0196],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0314, 0.0235, 0.0196]],\n",
"\n",
" [[0.0118, 0.0157, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0078, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0078, 0.0000, 0.0000]],\n",
"\n",
" [[0.0275, 0.0314, 0.0353, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0196, 0.0275, 0.0314, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0078, 0.0196, 0.0275, ..., 0.0235, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0078, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0078, 0.0039]]]), 0.07200300000000048), (TensorImage([[[0.0078, 0.0078, 0.0157, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0078, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0039, 0.0118, 0.0235, ..., 0.0431, 0.0431, 0.0431],\n",
" [0.0039, 0.0118, 0.0235, ..., 0.0353, 0.0353, 0.0353],\n",
" [0.0039, 0.0118, 0.0235, ..., 0.0275, 0.0235, 0.0235]],\n",
"\n",
" [[0.0000, 0.0000, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0039, 0.0039, 0.0118, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0000, 0.0000, 0.0000]]]), TensorImage([[[0.0314, 0.0275, 0.0157, ..., 0.1176, 0.1255, 0.1333],\n",
" [0.0314, 0.0275, 0.0157, ..., 0.1255, 0.1294, 0.1294],\n",
" [0.0314, 0.0275, 0.0196, ..., 0.1255, 0.1255, 0.1216],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0235, 0.0235, 0.0196]],\n",
"\n",
" [[0.0235, 0.0196, 0.0078, ..., 0.0588, 0.0706, 0.0784],\n",
" [0.0235, 0.0196, 0.0078, ..., 0.0667, 0.0745, 0.0745],\n",
" [0.0235, 0.0196, 0.0118, ..., 0.0745, 0.0745, 0.0706],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0196, 0.0157, 0.0078, ..., 0.0039, 0.0039, 0.0000],\n",
" [0.0196, 0.0157, 0.0039, ..., 0.0157, 0.0157, 0.0118]],\n",
"\n",
" [[0.0275, 0.0235, 0.0118, ..., 0.0314, 0.0353, 0.0353],\n",
" [0.0275, 0.0235, 0.0118, ..., 0.0392, 0.0392, 0.0392],\n",
" [0.0275, 0.0235, 0.0157, ..., 0.0431, 0.0392, 0.0353],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0000],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0196, 0.0196, 0.0157]]]), 0.00015799999999721592), (TensorImage([[[0.0941, 0.0902, 0.0902, ..., 0.0118, 0.0196, 0.0314],\n",
" [0.0941, 0.0902, 0.0863, ..., 0.0118, 0.0235, 0.0314],\n",
" [0.0980, 0.0941, 0.0902, ..., 0.0157, 0.0235, 0.0314],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0275, 0.0275, 0.0235],\n",
" [0.0118, 0.0078, 0.0000, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0157, 0.0118, 0.0039, ..., 0.0196, 0.0118, 0.0078]],\n",
"\n",
" [[0.0314, 0.0275, 0.0275, ..., 0.0118, 0.0196, 0.0314],\n",
" [0.0353, 0.0314, 0.0275, ..., 0.0118, 0.0235, 0.0314],\n",
" [0.0392, 0.0353, 0.0314, ..., 0.0157, 0.0235, 0.0314],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0196, 0.0196, 0.0157],\n",
" [0.0196, 0.0157, 0.0078, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0235, 0.0196, 0.0118, ..., 0.0118, 0.0039, 0.0000]],\n",
"\n",
" [[0.0431, 0.0392, 0.0392, ..., 0.0118, 0.0196, 0.0314],\n",
" [0.0471, 0.0431, 0.0392, ..., 0.0118, 0.0235, 0.0314],\n",
" [0.0510, 0.0471, 0.0431, ..., 0.0157, 0.0235, 0.0314],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0235, 0.0235, 0.0196],\n",
" [0.0157, 0.0118, 0.0039, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0196, 0.0157, 0.0078, ..., 0.0157, 0.0078, 0.0039]]]), TensorImage([[[0.0667, 0.0706, 0.0824, ..., 0.1176, 0.1529, 0.1686],\n",
" [0.0588, 0.0627, 0.0667, ..., 0.1333, 0.1608, 0.1765],\n",
" [0.0588, 0.0588, 0.0588, ..., 0.1490, 0.1686, 0.1804],\n",
" ...,\n",
" [0.0039, 0.0078, 0.0196, ..., 0.0275, 0.0118, 0.0000],\n",
" [0.0078, 0.0157, 0.0157, ..., 0.0314, 0.0157, 0.0039],\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0471, 0.0314, 0.0196]],\n",
"\n",
" [[0.0353, 0.0392, 0.0431, ..., 0.0275, 0.0471, 0.0510],\n",
" [0.0275, 0.0314, 0.0353, ..., 0.0431, 0.0549, 0.0588],\n",
" [0.0314, 0.0275, 0.0275, ..., 0.0588, 0.0627, 0.0627],\n",
" ...,\n",
" [0.0235, 0.0275, 0.0275, ..., 0.0353, 0.0235, 0.0118],\n",
" [0.0275, 0.0353, 0.0353, ..., 0.0510, 0.0353, 0.0235],\n",
" [0.0157, 0.0235, 0.0314, ..., 0.0745, 0.0588, 0.0471]],\n",
"\n",
" [[0.0235, 0.0275, 0.0353, ..., 0.0588, 0.0824, 0.0902],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0745, 0.0902, 0.0980],\n",
" [0.0078, 0.0157, 0.0157, ..., 0.0824, 0.0980, 0.1020],\n",
" ...,\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0157, 0.0000, 0.0000],\n",
" [0.0118, 0.0196, 0.0196, ..., 0.0275, 0.0078, 0.0000],\n",
" [0.0000, 0.0078, 0.0157, ..., 0.0471, 0.0275, 0.0157]]]), -0.3257879999999993), (TensorImage([[[0.4824, 0.4863, 0.4941, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.4588, 0.4627, 0.4706, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.4196, 0.4275, 0.4392, ..., 0.0118, 0.0157, 0.0196],\n",
" ...,\n",
" [0.0627, 0.0588, 0.0392, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0667, 0.0588, 0.0392, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0627, 0.0549, 0.0392, ..., 0.0118, 0.0118, 0.0118]],\n",
"\n",
" [[0.4235, 0.4275, 0.4353, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.4000, 0.4039, 0.4118, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.3569, 0.3647, 0.3765, ..., 0.0118, 0.0157, 0.0196],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0039]],\n",
"\n",
" [[0.2627, 0.2667, 0.2745, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.2471, 0.2510, 0.2588, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.2157, 0.2235, 0.2353, ..., 0.0118, 0.0157, 0.0196],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0118, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0235, 0.0196, 0.0118, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0078, 0.0078, 0.0078]]]), TensorImage([[[0.0235, 0.0314, 0.0392, ..., 0.0275, 0.0235, 0.0235],\n",
" [0.0157, 0.0196, 0.0314, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0118, 0.0157, 0.0275, ..., 0.0157, 0.0196, 0.0235],\n",
" ...,\n",
" [0.0157, 0.0235, 0.0275, ..., 0.0196, 0.0235, 0.0275],\n",
" [0.0000, 0.0078, 0.0157, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0118, 0.0078, 0.0039]],\n",
"\n",
" [[0.0000, 0.0078, 0.0157, ..., 0.0196, 0.0157, 0.0157],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0000, 0.0000, 0.0118, ..., 0.0078, 0.0118, 0.0157],\n",
" ...,\n",
" [0.0196, 0.0275, 0.0275, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0039, 0.0000, 0.0000]],\n",
"\n",
" [[0.0078, 0.0157, 0.0235, ..., 0.0235, 0.0196, 0.0196],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0118, 0.0157, 0.0196],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0039, 0.0000]]]), 0.21874799999999972), (TensorImage([[[0.0039, 0.0078, 0.0078, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0196, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0510, 0.0431, 0.0314, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0353, 0.0314, 0.0275, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0196, 0.0235, 0.0235, ..., 0.0000, 0.0078, 0.0118]],\n",
"\n",
" [[0.0039, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0118, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0353, 0.0275, 0.0157, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0078, 0.0118]],\n",
"\n",
" [[0.0039, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0157, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0392, 0.0314, 0.0196, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0000, 0.0078, 0.0118]]]), TensorImage([[[0.0353, 0.0353, 0.0353, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0392, 0.0392, 0.0392, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0431, 0.0392, 0.0392, ..., 0.0314, 0.0314, 0.0275],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0118, 0.0196, 0.0235],\n",
" [0.0235, 0.0196, 0.0196, ..., 0.0078, 0.0157, 0.0196],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0039, 0.0078, 0.0118]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0314, 0.0314, 0.0275],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0157, 0.0196],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0078, 0.0118]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0235, 0.0235, 0.0196],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0078, 0.0118],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0039]]]), 0.2253879999999988), (TensorImage([[[0.0275, 0.0314, 0.0314, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0353, 0.0392, 0.0392, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0471, 0.0471, 0.0431, ..., 0.0078, 0.0118, 0.0157],\n",
" ...,\n",
" [0.1725, 0.1922, 0.2118, ..., 0.0353, 0.0353, 0.0353],\n",
" [0.1843, 0.1961, 0.2078, ..., 0.0431, 0.0431, 0.0431],\n",
" [0.2000, 0.2078, 0.2196, ..., 0.0431, 0.0471, 0.0510]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0039, 0.0078, 0.0039, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0157, 0.0157, 0.0078, ..., 0.0078, 0.0118, 0.0157],\n",
" ...,\n",
" [0.0275, 0.0392, 0.0510, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0314, 0.0431, 0.0471, ..., 0.0275, 0.0275, 0.0275],\n",
" [0.0471, 0.0549, 0.0588, ..., 0.0392, 0.0431, 0.0471]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0000, 0.0039, 0.0078],\n",
" ...,\n",
" [0.0000, 0.0118, 0.0353, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0039, 0.0157, 0.0314, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0196, 0.0353, 0.0431, ..., 0.0314, 0.0353, 0.0392]]]), TensorImage([[[0.0353, 0.0353, 0.0353, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0314, 0.0314, 0.0314, ..., 0.0235, 0.0196, 0.0196],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0235, 0.0235, 0.0235],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0196, ..., 0.7922, 0.6196, 0.4784],\n",
" [0.0196, 0.0235, 0.0235, ..., 0.7451, 0.5922, 0.4510],\n",
" [0.0235, 0.0275, 0.0275, ..., 0.6824, 0.5373, 0.4157]],\n",
"\n",
" [[0.0118, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.8431, 0.6745, 0.5333],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.8314, 0.6745, 0.5412],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.7804, 0.6431, 0.5216]],\n",
"\n",
" [[0.0196, 0.0196, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0078, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0039, ..., 0.7255, 0.5725, 0.4353],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.6510, 0.5059, 0.3765],\n",
" [0.0078, 0.0118, 0.0118, ..., 0.5647, 0.4431, 0.3216]]]), -0.0725289999999994), (TensorImage([[[0.0549, 0.0667, 0.0745, ..., 0.0314, 0.0353, 0.0392],\n",
" [0.0314, 0.0431, 0.0549, ..., 0.0275, 0.0275, 0.0314],\n",
" [0.0157, 0.0235, 0.0314, ..., 0.0196, 0.0196, 0.0235],\n",
" ...,\n",
" [0.0431, 0.0392, 0.0471, ..., 0.0196, 0.0039, 0.0039],\n",
" [0.0353, 0.0353, 0.0392, ..., 0.0235, 0.0157, 0.0157],\n",
" [0.0275, 0.0314, 0.0392, ..., 0.0275, 0.0353, 0.0314]],\n",
"\n",
" [[0.0314, 0.0431, 0.0510, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0157, 0.0275, 0.0314, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0000, 0.0078, 0.0157, ..., 0.0039, 0.0039, 0.0078],\n",
" ...,\n",
" [0.0392, 0.0353, 0.0353, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0314, 0.0314, 0.0353, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0235, 0.0275, 0.0353, ..., 0.0118, 0.0196, 0.0275]],\n",
"\n",
" [[0.0314, 0.0431, 0.0510, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0118, 0.0235, 0.0314, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0000, 0.0000, 0.0039],\n",
" ...,\n",
" [0.0196, 0.0157, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0039, 0.0078, 0.0157, ..., 0.0078, 0.0157, 0.0196]]]), TensorImage([[[0.0431, 0.0392, 0.0392, ..., 0.0235, 0.0314, 0.0353],\n",
" [0.0471, 0.0471, 0.0471, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0471, 0.0431, 0.0510, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0235, 0.0196, 0.0275, ..., 0.0235, 0.0196, 0.0196],\n",
" [0.0157, 0.0235, 0.0235, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0157, 0.0196, 0.0196, ..., 0.0196, 0.0196, 0.0196]],\n",
"\n",
" [[0.0078, 0.0039, 0.0039, ..., 0.0196, 0.0275, 0.0314],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0039, 0.0118, 0.0196, ..., 0.0235, 0.0275, 0.0275],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0235, 0.0275, 0.0275],\n",
" [0.0000, 0.0000, 0.0118, ..., 0.0235, 0.0275, 0.0275]],\n",
"\n",
" [[0.0196, 0.0157, 0.0157, ..., 0.0118, 0.0196, 0.0235],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0314, 0.0275, 0.0275, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0196, 0.0235, 0.0235, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0118, 0.0196, 0.0196, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0078, 0.0157, 0.0157, ..., 0.0039, 0.0078, 0.0078]]]), -0.6355990000000009), (TensorImage([[[0.0588, 0.0392, 0.0235, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0510, 0.0353, 0.0196, ..., 0.0078, 0.0039, 0.0078],\n",
" [0.0392, 0.0275, 0.0157, ..., 0.0078, 0.0118, 0.0157],\n",
" ...,\n",
" [0.0510, 0.0392, 0.0275, ..., 0.0157, 0.0039, 0.0039],\n",
" [0.0471, 0.0431, 0.0353, ..., 0.0118, 0.0078, 0.0039],\n",
" [0.0431, 0.0431, 0.0392, ..., 0.0196, 0.0196, 0.0196]],\n",
"\n",
" [[0.0588, 0.0392, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0510, 0.0353, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0392, 0.0275, 0.0157, ..., 0.0000, 0.0039, 0.0078],\n",
" ...,\n",
" [0.0157, 0.0039, 0.0000, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0118, 0.0078, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0118, 0.0118, 0.0118]],\n",
"\n",
" [[0.0510, 0.0314, 0.0157, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0431, 0.0275, 0.0118, ..., 0.0039, 0.0000, 0.0039],\n",
" [0.0314, 0.0196, 0.0078, ..., 0.0039, 0.0078, 0.0118],\n",
" ...,\n",
" [0.0275, 0.0157, 0.0039, ..., 0.0118, 0.0000, 0.0000],\n",
" [0.0235, 0.0196, 0.0118, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0157, 0.0157, 0.0157]]]), TensorImage([[[0.0431, 0.0235, 0.0039, ..., 0.0118, 0.0039, 0.0039],\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0196, 0.0118, 0.0118],\n",
" [0.0078, 0.0078, 0.0157, ..., 0.0235, 0.0196, 0.0196],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0039, ..., 0.0235, 0.0314, 0.0275],\n",
" [0.0196, 0.0078, 0.0039, ..., 0.0235, 0.0196, 0.0235],\n",
" [0.0392, 0.0314, 0.0235, ..., 0.0235, 0.0196, 0.0235]],\n",
"\n",
" [[0.0392, 0.0196, 0.0000, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0196, 0.0118, 0.0039, ..., 0.0118, 0.0039, 0.0039],\n",
" [0.0039, 0.0039, 0.0118, ..., 0.0157, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0196, 0.0078, 0.0000, ..., 0.0196, 0.0157, 0.0078],\n",
" [0.0392, 0.0275, 0.0078, ..., 0.0196, 0.0157, 0.0078]],\n",
"\n",
" [[0.0235, 0.0039, 0.0000, ..., 0.0275, 0.0196, 0.0196],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0314, 0.0235, 0.0235],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0275, 0.0235, 0.0235],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0078],\n",
" [0.0118, 0.0000, 0.0000, ..., 0.0118, 0.0078, 0.0039],\n",
" [0.0314, 0.0196, 0.0039, ..., 0.0118, 0.0078, 0.0039]]]), 0.24006400000000028), (TensorImage([[[0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0000, 0.0078, 0.0118],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0039, 0.0078, 0.0118],\n",
" ...,\n",
" [0.0196, 0.0157, 0.0157, ..., 0.0431, 0.0353, 0.0275],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0392, 0.0314, 0.0196],\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0353, 0.0275, 0.0157]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0039, 0.0078],\n",
" ...,\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0353, 0.0275, 0.0196],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0314, 0.0235, 0.0118],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0275, 0.0196, 0.0078]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0392, 0.0314, 0.0235],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0353, 0.0275, 0.0157],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0314, 0.0235, 0.0118]]]), TensorImage([[[0.0235, 0.0157, 0.0039, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0314, 0.0275, 0.0235],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0235, 0.0157, 0.0039],\n",
" [0.0039, 0.0078, 0.0157, ..., 0.0235, 0.0157, 0.0000],\n",
" [0.0039, 0.0118, 0.0235, ..., 0.0235, 0.0039, 0.0000]],\n",
"\n",
" [[0.0235, 0.0157, 0.0039, ..., 0.0039, 0.0039, 0.0000],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0275, 0.0235, 0.0196],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0039, 0.0078, 0.0157, ..., 0.0314, 0.0235, 0.0157],\n",
" [0.0039, 0.0118, 0.0235, ..., 0.0314, 0.0235, 0.0118]],\n",
"\n",
" [[0.0235, 0.0157, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0196, 0.0157, 0.0118],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0039, 0.0078, 0.0157, ..., 0.0196, 0.0118, 0.0000],\n",
" [0.0039, 0.0118, 0.0235, ..., 0.0196, 0.0078, 0.0000]]]), 0.19190600000000124), (TensorImage([[[0.0235, 0.0275, 0.0314, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0157, 0.0235, 0.0275, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0392, 0.0353, 0.0314],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0510, 0.0392, 0.0314],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0588, 0.0471, 0.0353]],\n",
"\n",
" [[0.0235, 0.0275, 0.0314, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0157, 0.0235, 0.0275, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0157, 0.0039, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0235, 0.0118, 0.0000]],\n",
"\n",
" [[0.0235, 0.0275, 0.0314, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0157, 0.0235, 0.0275, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0196, 0.0078, 0.0000],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0275, 0.0157, 0.0039]]]), TensorImage([[[0.0157, 0.0157, 0.0157, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0353, 0.0353, 0.0353],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0392, 0.0431, 0.0431],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0000, 0.0039],\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0000, 0.0000]],\n",
"\n",
" [[0.0078, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0000, 0.0039],\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0000, 0.0000]],\n",
"\n",
" [[0.0118, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0078, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0000, 0.0039],\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0000, 0.0000]]]), -0.10435200000000044), (TensorImage([[[0.0118, 0.0039, 0.0078, ..., 0.0314, 0.0235, 0.0314],\n",
" [0.0314, 0.0275, 0.0235, ..., 0.0314, 0.0235, 0.0314],\n",
" [0.0706, 0.0745, 0.0745, ..., 0.0314, 0.0275, 0.0353],\n",
" ...,\n",
" [0.0039, 0.0078, 0.0157, ..., 0.2588, 0.3176, 0.3529],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.2824, 0.3451, 0.3843],\n",
" [0.0078, 0.0000, 0.0000, ..., 0.2941, 0.3569, 0.4039]],\n",
"\n",
" [[0.0275, 0.0157, 0.0078, ..., 0.0275, 0.0196, 0.0275],\n",
" [0.0275, 0.0196, 0.0157, ..., 0.0275, 0.0196, 0.0275],\n",
" [0.0275, 0.0314, 0.0314, ..., 0.0275, 0.0235, 0.0314],\n",
" ...,\n",
" [0.0235, 0.0275, 0.0314, ..., 0.2118, 0.2588, 0.2980],\n",
" [0.0235, 0.0196, 0.0196, ..., 0.2235, 0.2824, 0.3216],\n",
" [0.0275, 0.0157, 0.0078, ..., 0.2353, 0.2941, 0.3333]],\n",
"\n",
" [[0.0627, 0.0510, 0.0392, ..., 0.0118, 0.0039, 0.0118],\n",
" [0.0471, 0.0392, 0.0275, ..., 0.0118, 0.0039, 0.0118],\n",
" [0.0196, 0.0235, 0.0235, ..., 0.0196, 0.0157, 0.0235],\n",
" ...,\n",
" [0.0353, 0.0392, 0.0353, ..., 0.1255, 0.1686, 0.1961],\n",
" [0.0353, 0.0314, 0.0196, ..., 0.1412, 0.1843, 0.2235],\n",
" [0.0392, 0.0275, 0.0078, ..., 0.1451, 0.1961, 0.2392]]]), TensorImage([[[0.0157, 0.0157, 0.0157, ..., 0.0196, 0.0196, 0.0157],\n",
" [0.0157, 0.0196, 0.0196, ..., 0.0196, 0.0196, 0.0235],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0235, 0.0275, 0.0314],\n",
" ...,\n",
" [0.0157, 0.0196, 0.0196, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0196, 0.0196, 0.0235, ..., 0.0275, 0.0275, 0.0275],\n",
" [0.0235, 0.0235, 0.0275, ..., 0.0392, 0.0431, 0.0431]],\n",
"\n",
" [[0.0118, 0.0118, 0.0118, ..., 0.0039, 0.0039, 0.0000],\n",
" [0.0118, 0.0157, 0.0157, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0078, 0.0118, 0.0157],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0235, 0.0275, 0.0275]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0039, 0.0078, 0.0118, ..., 0.0118, 0.0157, 0.0196],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0196, 0.0235, 0.0235]]]), -0.1706120000000002), (TensorImage([[[0.0157, 0.0118, 0.0118, ..., 0.0235, 0.0235, 0.0196],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0196, 0.0196, 0.0157],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0118, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0431, 0.0510, 0.0588, ..., 0.0118, 0.0118, 0.0039],\n",
" [0.0353, 0.0392, 0.0471, ..., 0.0157, 0.0118, 0.0039],\n",
" [0.0314, 0.0314, 0.0353, ..., 0.0275, 0.0235, 0.0157]],\n",
"\n",
" [[0.0157, 0.0118, 0.0118, ..., 0.0235, 0.0235, 0.0196],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0196, 0.0196, 0.0157],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0118, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0157, ..., 0.0078, 0.0078, 0.0000],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0118, 0.0078, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0235, 0.0196, 0.0118]],\n",
"\n",
" [[0.0078, 0.0039, 0.0039, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0157, 0.0235, 0.0314, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0118, 0.0196, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0157, 0.0039, 0.0000]]]), TensorImage([[[0.0078, 0.0118, 0.0157, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0078, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0196, 0.0196, 0.0157],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0235, 0.0196, 0.0196]],\n",
"\n",
" [[0.0078, 0.0118, 0.0157, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0078, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0118, 0.0078, 0.0078]],\n",
"\n",
" [[0.0078, 0.0118, 0.0157, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0078, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0314, 0.0314, 0.0275],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0353, 0.0353, 0.0314],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0392, 0.0353, 0.0353]]]), 0.3529979999999995), (TensorImage([[[0.0275, 0.0353, 0.0314, ..., 0.0392, 0.0510, 0.0667],\n",
" [0.0353, 0.0392, 0.0314, ..., 0.0431, 0.0510, 0.0549],\n",
" [0.0353, 0.0314, 0.0235, ..., 0.0314, 0.0314, 0.0314],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0118, ..., 0.2000, 0.2000, 0.2118],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.1804, 0.1882, 0.2118],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.1490, 0.1725, 0.2039]],\n",
"\n",
" [[0.0000, 0.0039, 0.0118, ..., 0.0510, 0.0627, 0.0706],\n",
" [0.0039, 0.0078, 0.0118, ..., 0.0549, 0.0549, 0.0588],\n",
" [0.0039, 0.0000, 0.0039, ..., 0.0353, 0.0353, 0.0353],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0157, ..., 0.1882, 0.1882, 0.2000],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.1843, 0.2000, 0.2235],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.1686, 0.1922, 0.2314]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0235, 0.0353, 0.0392],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0314, 0.0275],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0275, 0.0314],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0314, 0.0549],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0314, 0.0588]]]), TensorImage([[[0.0235, 0.0196, 0.0196, ..., 0.0353, 0.0353, 0.0353],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0314, 0.0314, 0.0314],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0235, 0.0235, 0.0235],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0118, 0.0000, 0.0000],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0078, 0.0000, 0.0000]],\n",
"\n",
" [[0.0471, 0.0431, 0.0431, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0353, 0.0353, 0.0392, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0196, 0.0235, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0078, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0039, 0.0039]],\n",
"\n",
" [[0.0392, 0.0353, 0.0353, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0275, 0.0275, 0.0314, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0078, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0039, 0.0000, 0.0000]]]), 0.38439099999999904), (TensorImage([[[0.0275, 0.0275, 0.0196, ..., 0.0118, 0.0078, 0.0039],\n",
" [0.0314, 0.0275, 0.0235, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0314, 0.0314, 0.0275, ..., 0.0235, 0.0314, 0.0353],\n",
" ...,\n",
" [0.0275, 0.0275, 0.0235, ..., 0.0157, 0.0157, 0.0275],\n",
" [0.0235, 0.0235, 0.0196, ..., 0.0157, 0.0157, 0.0353],\n",
" [0.0314, 0.0314, 0.0235, ..., 0.0196, 0.0235, 0.0431]],\n",
"\n",
" [[0.0039, 0.0039, 0.0000, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0196, 0.0275, 0.0314],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0000, 0.0000, 0.0118],\n",
" [0.0235, 0.0235, 0.0157, ..., 0.0000, 0.0000, 0.0196]],\n",
"\n",
" [[0.0118, 0.0118, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0118, 0.0196, 0.0235],\n",
" ...,\n",
" [0.0235, 0.0235, 0.0196, ..., 0.0000, 0.0000, 0.0118],\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0000, 0.0000, 0.0196],\n",
" [0.0275, 0.0275, 0.0196, ..., 0.0039, 0.0078, 0.0275]]]), TensorImage([[[0.0078, 0.0078, 0.0039, ..., 0.0235, 0.0235, 0.0275],\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0196, 0.0235, 0.0314],\n",
" [0.0000, 0.0000, 0.0118, ..., 0.0196, 0.0314, 0.0392],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0431, 0.0471, 0.0392],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0314, 0.0353, 0.0353],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0235, 0.0275, 0.0353]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0000, 0.0000, 0.0078],\n",
" [0.0000, 0.0000, 0.0118, ..., 0.0000, 0.0078, 0.0157],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0196, 0.0118, 0.0039],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0157, 0.0118, 0.0118],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0078, 0.0118, 0.0118]],\n",
"\n",
" [[0.0235, 0.0235, 0.0118, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0157, 0.0196, 0.0157, ..., 0.0039, 0.0078, 0.0157],\n",
" [0.0157, 0.0157, 0.0196, ..., 0.0039, 0.0157, 0.0235],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0275, 0.0157, 0.0078],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0196, 0.0196, 0.0118],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0118, 0.0157, 0.0196]]]), 0.578087), (TensorImage([[[0.0314, 0.0314, 0.0314, ..., 0.0510, 0.0510, 0.0471],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0431, 0.0353, 0.0235],\n",
" [0.0157, 0.0157, 0.0196, ..., 0.0392, 0.0235, 0.0157],\n",
" ...,\n",
" [0.0118, 0.0314, 0.0392, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0196, 0.0235, 0.0196, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0235, 0.0196, 0.0118, ..., 0.0235, 0.0196, 0.0157]],\n",
"\n",
" [[0.0275, 0.0275, 0.0275, ..., 0.0314, 0.0314, 0.0275],\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0235, 0.0157, 0.0039],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0196, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0078, 0.0196, 0.0275, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0196, 0.0078, 0.0000, ..., 0.0078, 0.0000, 0.0000]],\n",
"\n",
" [[0.0196, 0.0196, 0.0196, ..., 0.0196, 0.0196, 0.0157],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0078, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0039, 0.0000]]]), TensorImage([[[0.0235, 0.0314, 0.0196, ..., 0.0196, 0.0118, 0.0078],\n",
" [0.0314, 0.0314, 0.0275, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0275, 0.0275, 0.0235, ..., 0.0157, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0118, 0.0157, 0.0118, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0118, 0.0118, 0.0039, ..., 0.0000, 0.0000, 0.0039]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0000, 0.0078, 0.0039, ..., 0.0118, 0.0078, 0.0039],\n",
" [0.0000, 0.0039, 0.0000, ..., 0.0078, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0118, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0039]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0000, 0.0078, 0.0039, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0000, 0.0039, 0.0000, ..., 0.0118, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0039]]]), -0.06861400000000017), (TensorImage([[[0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0118, 0.0078],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0118, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0471, 0.0392, 0.0314, ..., 0.0157, 0.0118, 0.0118],\n",
" [0.0588, 0.0510, 0.0392, ..., 0.0118, 0.0078, 0.0078],\n",
" [0.0627, 0.0549, 0.0431, ..., 0.0078, 0.0039, 0.0039]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0039, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0549, 0.0471, 0.0314, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0667, 0.0588, 0.0392, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0706, 0.0627, 0.0510, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0196, 0.0196, 0.0157, ..., 0.0235, 0.0157, 0.0196],\n",
" [0.0275, 0.0235, 0.0157, ..., 0.0196, 0.0118, 0.0157],\n",
" [0.0314, 0.0275, 0.0235, ..., 0.0157, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0431, 0.0353, 0.0235, ..., 0.0118, 0.0078, 0.0078],\n",
" [0.0549, 0.0471, 0.0314, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0588, 0.0510, 0.0392, ..., 0.0039, 0.0000, 0.0000]]]), TensorImage([[[0.0157, 0.0196, 0.0196, ..., 0.0275, 0.0314, 0.0353],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0235, 0.0196, 0.0196],\n",
" ...,\n",
" [0.0000, 0.0157, 0.0353, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0039, 0.0196, 0.0314, ..., 0.0118, 0.0078, 0.0039],\n",
" [0.0039, 0.0118, 0.0118, ..., 0.0078, 0.0039, 0.0039]],\n",
"\n",
" [[0.0078, 0.0118, 0.0118, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0157, 0.0353, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0039, 0.0196, 0.0314, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0039, 0.0118, 0.0118, ..., 0.0039, 0.0000, 0.0000]],\n",
"\n",
" [[0.0118, 0.0157, 0.0157, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0157, 0.0353, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0039, 0.0196, 0.0314, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000]]]), 0.5810020000000033), (TensorImage([[[0.0157, 0.0157, 0.0157, ..., 0.0314, 0.0392, 0.0392],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0078, 0.0078, 0.0039],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0118, 0.0039, 0.0118, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0275, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0235, 0.0314, 0.0314],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0157, ..., 0.0157, 0.0118, 0.0118],\n",
" [0.0078, 0.0000, 0.0078, ..., 0.0196, 0.0235, 0.0196],\n",
" [0.0235, 0.0078, 0.0078, ..., 0.0235, 0.0235, 0.0235]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0275, 0.0353, 0.0353],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0078, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0157, 0.0157, 0.0157]]]), TensorImage([[[0.0118, 0.0039, 0.0039, ..., 0.0118, 0.0118, 0.0196],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0157, 0.0157, 0.0275],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0157, 0.0196, 0.0314],\n",
" ...,\n",
" [0.0078, 0.0157, 0.0196, ..., 0.0235, 0.0275, 0.0235],\n",
" [0.0039, 0.0118, 0.0196, ..., 0.0275, 0.0353, 0.0314],\n",
" [0.0039, 0.0078, 0.0196, ..., 0.0353, 0.0471, 0.0431]],\n",
"\n",
" [[0.0118, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0078, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0118],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0039, 0.0157],\n",
" ...,\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0078, 0.0157, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0118, 0.0118, 0.0078]],\n",
"\n",
" [[0.0039, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0118, 0.0118, 0.0078],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0196, 0.0235, 0.0196]]]), -0.5121140000000004), (TensorImage([[[0.0549, 0.0510, 0.0471, ..., 0.0039, 0.0118, 0.0196],\n",
" [0.0471, 0.0431, 0.0392, ..., 0.0196, 0.0275, 0.0314],\n",
" [0.0353, 0.0314, 0.0314, ..., 0.0275, 0.0314, 0.0353],\n",
" ...,\n",
" [0.0941, 0.0784, 0.0706, ..., 0.0039, 0.0157, 0.0275],\n",
" [0.1176, 0.0980, 0.0902, ..., 0.0118, 0.0275, 0.0392],\n",
" [0.1333, 0.1216, 0.1098, ..., 0.0157, 0.0314, 0.0471]],\n",
"\n",
" [[0.0196, 0.0157, 0.0118, ..., 0.0000, 0.0039, 0.0118],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0118, 0.0196, 0.0235],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0235, 0.0275],\n",
" ...,\n",
" [0.0196, 0.0039, 0.0000, ..., 0.0039, 0.0157, 0.0275],\n",
" [0.0353, 0.0235, 0.0196, ..., 0.0118, 0.0275, 0.0392],\n",
" [0.0510, 0.0392, 0.0392, ..., 0.0157, 0.0314, 0.0471]],\n",
"\n",
" [[0.0235, 0.0196, 0.0157, ..., 0.0000, 0.0078, 0.0157],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0157, 0.0235, 0.0275],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0235, 0.0275, 0.0314],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0039, 0.0157, 0.0275],\n",
" [0.0235, 0.0078, 0.0039, ..., 0.0118, 0.0275, 0.0392],\n",
" [0.0392, 0.0275, 0.0235, ..., 0.0157, 0.0314, 0.0471]]]), TensorImage([[[0.0314, 0.0314, 0.0235, ..., 0.0000, 0.0118, 0.0275],\n",
" [0.0235, 0.0275, 0.0196, ..., 0.0000, 0.0118, 0.0235],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0039, 0.0118, 0.0235],\n",
" ...,\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0157, 0.0078, 0.0000, ..., 0.0078, 0.0078, 0.0118]],\n",
"\n",
" [[0.0157, 0.0157, 0.0157, ..., 0.0000, 0.0118, 0.0275],\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0000, 0.0118, 0.0235],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0039, 0.0118, 0.0235],\n",
" ...,\n",
" [0.0314, 0.0314, 0.0314, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0353, 0.0235, 0.0196, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0314, 0.0157, 0.0039, ..., 0.0000, 0.0000, 0.0039]],\n",
"\n",
" [[0.0196, 0.0196, 0.0196, ..., 0.0000, 0.0118, 0.0275],\n",
" [0.0118, 0.0157, 0.0157, ..., 0.0000, 0.0118, 0.0235],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0039, 0.0118, 0.0235],\n",
" ...,\n",
" [0.0275, 0.0275, 0.0275, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0314, 0.0196, 0.0078, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0275, 0.0039, 0.0000, ..., 0.0039, 0.0039, 0.0078]]]), -0.19932899999999698), (TensorImage([[[0.0039, 0.0118, 0.0235, ..., 0.0588, 0.0784, 0.0980],\n",
" [0.0078, 0.0118, 0.0196, ..., 0.0588, 0.0745, 0.0941],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0588, 0.0667, 0.0745],\n",
" ...,\n",
" [0.0353, 0.0314, 0.0392, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0471, 0.0471, 0.0392, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0627, 0.0549, 0.0471, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0000, 0.0039, 0.0157, ..., 0.0157, 0.0275, 0.0392],\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0157, 0.0235, 0.0353],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0157, 0.0235, 0.0235],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0039, 0.0000, 0.0000]],\n",
"\n",
" [[0.0000, 0.0078, 0.0196, ..., 0.0392, 0.0549, 0.0667],\n",
" [0.0039, 0.0078, 0.0157, ..., 0.0314, 0.0510, 0.0627],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0314, 0.0392, 0.0510],\n",
" ...,\n",
" [0.0039, 0.0078, 0.0157, ..., 0.0196, 0.0275, 0.0353],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0196, 0.0353, 0.0471],\n",
" [0.0314, 0.0235, 0.0157, ..., 0.0235, 0.0431, 0.0471]]]), TensorImage([[[0.0196, 0.0235, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0118, 0.0000, 0.0000],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0275, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0353, 0.0353, 0.0314, ..., 0.0314, 0.0235, 0.0235],\n",
" [0.0471, 0.0431, 0.0431, ..., 0.0275, 0.0275, 0.0235],\n",
" [0.0667, 0.0667, 0.0627, ..., 0.0275, 0.0235, 0.0235]],\n",
"\n",
" [[0.0039, 0.0078, 0.0078, ..., 0.0196, 0.0275, 0.0235],\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0353, 0.0235, 0.0157],\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0431, 0.0275, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0039, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0078, 0.0039, 0.0039]],\n",
"\n",
" [[0.0078, 0.0118, 0.0118, ..., 0.0118, 0.0157, 0.0118],\n",
" [0.0039, 0.0078, 0.0118, ..., 0.0275, 0.0157, 0.0078],\n",
" [0.0039, 0.0078, 0.0118, ..., 0.0392, 0.0196, 0.0039],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0275, 0.0275, 0.0275],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0314, 0.0314, 0.0275],\n",
" [0.0353, 0.0353, 0.0314, ..., 0.0314, 0.0275, 0.0314]]]), -0.20880999999999972), (TensorImage([[[0.0118, 0.0118, 0.0157, ..., 0.0627, 0.0627, 0.0627],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0549, 0.0627, 0.0588],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0510, 0.0471, 0.0549],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0039, 0.0078, 0.0118, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0039, 0.0118, 0.0157]],\n",
"\n",
" [[0.0039, 0.0039, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0039, 0.0078, 0.0118, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0000, 0.0039, 0.0078]],\n",
"\n",
" [[0.0078, 0.0078, 0.0118, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0235, 0.0235, 0.0196],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0000, 0.0078, 0.0118],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0000, 0.0078, 0.0118],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0000, 0.0078, 0.0118]]]), TensorImage([[[0.0275, 0.0235, 0.0118, ..., 0.0353, 0.0353, 0.0353],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0353, 0.0353, 0.0392],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0235, 0.0314, 0.0314],\n",
" ...,\n",
" [0.0275, 0.0235, 0.0157, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0431, 0.0353, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0549, 0.0471, 0.0314, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0549, 0.0510, 0.0392, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0392, 0.0353, 0.0314, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0000, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0275, 0.0235, 0.0157, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0431, 0.0353, 0.0235, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0549, 0.0471, 0.0314, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0235, 0.0196, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0275, 0.0235, 0.0157, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0431, 0.0353, 0.0235, ..., 0.0157, 0.0196, 0.0196],\n",
" [0.0549, 0.0471, 0.0314, ..., 0.0157, 0.0157, 0.0157]]]), 0.6004889999999996), (TensorImage([[[0.0196, 0.0078, 0.0039, ..., 0.0118, 0.0078, 0.0078],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0235, 0.0275, 0.0235, ..., 0.0235, 0.0235, 0.0275],\n",
" ...,\n",
" [0.0235, 0.0314, 0.0392, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0118, 0.0157, 0.0275, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0078, 0.0078, 0.0078]],\n",
"\n",
" [[0.0118, 0.0000, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0157, 0.0196, 0.0157, ..., 0.0157, 0.0157, 0.0196],\n",
" ...,\n",
" [0.0235, 0.0314, 0.0392, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0118, 0.0157, 0.0275, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0078, 0.0078, 0.0078]],\n",
"\n",
" [[0.0157, 0.0039, 0.0000, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0196, 0.0235, 0.0196, ..., 0.0196, 0.0196, 0.0235],\n",
" ...,\n",
" [0.0235, 0.0314, 0.0392, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0118, 0.0157, 0.0275, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0078, 0.0078, 0.0078]]]), TensorImage([[[0.0314, 0.0196, 0.0039, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0235, 0.0157, 0.0039, ..., 0.0118, 0.0039, 0.0039],\n",
" [0.0157, 0.0078, 0.0000, ..., 0.0196, 0.0118, 0.0039],\n",
" ...,\n",
" [0.0549, 0.0392, 0.0314, ..., 0.0471, 0.0510, 0.0392],\n",
" [0.0549, 0.0392, 0.0353, ..., 0.0510, 0.0510, 0.0431],\n",
" [0.0588, 0.0392, 0.0392, ..., 0.0471, 0.0471, 0.0353]],\n",
"\n",
" [[0.0314, 0.0196, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0235, 0.0157, 0.0039, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0157, 0.0078, 0.0000, ..., 0.0118, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0196, 0.0039, 0.0000, ..., 0.0157, 0.0118, 0.0039],\n",
" [0.0196, 0.0039, 0.0000, ..., 0.0118, 0.0157, 0.0000],\n",
" [0.0196, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0000]],\n",
"\n",
" [[0.0314, 0.0196, 0.0039, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0235, 0.0157, 0.0039, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0157, 0.0078, 0.0000, ..., 0.0157, 0.0078, 0.0000],\n",
" ...,\n",
" [0.0235, 0.0078, 0.0000, ..., 0.0039, 0.0039, 0.0000],\n",
" [0.0235, 0.0078, 0.0039, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0235, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000]]]), 0.2623300000000004), (TensorImage([[[0.0118, 0.0118, 0.0118, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0157, 0.0196, 0.0235],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0196, 0.0196, 0.0235],\n",
" [0.0235, 0.0196, 0.0196, ..., 0.0196, 0.0235, 0.0275]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0039, 0.0078],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0118, 0.0157, 0.0196]],\n",
"\n",
" [[0.0078, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0039],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0196, 0.0157, 0.0157, ..., 0.0157, 0.0196, 0.0235]]]), TensorImage([[[0.0235, 0.0157, 0.0157, ..., 0.0196, 0.0118, 0.0078],\n",
" [0.0392, 0.0196, 0.0157, ..., 0.0275, 0.0275, 0.0275],\n",
" [0.0549, 0.0314, 0.0196, ..., 0.0314, 0.0431, 0.0471],\n",
" ...,\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0118, 0.0196, 0.0196],\n",
" [0.0275, 0.0235, 0.0118, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0275, 0.0235, 0.0118, ..., 0.0118, 0.0157, 0.0196]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0157, 0.0000, 0.0000, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0314, 0.0078, 0.0000, ..., 0.0235, 0.0353, 0.0392],\n",
" ...,\n",
" [0.0196, 0.0118, 0.0039, ..., 0.0118, 0.0196, 0.0196],\n",
" [0.0196, 0.0157, 0.0039, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0196, 0.0157, 0.0039, ..., 0.0118, 0.0157, 0.0196]],\n",
"\n",
" [[0.0078, 0.0000, 0.0000, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0235, 0.0039, 0.0000, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0392, 0.0157, 0.0039, ..., 0.0275, 0.0392, 0.0431],\n",
" ...,\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0118, 0.0196, 0.0196],\n",
" [0.0235, 0.0196, 0.0078, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0235, 0.0196, 0.0078, ..., 0.0118, 0.0157, 0.0196]]]), -0.20047500000000262), (TensorImage([[[0.0353, 0.0196, 0.0039, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0314, 0.0118, 0.0000, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0196, 0.0078, 0.0000, ..., 0.0118, 0.0078, 0.0039],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0118, 0.0157]],\n",
"\n",
" [[0.0353, 0.0196, 0.0039, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0314, 0.0118, 0.0000, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0196, 0.0078, 0.0000, ..., 0.0118, 0.0078, 0.0039],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0118, 0.0078, 0.0039],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0235, 0.0196, 0.0118, ..., 0.0000, 0.0039, 0.0078]],\n",
"\n",
" [[0.0275, 0.0118, 0.0000, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0235, 0.0039, 0.0000, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0118, 0.0000, 0.0000, ..., 0.0118, 0.0078, 0.0039],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0039, 0.0078, 0.0118]]]), TensorImage([[[0.0078, 0.0118, 0.0196, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0039, 0.0039, 0.0000]],\n",
"\n",
" [[0.0000, 0.0039, 0.0118, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0039, 0.0039, 0.0000]],\n",
"\n",
" [[0.0039, 0.0078, 0.0157, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0039, 0.0039, 0.0000]]]), -0.0006649999999996936), (TensorImage([[[0.1922, 0.1333, 0.0745, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.2078, 0.1490, 0.0863, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.2118, 0.1529, 0.0902, ..., 0.0196, 0.0196, 0.0157],\n",
" ...,\n",
" [0.0196, 0.0235, 0.0275, ..., 0.0039, 0.0157, 0.0275],\n",
" [0.0118, 0.0118, 0.0039, ..., 0.0118, 0.0196, 0.0275],\n",
" [0.0118, 0.0000, 0.0000, ..., 0.0235, 0.0196, 0.0235]],\n",
"\n",
" [[0.1765, 0.1176, 0.0588, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.1922, 0.1333, 0.0706, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.2039, 0.1451, 0.0824, ..., 0.0118, 0.0118, 0.0078],\n",
" ...,\n",
" [0.0275, 0.0314, 0.0353, ..., 0.0039, 0.0157, 0.0275],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0118, 0.0196, 0.0275],\n",
" [0.0275, 0.0078, 0.0039, ..., 0.0235, 0.0196, 0.0235]],\n",
"\n",
" [[0.1804, 0.1216, 0.0627, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.1961, 0.1373, 0.0745, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.2078, 0.1490, 0.0863, ..., 0.0157, 0.0157, 0.0118],\n",
" ...,\n",
" [0.0235, 0.0275, 0.0314, ..., 0.0039, 0.0157, 0.0275],\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0118, 0.0196, 0.0275],\n",
" [0.0235, 0.0039, 0.0000, ..., 0.0235, 0.0196, 0.0235]]]), TensorImage([[[0.0078, 0.0118, 0.0157, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0118, ..., 0.0118, 0.0078, 0.0039],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0196, 0.0157, 0.0118],\n",
" ...,\n",
" [0.0235, 0.0275, 0.0353, ..., 0.0157, 0.0157, 0.0078],\n",
" [0.0196, 0.0196, 0.0314, ..., 0.0235, 0.0235, 0.0118],\n",
" [0.0157, 0.0157, 0.0196, ..., 0.0275, 0.0314, 0.0157]],\n",
"\n",
" [[0.0039, 0.0078, 0.0157, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0000, 0.0000, 0.0118, ..., 0.0314, 0.0275, 0.0235],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0392, 0.0353, 0.0314],\n",
" ...,\n",
" [0.0431, 0.0471, 0.0471, ..., 0.0157, 0.0157, 0.0078],\n",
" [0.0392, 0.0392, 0.0431, ..., 0.0235, 0.0235, 0.0118],\n",
" [0.0353, 0.0353, 0.0314, ..., 0.0275, 0.0314, 0.0157]],\n",
"\n",
" [[0.0235, 0.0275, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0157, 0.0078, 0.0039],\n",
" ...,\n",
" [0.0157, 0.0196, 0.0196, ..., 0.0157, 0.0157, 0.0078],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0235, 0.0235, 0.0118],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0275, 0.0314, 0.0157]]]), 0.021850999999999843), (TensorImage([[[0.0235, 0.0157, 0.0078, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0275, 0.0235, 0.0235, ..., 0.0118, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0118, 0.0157, 0.0157, ..., 0.0314, 0.0275, 0.0275],\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0275, 0.0275, 0.0235, ..., 0.0157, 0.0157, 0.0157]],\n",
"\n",
" [[0.0196, 0.0118, 0.0039, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0235, 0.0196, 0.0196, ..., 0.0039, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0235, 0.0235, 0.0196, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0039, 0.0000, 0.0000, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0039, 0.0000, 0.0039, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0078, 0.0039, 0.0118, ..., 0.0078, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0157, 0.0118, 0.0118],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0000, 0.0000, 0.0000]]]), TensorImage([[[0.0588, 0.0431, 0.0353, ..., 0.0000, 0.0039, 0.0314],\n",
" [0.0667, 0.0431, 0.0353, ..., 0.0039, 0.0078, 0.0314],\n",
" [0.0627, 0.0431, 0.0353, ..., 0.0078, 0.0157, 0.0431],\n",
" ...,\n",
" [0.0667, 0.0745, 0.0863, ..., 0.0118, 0.0078, 0.0039],\n",
" [0.0588, 0.0784, 0.0941, ..., 0.0118, 0.0118, 0.0039],\n",
" [0.0431, 0.0667, 0.0863, ..., 0.0196, 0.0157, 0.0157]],\n",
"\n",
" [[0.0588, 0.0431, 0.0353, ..., 0.0078, 0.0118, 0.0471],\n",
" [0.0627, 0.0431, 0.0353, ..., 0.0118, 0.0157, 0.0471],\n",
" [0.0588, 0.0431, 0.0353, ..., 0.0157, 0.0235, 0.0510],\n",
" ...,\n",
" [0.0353, 0.0431, 0.0549, ..., 0.0275, 0.0235, 0.0275],\n",
" [0.0196, 0.0392, 0.0549, ..., 0.0353, 0.0353, 0.0392],\n",
" [0.0039, 0.0275, 0.0471, ..., 0.0431, 0.0510, 0.0510]],\n",
"\n",
" [[0.0510, 0.0353, 0.0275, ..., 0.0039, 0.0078, 0.0431],\n",
" [0.0549, 0.0353, 0.0275, ..., 0.0078, 0.0118, 0.0431],\n",
" [0.0510, 0.0353, 0.0275, ..., 0.0118, 0.0196, 0.0471],\n",
" ...,\n",
" [0.0275, 0.0353, 0.0471, ..., 0.0235, 0.0196, 0.0196],\n",
" [0.0157, 0.0353, 0.0510, ..., 0.0275, 0.0275, 0.0275],\n",
" [0.0000, 0.0235, 0.0431, ..., 0.0353, 0.0392, 0.0392]]]), 0.6492949999999986), (TensorImage([[[0.0039, 0.0039, 0.0039, ..., 0.0196, 0.0275, 0.0275],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0196, 0.0157, 0.0118],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0118, 0.0157, 0.0196]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0275, 0.0275],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0196, 0.0157, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0118, 0.0157, 0.0196]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0275, 0.0275],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0196, 0.0157, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0118, 0.0157, 0.0196]]]), TensorImage([[[0.0078, 0.0157, 0.0196, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0235, 0.0275, 0.0275, ..., 0.0235, 0.0157, 0.0078],\n",
" [0.0196, 0.0235, 0.0235, ..., 0.0314, 0.0275, 0.0196],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0353, 0.0275, 0.0196],\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0196, 0.0118, 0.0039],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0039, 0.0000, 0.0000]],\n",
"\n",
" [[0.0000, 0.0078, 0.0118, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0157, 0.0196, 0.0196, ..., 0.0157, 0.0078, 0.0000],\n",
" [0.0118, 0.0157, 0.0157, ..., 0.0235, 0.0196, 0.0118],\n",
" ...,\n",
" [0.0078, 0.0157, 0.0275, ..., 0.0353, 0.0275, 0.0196],\n",
" [0.0039, 0.0118, 0.0196, ..., 0.0275, 0.0196, 0.0118],\n",
" [0.0039, 0.0039, 0.0118, ..., 0.0118, 0.0078, 0.0039]],\n",
"\n",
" [[0.0039, 0.0118, 0.0157, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0196, 0.0235, 0.0235, ..., 0.0196, 0.0118, 0.0039],\n",
" [0.0157, 0.0196, 0.0196, ..., 0.0275, 0.0235, 0.0157],\n",
" ...,\n",
" [0.0039, 0.0118, 0.0235, ..., 0.0353, 0.0275, 0.0196],\n",
" [0.0000, 0.0078, 0.0157, ..., 0.0235, 0.0157, 0.0078],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0078, 0.0039, 0.0000]]]), -0.023438999999999766), (TensorImage([[[0.1333, 0.1059, 0.0706, ..., 0.0196, 0.0157, 0.0157],\n",
" [0.1176, 0.0980, 0.0667, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0863, 0.0706, 0.0471, ..., 0.0196, 0.0235, 0.0235],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0235, 0.0353, 0.0392],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0275, 0.0353, 0.0353],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0431, 0.0392, 0.0353]],\n",
"\n",
" [[0.1333, 0.1059, 0.0706, ..., 0.0157, 0.0118, 0.0118],\n",
" [0.1176, 0.0980, 0.0667, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0863, 0.0706, 0.0471, ..., 0.0157, 0.0196, 0.0196],\n",
" ...,\n",
" [0.0196, 0.0157, 0.0078, ..., 0.0078, 0.0157, 0.0196],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0078, 0.0000, 0.0000]],\n",
"\n",
" [[0.1255, 0.0980, 0.0627, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.1098, 0.0902, 0.0588, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0784, 0.0627, 0.0392, ..., 0.0078, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0353, 0.0353, 0.0275, ..., 0.0118, 0.0314, 0.0353],\n",
" [0.0353, 0.0353, 0.0353, ..., 0.0118, 0.0196, 0.0196],\n",
" [0.0353, 0.0353, 0.0353, ..., 0.0196, 0.0196, 0.0157]]]), TensorImage([[[0.0196, 0.0196, 0.0157, ..., 0.0745, 0.0745, 0.0706],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0588, 0.0706, 0.0745],\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0431, 0.0627, 0.0745],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0196, 0.0118, 0.0078],\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0235, 0.0235, 0.0196, ..., 0.0118, 0.0118, 0.0118]],\n",
"\n",
" [[0.0118, 0.0118, 0.0078, ..., 0.0157, 0.0039, 0.0000],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0000, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0039, 0.0039, 0.0039]],\n",
"\n",
" [[0.0157, 0.0157, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0118, 0.0078, 0.0039],\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0078, 0.0078, 0.0078]]]), 0.06434800000000074), (TensorImage([[[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0078, 0.0235],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0078, 0.0275],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0118, 0.0353],\n",
" ...,\n",
" [0.0353, 0.0392, 0.0431, ..., 0.0431, 0.0431, 0.0431],\n",
" [0.0275, 0.0510, 0.0510, ..., 0.0275, 0.0314, 0.0275],\n",
" [0.0275, 0.0549, 0.0706, ..., 0.0196, 0.0235, 0.0196]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0157, 0.0392],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0157, 0.0431],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0196, 0.0431],\n",
" ...,\n",
" [0.0000, 0.0157, 0.0196, ..., 0.0275, 0.0275, 0.0275],\n",
" [0.0000, 0.0157, 0.0275, ..., 0.0235, 0.0275, 0.0235],\n",
" [0.0000, 0.0196, 0.0353, ..., 0.0157, 0.0196, 0.0157]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0118, 0.0353],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0118, 0.0392],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0157, 0.0392],\n",
" ...,\n",
" [0.0039, 0.0157, 0.0196, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0000, 0.0196, 0.0275, ..., 0.0157, 0.0196, 0.0157],\n",
" [0.0000, 0.0235, 0.0392, ..., 0.0078, 0.0118, 0.0078]]]), TensorImage([[[0.0039, 0.0039, 0.0196, ..., 0.0078, 0.0157, 0.0196],\n",
" [0.0039, 0.0157, 0.0275, ..., 0.0118, 0.0196, 0.0275],\n",
" [0.0118, 0.0235, 0.0353, ..., 0.0196, 0.0314, 0.0353],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0118, 0.0157, 0.0275],\n",
" [0.0235, 0.0235, 0.0196, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0275, 0.0235, 0.0196, ..., 0.0196, 0.0196, 0.0196]],\n",
"\n",
" [[0.0000, 0.0000, 0.0118, ..., 0.0000, 0.0078, 0.0118],\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0039, 0.0118, 0.0196],\n",
" [0.0039, 0.0157, 0.0275, ..., 0.0118, 0.0235, 0.0275],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0039, 0.0078, 0.0196],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0118, 0.0118, 0.0118]],\n",
"\n",
" [[0.0000, 0.0000, 0.0157, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0000, 0.0118, 0.0235, ..., 0.0078, 0.0157, 0.0235],\n",
" [0.0078, 0.0196, 0.0314, ..., 0.0157, 0.0275, 0.0314],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0078, 0.0118, 0.0235],\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0157, 0.0157, 0.0157]]]), 0.3132249999999992), (TensorImage([[[0.0353, 0.0118, 0.0078, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0275, 0.0078, 0.0039, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0275, 0.0078, 0.0039, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0118, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0078, 0.0157, 0.0196, ..., 0.0039, 0.0078, 0.0157],\n",
" [0.0157, 0.0235, 0.0275, ..., 0.0039, 0.0118, 0.0196]],\n",
"\n",
" [[0.0314, 0.0078, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0235, 0.0039, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0235, 0.0039, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0118, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0078, 0.0157, 0.0196, ..., 0.0000, 0.0039, 0.0118],\n",
" [0.0157, 0.0235, 0.0275, ..., 0.0000, 0.0078, 0.0157]],\n",
"\n",
" [[0.0235, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0000],\n",
" [0.0157, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0157, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0118, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0078, 0.0157, 0.0196, ..., 0.0196, 0.0235, 0.0314],\n",
" [0.0157, 0.0235, 0.0275, ..., 0.0196, 0.0275, 0.0353]]]), TensorImage([[[0.0549, 0.0471, 0.0392, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0588, 0.0510, 0.0431, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0588, 0.0510, 0.0431, ..., 0.0078, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0196, 0.0196, 0.0157],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0118, 0.0078, 0.0078],\n",
" [0.0275, 0.0235, 0.0196, ..., 0.0039, 0.0039, 0.0039]],\n",
"\n",
" [[0.0196, 0.0118, 0.0039, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0000, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0314, 0.0235, 0.0157, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0353, 0.0275, 0.0196, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0353, 0.0275, 0.0196, ..., 0.0118, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0000, 0.0000, 0.0000]]]), 0.23167199999999966), (TensorImage([[[0.0196, 0.0196, 0.0196, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0039, 0.0078, 0.0118, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0039, 0.0118, 0.0196, ..., 0.0157, 0.0118, 0.0078],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0275, 0.0196, 0.0118],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0275, 0.0235, 0.0118]],\n",
"\n",
" [[0.0275, 0.0275, 0.0275, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0118, 0.0157, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0118, 0.0196, ..., 0.0078, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0275, 0.0196, 0.0118],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0275, 0.0235, 0.0118]],\n",
"\n",
" [[0.0157, 0.0157, 0.0157, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0118, 0.0078, 0.0039],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0275, 0.0196, 0.0118],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0275, 0.0235, 0.0118]]]), TensorImage([[[0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0157, 0.0196, 0.0196],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0196, 0.0235, 0.0196],\n",
" ...,\n",
" [0.0314, 0.0275, 0.0353, ..., 0.0314, 0.0392, 0.0471],\n",
" [0.0275, 0.0353, 0.0314, ..., 0.0275, 0.0392, 0.0431],\n",
" [0.0275, 0.0353, 0.0353, ..., 0.0235, 0.0353, 0.0431]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0157, 0.0196, 0.0196],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0235, 0.0196],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0078, 0.0157, 0.0235],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0039, 0.0157, 0.0196],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0118, 0.0196]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0157, 0.0118],\n",
" ...,\n",
" [0.0078, 0.0118, 0.0196, ..., 0.0157, 0.0235, 0.0314],\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0118, 0.0235, 0.0275],\n",
" [0.0039, 0.0118, 0.0118, ..., 0.0078, 0.0196, 0.0275]]]), -0.1389130000000005), (TensorImage([[[0.0000, 0.0000, 0.0000, ..., 0.0314, 0.0275, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0196, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0157, 0.0039],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0471, 0.0549, 0.0667],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0196, 0.0275, 0.0392],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0000, 0.0078, 0.0235]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0314, 0.0275, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0196, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0157, 0.0039],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0471, 0.0549, 0.0667],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0196, 0.0275, 0.0392],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0000, 0.0078, 0.0235]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0392, 0.0353, 0.0196],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0353, 0.0275, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0235, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0471, 0.0549, 0.0667],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0275, 0.0392],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0078, 0.0235]]]), TensorImage([[[0.0431, 0.0431, 0.0471, ..., 0.4392, 0.4392, 0.4392],\n",
" [0.0549, 0.0588, 0.0588, ..., 0.4314, 0.4314, 0.4314],\n",
" [0.0588, 0.0627, 0.0667, ..., 0.4235, 0.4235, 0.4196],\n",
" ...,\n",
" [0.0196, 0.0157, 0.0157, ..., 0.0275, 0.0196, 0.0157],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0196, 0.0157, 0.0157],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0118, 0.0118, 0.0118]],\n",
"\n",
" [[0.0196, 0.0196, 0.0235, ..., 0.3765, 0.3765, 0.3765],\n",
" [0.0196, 0.0235, 0.0235, ..., 0.3686, 0.3686, 0.3686],\n",
" [0.0235, 0.0275, 0.0314, ..., 0.3608, 0.3608, 0.3569],\n",
" ...,\n",
" [0.0235, 0.0196, 0.0196, ..., 0.0196, 0.0118, 0.0078],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0118, 0.0078, 0.0078],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0039, 0.0039, 0.0039]],\n",
"\n",
" [[0.0275, 0.0275, 0.0314, ..., 0.2471, 0.2471, 0.2471],\n",
" [0.0314, 0.0353, 0.0353, ..., 0.2392, 0.2392, 0.2392],\n",
" [0.0353, 0.0392, 0.0431, ..., 0.2314, 0.2314, 0.2275],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0235, 0.0157, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0118, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0078]]]), -0.27969700000000053), (TensorImage([[[0.0235, 0.0196, 0.0157, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0118, 0.0078, 0.0196, ..., 0.0235, 0.0235, 0.0196],\n",
" [0.0196, 0.0118, 0.0235, ..., 0.0235, 0.0235, 0.0235],\n",
" [0.0275, 0.0157, 0.0275, ..., 0.0275, 0.0275, 0.0275]],\n",
"\n",
" [[0.0157, 0.0118, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0118, 0.0078, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0196, 0.0118, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0275, 0.0157, 0.0275, ..., 0.0039, 0.0039, 0.0039]],\n",
"\n",
" [[0.0196, 0.0157, 0.0118, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0118, 0.0039, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0196, 0.0078, 0.0196, ..., 0.0039, 0.0039, 0.0039]]]), TensorImage([[[0.0078, 0.0157, 0.0235, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0039, 0.0118, 0.0196, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0039, 0.0078, 0.0157, ..., 0.0078, 0.0118, 0.0157],\n",
" ...,\n",
" [0.0039, 0.0118, 0.0196, ..., 0.0431, 0.0353, 0.0275],\n",
" [0.0118, 0.0196, 0.0235, ..., 0.0471, 0.0392, 0.0314],\n",
" [0.0235, 0.0275, 0.0314, ..., 0.0549, 0.0431, 0.0314]],\n",
"\n",
" [[0.0078, 0.0157, 0.0235, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0039, 0.0118, 0.0196, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0039, 0.0078, 0.0157, ..., 0.0078, 0.0118, 0.0157],\n",
" ...,\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0235, 0.0039, 0.0000],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0314, 0.0078, 0.0000]],\n",
"\n",
" [[0.0078, 0.0157, 0.0235, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0039, 0.0118, 0.0196, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0039, 0.0078, 0.0157, ..., 0.0000, 0.0039, 0.0078],\n",
" ...,\n",
" [0.0078, 0.0157, 0.0235, ..., 0.0196, 0.0078, 0.0000],\n",
" [0.0235, 0.0314, 0.0353, ..., 0.0314, 0.0157, 0.0039],\n",
" [0.0353, 0.0392, 0.0431, ..., 0.0392, 0.0196, 0.0078]]]), -0.06875500000000123), (TensorImage([[[0.0157, 0.0157, 0.0157, ..., 0.0275, 0.0118, 0.0000],\n",
" [0.0235, 0.0275, 0.0275, ..., 0.0275, 0.0118, 0.0000],\n",
" [0.0392, 0.0392, 0.0353, ..., 0.0235, 0.0157, 0.0078],\n",
" ...,\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0353, 0.0235, 0.0118],\n",
" [0.0235, 0.0157, 0.0118, ..., 0.0353, 0.0196, 0.0000],\n",
" [0.0314, 0.0235, 0.0196, ..., 0.0314, 0.0118, 0.0000]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0118, 0.0000],\n",
" [0.0000, 0.0039, 0.0039, ..., 0.0275, 0.0118, 0.0000],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0235, 0.0157, 0.0078],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0353, 0.0235, 0.0118],\n",
" [0.0157, 0.0078, 0.0039, ..., 0.0353, 0.0196, 0.0000],\n",
" [0.0235, 0.0157, 0.0118, ..., 0.0314, 0.0118, 0.0000]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0118, 0.0000],\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0275, 0.0118, 0.0000],\n",
" [0.0235, 0.0235, 0.0196, ..., 0.0235, 0.0157, 0.0078],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0353, 0.0235, 0.0118],\n",
" [0.0196, 0.0118, 0.0078, ..., 0.0353, 0.0196, 0.0000],\n",
" [0.0275, 0.0196, 0.0157, ..., 0.0314, 0.0118, 0.0000]]]), TensorImage([[[0.0235, 0.0235, 0.0235, ..., 0.0235, 0.0275, 0.0314],\n",
" [0.0235, 0.0235, 0.0196, ..., 0.0196, 0.0275, 0.0275],\n",
" [0.0275, 0.0196, 0.0157, ..., 0.0196, 0.0235, 0.0235],\n",
" ...,\n",
" [0.0510, 0.0510, 0.0431, ..., 0.0157, 0.0157, 0.0078],\n",
" [0.0706, 0.0549, 0.0353, ..., 0.0157, 0.0078, 0.0000],\n",
" [0.0784, 0.0549, 0.0275, ..., 0.0235, 0.0157, 0.0078]],\n",
"\n",
" [[0.0157, 0.0157, 0.0157, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0078, 0.0157, 0.0157],\n",
" [0.0196, 0.0118, 0.0078, ..., 0.0078, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0275, 0.0275, 0.0196, ..., 0.0235, 0.0235, 0.0157],\n",
" [0.0471, 0.0314, 0.0118, ..., 0.0235, 0.0157, 0.0078],\n",
" [0.0549, 0.0314, 0.0039, ..., 0.0314, 0.0235, 0.0118]],\n",
"\n",
" [[0.0196, 0.0196, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0235, 0.0157, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0353, 0.0353, 0.0275, ..., 0.0118, 0.0118, 0.0039],\n",
" [0.0549, 0.0392, 0.0196, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0627, 0.0392, 0.0118, ..., 0.0118, 0.0039, 0.0000]]]), -0.15737199999999696), (TensorImage([[[0.0039, 0.0039, 0.0039, ..., 0.0314, 0.0275, 0.0196],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0275, 0.0235, 0.0196],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0235, 0.0235, 0.0235],\n",
" ...,\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0275, 0.0471, 0.0627],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0314, 0.0510, 0.0706],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0353, 0.0510, 0.0706]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0196, 0.0392, 0.0549],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0235, 0.0431, 0.0627],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0275, 0.0431, 0.0627]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0157, 0.0118, 0.0039],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0118, 0.0078, 0.0039],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0078, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0235, 0.0431, 0.0588],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0275, 0.0471, 0.0667],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0314, 0.0471, 0.0667]]]), TensorImage([[[0.0196, 0.0196, 0.0157, ..., 0.0157, 0.0275, 0.0314],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0118, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0235, 0.0157, 0.0078],\n",
" [0.0000, 0.0118, 0.0235, ..., 0.0275, 0.0157, 0.0039]],\n",
"\n",
" [[0.0118, 0.0118, 0.0078, ..., 0.0157, 0.0275, 0.0314],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0118, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0157, 0.0078, 0.0000],\n",
" [0.0000, 0.0118, 0.0235, ..., 0.0196, 0.0078, 0.0000]],\n",
"\n",
" [[0.0157, 0.0157, 0.0118, ..., 0.0157, 0.0275, 0.0314],\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0118, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0196, 0.0118, 0.0039],\n",
" [0.0000, 0.0118, 0.0235, ..., 0.0235, 0.0118, 0.0000]]]), 0.1242270000000012), (TensorImage([[[0.0275, 0.0118, 0.0078, ..., 0.0431, 0.0549, 0.0667],\n",
" [0.0118, 0.0000, 0.0000, ..., 0.0471, 0.0549, 0.0667],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0510, 0.0588, 0.0627],\n",
" ...,\n",
" [0.0392, 0.0392, 0.0353, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0392, 0.0392, 0.0392, ..., 0.0118, 0.0157, 0.0235],\n",
" [0.0431, 0.0431, 0.0431, ..., 0.0078, 0.0157, 0.0235]],\n",
"\n",
" [[0.0353, 0.0196, 0.0157, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0196, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0078, 0.0157],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0078, 0.0157]],\n",
"\n",
" [[0.0314, 0.0157, 0.0118, ..., 0.0314, 0.0392, 0.0431],\n",
" [0.0157, 0.0039, 0.0039, ..., 0.0353, 0.0314, 0.0431],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0353, 0.0353, 0.0392],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0118, 0.0196],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0118, 0.0196]]]), TensorImage([[[0.0392, 0.0510, 0.0588, ..., 0.0275, 0.0196, 0.0078],\n",
" [0.0392, 0.0431, 0.0471, ..., 0.0235, 0.0196, 0.0078],\n",
" [0.0392, 0.0353, 0.0314, ..., 0.0157, 0.0157, 0.0078],\n",
" ...,\n",
" [0.0118, 0.0157, 0.0235, ..., 0.0275, 0.0314, 0.0353],\n",
" [0.0118, 0.0039, 0.0118, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0118, 0.0000, 0.0000, ..., 0.0078, 0.0039, 0.0039]],\n",
"\n",
" [[0.0157, 0.0275, 0.0353, ..., 0.0275, 0.0196, 0.0078],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0235, 0.0196, 0.0078],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0157, 0.0157, 0.0078],\n",
" ...,\n",
" [0.0510, 0.0549, 0.0627, ..., 0.0196, 0.0235, 0.0275],\n",
" [0.0588, 0.0431, 0.0510, ..., 0.0078, 0.0078, 0.0039],\n",
" [0.0588, 0.0392, 0.0392, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0157, 0.0275, 0.0353, ..., 0.0196, 0.0118, 0.0000],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0157, 0.0118, 0.0000],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0078, 0.0078, 0.0000],\n",
" ...,\n",
" [0.0078, 0.0196, 0.0275, ..., 0.0235, 0.0275, 0.0314],\n",
" [0.0118, 0.0000, 0.0157, ..., 0.0118, 0.0118, 0.0078],\n",
" [0.0118, 0.0000, 0.0000, ..., 0.0039, 0.0000, 0.0000]]]), 0.1414150000000003), (TensorImage([[[0.0000, 0.0392, 0.0431, ..., 0.0431, 0.0471, 0.0549],\n",
" [0.0039, 0.0353, 0.0392, ..., 0.0314, 0.0431, 0.0510],\n",
" [0.0039, 0.0314, 0.0314, ..., 0.0275, 0.0314, 0.0431],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0314, 0.0275, 0.0353, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0471, 0.0431, 0.0392, ..., 0.0078, 0.0078, 0.0039]],\n",
"\n",
" [[0.0000, 0.0392, 0.0431, ..., 0.0078, 0.0118, 0.0196],\n",
" [0.0039, 0.0353, 0.0392, ..., 0.0078, 0.0078, 0.0157],\n",
" [0.0039, 0.0314, 0.0314, ..., 0.0039, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0000, ..., 0.0078, 0.0039, 0.0078],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0078, 0.0039, 0.0000]],\n",
"\n",
" [[0.0000, 0.0392, 0.0431, ..., 0.0118, 0.0157, 0.0235],\n",
" [0.0039, 0.0353, 0.0392, ..., 0.0078, 0.0118, 0.0196],\n",
" [0.0039, 0.0314, 0.0314, ..., 0.0039, 0.0078, 0.0118],\n",
" ...,\n",
" [0.0235, 0.0235, 0.0196, ..., 0.0157, 0.0235, 0.0275],\n",
" [0.0314, 0.0275, 0.0275, ..., 0.0157, 0.0235, 0.0235],\n",
" [0.0353, 0.0314, 0.0275, ..., 0.0157, 0.0235, 0.0196]]]), TensorImage([[[0.0118, 0.0000, 0.0000, ..., 0.0549, 0.0549, 0.0510],\n",
" [0.0078, 0.0000, 0.0000, ..., 0.0471, 0.0431, 0.0353],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0392, 0.0314, 0.0235],\n",
" ...,\n",
" [0.0157, 0.0275, 0.0392, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0078, 0.0235, 0.0392, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0039, 0.0118, 0.0314, ..., 0.0078, 0.0118, 0.0118]],\n",
"\n",
" [[0.0118, 0.0000, 0.0000, ..., 0.0549, 0.0549, 0.0510],\n",
" [0.0078, 0.0000, 0.0000, ..., 0.0471, 0.0431, 0.0353],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0392, 0.0314, 0.0235],\n",
" ...,\n",
" [0.0078, 0.0196, 0.0314, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0000, 0.0157, 0.0314, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0000, 0.0039, 0.0235, ..., 0.0000, 0.0039, 0.0039]],\n",
"\n",
" [[0.0118, 0.0000, 0.0000, ..., 0.0549, 0.0549, 0.0510],\n",
" [0.0078, 0.0000, 0.0000, ..., 0.0471, 0.0431, 0.0353],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0392, 0.0314, 0.0235],\n",
" ...,\n",
" [0.0118, 0.0235, 0.0353, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0039, 0.0196, 0.0353, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0000, 0.0078, 0.0275, ..., 0.0039, 0.0078, 0.0078]]]), -0.36872100000000074), (TensorImage([[[0.0118, 0.0235, 0.0353, ..., 0.0196, 0.0275, 0.0314],\n",
" [0.0039, 0.0157, 0.0275, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0000, 0.0078, 0.0157, ..., 0.0196, 0.0157, 0.0118],\n",
" ...,\n",
" [0.0353, 0.0314, 0.0275, ..., 0.0745, 0.1059, 0.1294],\n",
" [0.0353, 0.0314, 0.0235, ..., 0.0941, 0.1294, 0.1569],\n",
" [0.0353, 0.0314, 0.0235, ..., 0.0980, 0.1373, 0.1647]],\n",
"\n",
" [[0.0157, 0.0275, 0.0353, ..., 0.0196, 0.0275, 0.0314],\n",
" [0.0078, 0.0196, 0.0275, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0039, 0.0118, 0.0157, ..., 0.0196, 0.0157, 0.0118],\n",
" ...,\n",
" [0.0275, 0.0235, 0.0196, ..., 0.0706, 0.1020, 0.1255],\n",
" [0.0275, 0.0235, 0.0157, ..., 0.0784, 0.1137, 0.1412],\n",
" [0.0275, 0.0235, 0.0157, ..., 0.0824, 0.1216, 0.1490]],\n",
"\n",
" [[0.0000, 0.0078, 0.0275, ..., 0.0196, 0.0275, 0.0314],\n",
" [0.0000, 0.0000, 0.0196, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0196, 0.0157, 0.0118],\n",
" ...,\n",
" [0.0314, 0.0275, 0.0235, ..., 0.0627, 0.0941, 0.1176],\n",
" [0.0314, 0.0275, 0.0196, ..., 0.0745, 0.1098, 0.1373],\n",
" [0.0314, 0.0275, 0.0196, ..., 0.0784, 0.1176, 0.1451]]]), TensorImage([[[0.0078, 0.0078, 0.0078, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0196, 0.0196, 0.0235],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0314, 0.0353, 0.0353],\n",
" ...,\n",
" [0.0431, 0.0275, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0000, 0.0039, 0.0000]],\n",
"\n",
" [[0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0235, 0.0275, 0.0275],\n",
" ...,\n",
" [0.0431, 0.0275, 0.0118, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0078, 0.0118, 0.0157]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0314, 0.0314],\n",
" ...,\n",
" [0.0353, 0.0196, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0196, 0.0118, 0.0039, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0078, 0.0118]]]), 0.32745799999999825), (TensorImage([[[0.0157, 0.0157, 0.0157, ..., 0.0588, 0.0667, 0.0706],\n",
" [0.0275, 0.0196, 0.0157, ..., 0.0549, 0.0627, 0.0627],\n",
" [0.0353, 0.0275, 0.0196, ..., 0.0471, 0.0510, 0.0510],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0196, 0.0235, 0.0275],\n",
" [0.0157, 0.0039, 0.0000, ..., 0.0196, 0.0196, 0.0235],\n",
" [0.0235, 0.0078, 0.0000, ..., 0.0157, 0.0157, 0.0196]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0235, 0.0314, 0.0353],\n",
" [0.0078, 0.0000, 0.0000, ..., 0.0196, 0.0275, 0.0275],\n",
" [0.0118, 0.0039, 0.0000, ..., 0.0118, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0196, 0.0235, 0.0275],\n",
" [0.0157, 0.0039, 0.0000, ..., 0.0196, 0.0196, 0.0235],\n",
" [0.0235, 0.0078, 0.0000, ..., 0.0157, 0.0157, 0.0196]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0353, 0.0431, 0.0471],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0314, 0.0392, 0.0392],\n",
" [0.0118, 0.0039, 0.0000, ..., 0.0235, 0.0275, 0.0275],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0196, 0.0235, 0.0275],\n",
" [0.0157, 0.0039, 0.0000, ..., 0.0196, 0.0196, 0.0235],\n",
" [0.0235, 0.0078, 0.0000, ..., 0.0157, 0.0157, 0.0196]]]), TensorImage([[[0.0235, 0.0196, 0.0196, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0353, 0.0353, 0.0275, ..., 0.0157, 0.0196, 0.0275],\n",
" [0.0471, 0.0431, 0.0353, ..., 0.0275, 0.0314, 0.0392],\n",
" ...,\n",
" [0.0471, 0.0471, 0.0510, ..., 0.0353, 0.0353, 0.0353],\n",
" [0.0353, 0.0392, 0.0471, ..., 0.0431, 0.0431, 0.0431],\n",
" [0.0235, 0.0314, 0.0392, ..., 0.0510, 0.0510, 0.0471]],\n",
"\n",
" [[0.0235, 0.0196, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0353, 0.0353, 0.0275, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0471, 0.0431, 0.0353, ..., 0.0039, 0.0078, 0.0157],\n",
" ...,\n",
" [0.0314, 0.0314, 0.0353, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0196, 0.0235, 0.0314, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0078, 0.0157, 0.0235, ..., 0.0157, 0.0157, 0.0118]],\n",
"\n",
" [[0.0235, 0.0196, 0.0196, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0353, 0.0353, 0.0275, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0471, 0.0431, 0.0353, ..., 0.0039, 0.0078, 0.0157],\n",
" ...,\n",
" [0.0275, 0.0275, 0.0314, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0157, 0.0196, 0.0275, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0039, 0.0118, 0.0196, ..., 0.0196, 0.0196, 0.0157]]]), 0.061954000000000065), (TensorImage([[[0.2549, 0.2510, 0.2510, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.2588, 0.2471, 0.2392, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.2549, 0.2431, 0.2314, ..., 0.0039, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0196, 0.0157, 0.0157],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0196, 0.0157, 0.0157]],\n",
"\n",
" [[0.0275, 0.0353, 0.0392, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0314, 0.0314, 0.0275, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0275, 0.0275, 0.0235, ..., 0.0039, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0039, 0.0000, 0.0000]],\n",
"\n",
" [[0.0196, 0.0235, 0.0314, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0235, 0.0196, 0.0196, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0118, 0.0157, 0.0078, ..., 0.0039, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0039, 0.0039, 0.0000],\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0078, 0.0000, 0.0000]]]), TensorImage([[[0.0118, 0.0118, 0.0039, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0235, 0.0196, 0.0118, ..., 0.0078, 0.0039, 0.0039],\n",
" [0.0275, 0.0235, 0.0157, ..., 0.0118, 0.0078, 0.0039],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0196, ..., 0.1765, 0.1765, 0.1686],\n",
" [0.0275, 0.0275, 0.0275, ..., 0.1569, 0.1569, 0.1490],\n",
" [0.0314, 0.0275, 0.0275, ..., 0.1529, 0.1608, 0.1490]],\n",
"\n",
" [[0.0118, 0.0118, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0235, 0.0196, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0275, 0.0235, 0.0157, ..., 0.0039, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0118, ..., 0.1176, 0.1216, 0.1137],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.1137, 0.1176, 0.1137],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.1176, 0.1294, 0.1216]],\n",
"\n",
" [[0.0118, 0.0118, 0.0039, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0235, 0.0196, 0.0118, ..., 0.0039, 0.0000, 0.0000],\n",
" [0.0275, 0.0235, 0.0157, ..., 0.0078, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0902, 0.0784, 0.0627],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0902, 0.0784, 0.0549],\n",
" [0.0196, 0.0157, 0.0157, ..., 0.0980, 0.0863, 0.0588]]]), -0.31972600000000106), (TensorImage([[[0.0078, 0.0078, 0.0078, ..., 0.0706, 0.0784, 0.0863],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0706, 0.0784, 0.0824],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0667, 0.0706, 0.0745],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0196, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0039, 0.0078, 0.0157, ..., 0.0196, 0.0196, 0.0196]],\n",
"\n",
" [[0.0078, 0.0078, 0.0078, ..., 0.0000, 0.0039, 0.0118],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0078, 0.0118],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0039, 0.0078, 0.0118, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0000, 0.0039, 0.0118, ..., 0.0157, 0.0157, 0.0157]],\n",
"\n",
" [[0.0078, 0.0078, 0.0078, ..., 0.0118, 0.0196, 0.0275],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0118, 0.0196, 0.0235],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0196, 0.0235],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0275, 0.0275, 0.0275],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0314, 0.0353, 0.0353],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0392, 0.0392, 0.0392]]]), TensorImage([[[0.0314, 0.0196, 0.0078, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0235, 0.0275, 0.0275],\n",
" [0.0157, 0.0118, 0.0118, ..., 0.0275, 0.0353, 0.0392],\n",
" ...,\n",
" [0.0039, 0.0118, 0.0235, ..., 0.0353, 0.0314, 0.0353],\n",
" [0.0078, 0.0196, 0.0314, ..., 0.0314, 0.0314, 0.0275],\n",
" [0.0118, 0.0196, 0.0353, ..., 0.0392, 0.0275, 0.0235]],\n",
"\n",
" [[0.0275, 0.0157, 0.0039, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0196, 0.0118, 0.0039, ..., 0.0157, 0.0196, 0.0196],\n",
" [0.0118, 0.0078, 0.0078, ..., 0.0196, 0.0275, 0.0314],\n",
" ...,\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0118, 0.0078, 0.0000],\n",
" [0.0039, 0.0157, 0.0275, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0078, 0.0157, 0.0314, ..., 0.0039, 0.0000, 0.0000]],\n",
"\n",
" [[0.0118, 0.0000, 0.0000, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0196, 0.0235, 0.0235],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0235, 0.0314, 0.0353],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0118, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0157, 0.0078, 0.0039],\n",
" [0.0000, 0.0078, 0.0235, ..., 0.0157, 0.0039, 0.0000]]]), 1.0556739999999998), (TensorImage([[[0.0157, 0.0157, 0.0157, ..., 0.0118, 0.0353, 0.0588],\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0275, 0.0431, 0.0588],\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0392, 0.0471, 0.0510],\n",
" ...,\n",
" [0.0235, 0.0510, 0.0745, ..., 0.1216, 0.1098, 0.0941],\n",
" [0.0275, 0.0392, 0.0510, ..., 0.1216, 0.1059, 0.0980],\n",
" [0.0314, 0.0275, 0.0275, ..., 0.1255, 0.1137, 0.1020]],\n",
"\n",
" [[0.0157, 0.0157, 0.0157, ..., 0.0078, 0.0314, 0.0549],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0235, 0.0392, 0.0549],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0353, 0.0431, 0.0471],\n",
" ...,\n",
" [0.0078, 0.0353, 0.0588, ..., 0.0353, 0.0235, 0.0157],\n",
" [0.0235, 0.0353, 0.0471, ..., 0.0471, 0.0314, 0.0235],\n",
" [0.0353, 0.0314, 0.0235, ..., 0.0627, 0.0510, 0.0392]],\n",
"\n",
" [[0.0157, 0.0157, 0.0157, ..., 0.0000, 0.0118, 0.0353],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0039, 0.0196, 0.0353],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0196, 0.0275, 0.0314],\n",
" ...,\n",
" [0.0000, 0.0235, 0.0471, ..., 0.0431, 0.0314, 0.0196],\n",
" [0.0078, 0.0196, 0.0314, ..., 0.0549, 0.0392, 0.0314],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0667, 0.0627, 0.0510]]]), TensorImage([[[0.0078, 0.0078, 0.0039, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0157, 0.0039, 0.0000],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0078, 0.0235, 0.0275],\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0157, 0.0275, 0.0314],\n",
" [0.0118, 0.0157, 0.0157, ..., 0.0196, 0.0314, 0.0392]],\n",
"\n",
" [[0.0039, 0.0039, 0.0000, ..., 0.0275, 0.0196, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0196, 0.0157],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0000, 0.0078, 0.0118],\n",
" [0.0039, 0.0118, 0.0118, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0078, 0.0157, 0.0157, ..., 0.0118, 0.0157, 0.0235]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0392, 0.0314, 0.0314],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0353, 0.0314, 0.0275],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0275, 0.0314, 0.0275],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0039, 0.0118, 0.0157],\n",
" [0.0235, 0.0196, 0.0196, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0275, 0.0235, 0.0235, ..., 0.0157, 0.0196, 0.0275]]]), 0.20479800000000026), (TensorImage([[[0.0706, 0.0627, 0.0667, ..., 0.0784, 0.0980, 0.1098],\n",
" [0.0627, 0.0510, 0.0510, ..., 0.0745, 0.0902, 0.1020],\n",
" [0.0549, 0.0392, 0.0353, ..., 0.0745, 0.0902, 0.0980],\n",
" ...,\n",
" [0.0392, 0.0314, 0.0235, ..., 0.0392, 0.0510, 0.0549],\n",
" [0.0353, 0.0275, 0.0157, ..., 0.0353, 0.0471, 0.0510],\n",
" [0.0275, 0.0196, 0.0078, ..., 0.0314, 0.0392, 0.0431]],\n",
"\n",
" [[0.0353, 0.0275, 0.0314, ..., 0.0627, 0.0824, 0.0941],\n",
" [0.0275, 0.0157, 0.0157, ..., 0.0588, 0.0745, 0.0863],\n",
" [0.0196, 0.0039, 0.0000, ..., 0.0627, 0.0784, 0.0863],\n",
" ...,\n",
" [0.0353, 0.0275, 0.0196, ..., 0.0235, 0.0275, 0.0314],\n",
" [0.0314, 0.0235, 0.0118, ..., 0.0157, 0.0235, 0.0275],\n",
" [0.0235, 0.0157, 0.0039, ..., 0.0118, 0.0157, 0.0196]],\n",
"\n",
" [[0.0078, 0.0000, 0.0039, ..., 0.0510, 0.0784, 0.0902],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0471, 0.0627, 0.0745],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0431, 0.0588, 0.0667],\n",
" ...,\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0275, 0.0353, 0.0392],\n",
" [0.0235, 0.0157, 0.0039, ..., 0.0314, 0.0392, 0.0431],\n",
" [0.0157, 0.0078, 0.0000, ..., 0.0275, 0.0314, 0.0353]]]), TensorImage([[[0.0824, 0.0667, 0.0431, ..., 0.1333, 0.1529, 0.1647],\n",
" [0.0667, 0.0588, 0.0471, ..., 0.1451, 0.1647, 0.1725],\n",
" [0.0549, 0.0627, 0.0627, ..., 0.1608, 0.1647, 0.1608],\n",
" ...,\n",
" [0.0667, 0.0588, 0.0510, ..., 0.0667, 0.0549, 0.0392],\n",
" [0.0745, 0.0706, 0.0706, ..., 0.0627, 0.0627, 0.0588],\n",
" [0.0549, 0.0549, 0.0588, ..., 0.0549, 0.0627, 0.0745]],\n",
"\n",
" [[0.0471, 0.0314, 0.0196, ..., 0.0941, 0.0980, 0.1098],\n",
" [0.0314, 0.0235, 0.0235, ..., 0.1059, 0.1098, 0.1176],\n",
" [0.0196, 0.0275, 0.0392, ..., 0.1216, 0.1098, 0.1059],\n",
" ...,\n",
" [0.0549, 0.0471, 0.0392, ..., 0.0667, 0.0588, 0.0431],\n",
" [0.0627, 0.0588, 0.0588, ..., 0.0667, 0.0667, 0.0627],\n",
" [0.0431, 0.0431, 0.0471, ..., 0.0588, 0.0667, 0.0784]],\n",
"\n",
" [[0.0667, 0.0510, 0.0275, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0510, 0.0431, 0.0314, ..., 0.0000, 0.0078, 0.0157],\n",
" [0.0392, 0.0392, 0.0392, ..., 0.0235, 0.0078, 0.0039],\n",
" ...,\n",
" [0.0275, 0.0196, 0.0196, ..., 0.0353, 0.0275, 0.0118],\n",
" [0.0353, 0.0314, 0.0392, ..., 0.0353, 0.0353, 0.0314],\n",
" [0.0157, 0.0157, 0.0275, ..., 0.0275, 0.0353, 0.0471]]]), -0.2378269999999958), (TensorImage([[[0.0353, 0.0235, 0.0157, ..., 0.0196, 0.0196, 0.0275],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0196, 0.0196, 0.0275],\n",
" [0.0196, 0.0118, 0.0078, ..., 0.0196, 0.0196, 0.0275],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0157, ..., 0.2588, 0.2000, 0.1647],\n",
" [0.0314, 0.0275, 0.0196, ..., 0.2431, 0.1882, 0.1569],\n",
" [0.0353, 0.0314, 0.0196, ..., 0.2314, 0.1922, 0.1608]],\n",
"\n",
" [[0.0275, 0.0157, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0196, 0.0118, 0.0039, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0118, 0.0039, 0.0000, ..., 0.0039, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0118, ..., 0.1373, 0.0902, 0.0627],\n",
" [0.0157, 0.0118, 0.0039, ..., 0.1176, 0.0784, 0.0510],\n",
" [0.0196, 0.0157, 0.0039, ..., 0.1059, 0.0745, 0.0549]],\n",
"\n",
" [[0.0314, 0.0196, 0.0118, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0157, 0.0078, 0.0039, ..., 0.0078, 0.0078, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0667, 0.0745, 0.0745],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0588, 0.0745, 0.0784],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0471, 0.0824, 0.0902]]]), TensorImage([[[0.0353, 0.0275, 0.0157, ..., 0.0275, 0.0314, 0.0353],\n",
" [0.0275, 0.0196, 0.0118, ..., 0.0196, 0.0196, 0.0235],\n",
" [0.0235, 0.0196, 0.0118, ..., 0.0118, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0314, 0.0275, 0.0235, ..., 0.0275, 0.0235, 0.0196],\n",
" [0.0275, 0.0235, 0.0196, ..., 0.0235, 0.0157, 0.0157],\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0235, 0.0078, 0.0039]],\n",
"\n",
" [[0.0275, 0.0196, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0196, 0.0118, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0157, 0.0118, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0196, 0.0157, 0.0196],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0157, 0.0078, 0.0078],\n",
" [0.0118, 0.0118, 0.0078, ..., 0.0078, 0.0000, 0.0000]],\n",
"\n",
" [[0.0314, 0.0235, 0.0118, ..., 0.0118, 0.0235, 0.0275],\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0118, 0.0196, 0.0235],\n",
" [0.0196, 0.0157, 0.0078, ..., 0.0078, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0275, 0.0235, 0.0196, ..., 0.0235, 0.0196, 0.0196],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0196, 0.0118, 0.0118],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0118, 0.0039, 0.0000]]]), 0.3439539999999983), (TensorImage([[[0.1255, 0.1216, 0.1176, ..., 0.0000, 0.0000, 0.0196],\n",
" [0.0941, 0.0941, 0.0941, ..., 0.0078, 0.0235, 0.0471],\n",
" [0.0627, 0.0627, 0.0667, ..., 0.0157, 0.0314, 0.0549],\n",
" ...,\n",
" [0.0275, 0.0353, 0.0392, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0235, 0.0275, 0.0353, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0000, 0.0000, 0.0039]],\n",
"\n",
" [[0.0745, 0.0706, 0.0667, ..., 0.0118, 0.0196, 0.0431],\n",
" [0.0431, 0.0431, 0.0431, ..., 0.0314, 0.0471, 0.0706],\n",
" [0.0235, 0.0235, 0.0275, ..., 0.0392, 0.0549, 0.0784],\n",
" ...,\n",
" [0.0353, 0.0353, 0.0353, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0314, 0.0275, 0.0314, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0235, 0.0196, 0.0235, ..., 0.0000, 0.0000, 0.0039]],\n",
"\n",
" [[0.0392, 0.0353, 0.0314, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0000, 0.0000, 0.0235],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0078, 0.0314],\n",
" ...,\n",
" [0.0235, 0.0275, 0.0275, ..., 0.0078, 0.0039, 0.0000],\n",
" [0.0196, 0.0196, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0000, 0.0000, 0.0000]]]), TensorImage([[[0.0510, 0.0314, 0.0157, ..., 0.0353, 0.0314, 0.0314],\n",
" [0.0706, 0.0471, 0.0275, ..., 0.0314, 0.0314, 0.0314],\n",
" [0.0588, 0.0549, 0.0510, ..., 0.0275, 0.0275, 0.0275],\n",
" ...,\n",
" [0.0196, 0.0118, 0.0078, ..., 0.0078, 0.0000, 0.0000],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0196, 0.0000, 0.0000, ..., 0.0353, 0.0314, 0.0314],\n",
" [0.0392, 0.0275, 0.0157, ..., 0.0314, 0.0314, 0.0314],\n",
" [0.0392, 0.0392, 0.0392, ..., 0.0275, 0.0275, 0.0275],\n",
" ...,\n",
" [0.0431, 0.0353, 0.0235, ..., 0.0549, 0.0392, 0.0471],\n",
" [0.0314, 0.0275, 0.0235, ..., 0.0314, 0.0235, 0.0314],\n",
" [0.0157, 0.0157, 0.0235, ..., 0.0235, 0.0235, 0.0392]],\n",
"\n",
" [[0.0078, 0.0000, 0.0000, ..., 0.0353, 0.0314, 0.0314],\n",
" [0.0314, 0.0118, 0.0000, ..., 0.0314, 0.0314, 0.0314],\n",
" [0.0275, 0.0275, 0.0196, ..., 0.0275, 0.0275, 0.0275],\n",
" ...,\n",
" [0.0431, 0.0353, 0.0275, ..., 0.0549, 0.0392, 0.0471],\n",
" [0.0314, 0.0275, 0.0235, ..., 0.0275, 0.0157, 0.0235],\n",
" [0.0157, 0.0157, 0.0235, ..., 0.0196, 0.0196, 0.0353]]]), -0.09566599999999958), (TensorImage([[[0.0157, 0.0157, 0.0196, ..., 0.0196, 0.0118, 0.0039],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0314, 0.0235, 0.0118],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0392, 0.0314, 0.0196],\n",
" ...,\n",
" [0.0314, 0.0196, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0275, 0.0157, 0.0039, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0196, 0.0078, 0.0039, ..., 0.0118, 0.0118, 0.0118]],\n",
"\n",
" [[0.0078, 0.0078, 0.0118, ..., 0.0196, 0.0118, 0.0039],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0314, 0.0235, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0392, 0.0314, 0.0196],\n",
" ...,\n",
" [0.0235, 0.0118, 0.0000, ..., 0.0039, 0.0118, 0.0118],\n",
" [0.0196, 0.0078, 0.0000, ..., 0.0078, 0.0157, 0.0157],\n",
" [0.0118, 0.0000, 0.0000, ..., 0.0118, 0.0196, 0.0196]],\n",
"\n",
" [[0.0118, 0.0118, 0.0157, ..., 0.0118, 0.0039, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0235, 0.0157, 0.0039],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0314, 0.0235, 0.0118],\n",
" ...,\n",
" [0.0275, 0.0157, 0.0039, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0235, 0.0118, 0.0000, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0157, 0.0039, 0.0000, ..., 0.0039, 0.0078, 0.0078]]]), TensorImage([[[0.0157, 0.0157, 0.0157, ..., 0.0353, 0.0392, 0.0431],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0314, 0.0353, 0.0392],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0235, 0.0275, 0.0353],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0039, 0.0118, 0.0235, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0118, 0.0235, 0.0392, ..., 0.0196, 0.0275, 0.0314]],\n",
"\n",
" [[0.0157, 0.0157, 0.0157, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0000, 0.0039, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0039, 0.0157, 0.0314, ..., 0.0118, 0.0196, 0.0235]],\n",
"\n",
" [[0.0157, 0.0157, 0.0157, ..., 0.0196, 0.0235, 0.0275],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0078, 0.0118, 0.0196],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0000, 0.0078, 0.0196, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0078, 0.0196, 0.0353, ..., 0.0157, 0.0235, 0.0275]]]), 0.12284999999999968), (TensorImage([[[0.0196, 0.0157, 0.0118, ..., 0.0196, 0.0196, 0.0196],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0157, 0.0196, 0.0196],\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0157, 0.0157, 0.0196],\n",
" ...,\n",
" [0.0392, 0.0353, 0.0353, ..., 0.0667, 0.0588, 0.0588],\n",
" [0.0431, 0.0392, 0.0392, ..., 0.0706, 0.0588, 0.0549],\n",
" [0.0471, 0.0431, 0.0431, ..., 0.0824, 0.0706, 0.0549]],\n",
"\n",
" [[0.0275, 0.0235, 0.0118, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0157, 0.0157, 0.0118, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0078, 0.0118, 0.0078, ..., 0.0078, 0.0078, 0.0118],\n",
" ...,\n",
" [0.0078, 0.0157, 0.0157, ..., 0.0314, 0.0353, 0.0353],\n",
" [0.0157, 0.0196, 0.0196, ..., 0.0353, 0.0353, 0.0314],\n",
" [0.0196, 0.0235, 0.0235, ..., 0.0392, 0.0353, 0.0314]],\n",
"\n",
" [[0.0235, 0.0196, 0.0118, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0118, 0.0118, 0.0157],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0510, 0.0510, 0.0510],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0549, 0.0510, 0.0471],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0627, 0.0549, 0.0471]]]), TensorImage([[[0.0314, 0.0275, 0.0235, ..., 0.0196, 0.0275, 0.0314],\n",
" [0.0235, 0.0235, 0.0196, ..., 0.0196, 0.0275, 0.0314],\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0196, 0.0235, 0.0275],\n",
" ...,\n",
" [0.0078, 0.0039, 0.0039, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0157, 0.0196, 0.0196]],\n",
"\n",
" [[0.0196, 0.0157, 0.0157, ..., 0.0118, 0.0196, 0.0235],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0118, 0.0196, 0.0235],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0118, 0.0157, 0.0196],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0078, 0.0118, 0.0118]],\n",
"\n",
" [[0.0471, 0.0431, 0.0353, ..., 0.0157, 0.0235, 0.0275],\n",
" [0.0392, 0.0392, 0.0314, ..., 0.0157, 0.0235, 0.0275],\n",
" [0.0275, 0.0275, 0.0275, ..., 0.0157, 0.0196, 0.0235],\n",
" ...,\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0118, 0.0157, 0.0196, ..., 0.0118, 0.0157, 0.0157]]]), -0.043271000000000726), (TensorImage([[[0.0196, 0.0196, 0.0157, ..., 0.0196, 0.0235, 0.0275],\n",
" [0.0275, 0.0275, 0.0196, ..., 0.0157, 0.0196, 0.0196],\n",
" [0.0275, 0.0275, 0.0196, ..., 0.0078, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0275, 0.0392, 0.0471, ..., 0.1137, 0.1216, 0.1137],\n",
" [0.0275, 0.0431, 0.0510, ..., 0.1255, 0.1294, 0.1216],\n",
" [0.0275, 0.0431, 0.0510, ..., 0.1294, 0.1294, 0.1176]],\n",
"\n",
" [[0.0000, 0.0000, 0.0078, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0118, 0.0157, 0.0157],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0039, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0039, 0.0157, 0.0235, ..., 0.0549, 0.0510, 0.0431],\n",
" [0.0039, 0.0196, 0.0275, ..., 0.0549, 0.0510, 0.0431],\n",
" [0.0039, 0.0196, 0.0275, ..., 0.0510, 0.0510, 0.0392]],\n",
"\n",
" [[0.0157, 0.0157, 0.0196, ..., 0.0078, 0.0118, 0.0157],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0000, 0.0000, 0.0000],\n",
" ...,\n",
" [0.0118, 0.0235, 0.0314, ..., 0.0431, 0.0431, 0.0353],\n",
" [0.0118, 0.0275, 0.0353, ..., 0.0471, 0.0471, 0.0392],\n",
" [0.0118, 0.0275, 0.0353, ..., 0.0471, 0.0471, 0.0353]]]), TensorImage([[[0.0275, 0.0549, 0.0784, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0549, 0.0667, 0.0784, ..., 0.0275, 0.0314, 0.0392],\n",
" [0.0745, 0.0706, 0.0667, ..., 0.0353, 0.0471, 0.0549],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0000]],\n",
"\n",
" [[0.0000, 0.0157, 0.0392, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0157, 0.0275, 0.0392, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0353, 0.0314, 0.0275, ..., 0.0000, 0.0078, 0.0157],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0078, 0.0078, 0.0039, ..., 0.0078, 0.0078, 0.0078]],\n",
"\n",
" [[0.0000, 0.0118, 0.0431, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0118, 0.0235, 0.0431, ..., 0.0196, 0.0235, 0.0314],\n",
" [0.0314, 0.0275, 0.0314, ..., 0.0275, 0.0392, 0.0471],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0078, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0157, 0.0157, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0235, 0.0235, 0.0118, ..., 0.0000, 0.0000, 0.0000]]]), -0.048775999999998376), (TensorImage([[[0.0471, 0.0510, 0.0471, ..., 0.0000, 0.0118, 0.0235],\n",
" [0.0471, 0.0471, 0.0431, ..., 0.0000, 0.0118, 0.0275],\n",
" [0.0392, 0.0392, 0.0353, ..., 0.0000, 0.0118, 0.0392],\n",
" ...,\n",
" [0.0157, 0.0118, 0.0157, ..., 0.0039, 0.0078, 0.0118],\n",
" [0.0118, 0.0196, 0.0275, ..., 0.0039, 0.0078, 0.0196],\n",
" [0.0157, 0.0275, 0.0392, ..., 0.0039, 0.0118, 0.0235]],\n",
"\n",
" [[0.0314, 0.0353, 0.0314, ..., 0.0118, 0.0235, 0.0431],\n",
" [0.0314, 0.0314, 0.0275, ..., 0.0078, 0.0235, 0.0471],\n",
" [0.0235, 0.0235, 0.0196, ..., 0.0078, 0.0235, 0.0510],\n",
" ...,\n",
" [0.0118, 0.0078, 0.0118, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0078, 0.0157, 0.0235, ..., 0.0000, 0.0000, 0.0118],\n",
" [0.0118, 0.0235, 0.0353, ..., 0.0000, 0.0039, 0.0157]],\n",
"\n",
" [[0.0196, 0.0235, 0.0275, ..., 0.0000, 0.0000, 0.0157],\n",
" [0.0196, 0.0196, 0.0235, ..., 0.0000, 0.0000, 0.0196],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0000, 0.0000, 0.0235],\n",
" ...,\n",
" [0.0353, 0.0314, 0.0353, ..., 0.0000, 0.0039, 0.0078],\n",
" [0.0314, 0.0392, 0.0471, ..., 0.0000, 0.0039, 0.0157],\n",
" [0.0353, 0.0471, 0.0588, ..., 0.0000, 0.0078, 0.0196]]]), TensorImage([[[0.0902, 0.0745, 0.0784, ..., 0.0510, 0.0510, 0.0471],\n",
" [0.0902, 0.0824, 0.0745, ..., 0.0471, 0.0471, 0.0471],\n",
" [0.1059, 0.0863, 0.0706, ..., 0.0431, 0.0431, 0.0392],\n",
" ...,\n",
" [0.0667, 0.0588, 0.0510, ..., 0.0000, 0.0039, 0.0118],\n",
" [0.0667, 0.0588, 0.0471, ..., 0.0000, 0.0078, 0.0196],\n",
" [0.0627, 0.0549, 0.0431, ..., 0.0078, 0.0157, 0.0275]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0157, 0.0118],\n",
" [0.0039, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0118],\n",
" [0.0275, 0.0078, 0.0000, ..., 0.0078, 0.0078, 0.0039],\n",
" ...,\n",
" [0.0353, 0.0275, 0.0196, ..., 0.0000, 0.0039, 0.0118],\n",
" [0.0275, 0.0196, 0.0078, ..., 0.0000, 0.0078, 0.0196],\n",
" [0.0235, 0.0157, 0.0039, ..., 0.0078, 0.0157, 0.0275]],\n",
"\n",
" [[0.0039, 0.0000, 0.0078, ..., 0.0196, 0.0196, 0.0157],\n",
" [0.0118, 0.0039, 0.0039, ..., 0.0157, 0.0157, 0.0157],\n",
" [0.0314, 0.0118, 0.0039, ..., 0.0118, 0.0118, 0.0078],\n",
" ...,\n",
" [0.0235, 0.0157, 0.0078, ..., 0.0000, 0.0039, 0.0118],\n",
" [0.0196, 0.0118, 0.0000, ..., 0.0000, 0.0078, 0.0196],\n",
" [0.0157, 0.0078, 0.0000, ..., 0.0078, 0.0157, 0.0275]]]), 0.1506330000000009), (TensorImage([[[0.0118, 0.0196, 0.0235, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0157, 0.0235, 0.0235, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0157, 0.0196, 0.0235],\n",
" ...,\n",
" [0.0157, 0.0157, 0.0157, ..., 0.0078, 0.0078, 0.0078],\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0157, 0.0157, 0.0196],\n",
" [0.0235, 0.0196, 0.0157, ..., 0.0235, 0.0275, 0.0275]],\n",
"\n",
" [[0.0118, 0.0196, 0.0235, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0157, 0.0235, 0.0235, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0157, 0.0196, 0.0235],\n",
" ...,\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0039, 0.0039],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0157, 0.0118, 0.0078, ..., 0.0196, 0.0235, 0.0235]],\n",
"\n",
" [[0.0118, 0.0196, 0.0235, ..., 0.0118, 0.0157, 0.0196],\n",
" [0.0157, 0.0235, 0.0235, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0235, 0.0235, 0.0235, ..., 0.0157, 0.0196, 0.0235],\n",
" ...,\n",
" [0.0118, 0.0118, 0.0118, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0078, 0.0078, 0.0078, ..., 0.0039, 0.0039, 0.0078],\n",
" [0.0196, 0.0157, 0.0118, ..., 0.0118, 0.0157, 0.0157]]]), TensorImage([[[0.0118, 0.0157, 0.0196, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0118, 0.0157, 0.0157, ..., 0.0078, 0.0118, 0.0118],\n",
" [0.0118, 0.0118, 0.0157, ..., 0.0078, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0157, 0.0235, 0.0235],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0275, 0.0353, 0.0392],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0353, 0.0471, 0.0510]],\n",
"\n",
" [[0.0039, 0.0078, 0.0118, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0000, 0.0039, 0.0039],\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0000, 0.0039, 0.0039],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0235, 0.0275]],\n",
"\n",
" [[0.0078, 0.0118, 0.0157, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0078, 0.0118, 0.0118, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0078, 0.0078, 0.0118, ..., 0.0039, 0.0078, 0.0078],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0039, 0.0078, 0.0078],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0157, 0.0196, 0.0235],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0235, 0.0314, 0.0353]]]), 0.04464899999999972)]\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"ipdb> x[0].size\n",
"*** AttributeError: 'tuple' object has no attribute 'size'\n",
"ipdb> x[0]\n",
"(TensorImage([[[0.0000, 0.0039, 0.0196, ..., 0.0471, 0.0549, 0.0627],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0431, 0.0510, 0.0588],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0353, 0.0431, 0.0471],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0196, ..., 0.0157, 0.0039, 0.0039],\n",
" [0.0235, 0.0235, 0.0275, ..., 0.0157, 0.0078, 0.0118],\n",
" [0.0275, 0.0275, 0.0314, ..., 0.0157, 0.0118, 0.0196]],\n",
"\n",
" [[0.0000, 0.0039, 0.0196, ..., 0.0118, 0.0118, 0.0157],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0078, 0.0078, 0.0118],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0000, 0.0000, 0.0039],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0039, 0.0039],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0078, 0.0118],\n",
" [0.0000, 0.0000, 0.0039, ..., 0.0157, 0.0118, 0.0196]],\n",
"\n",
" [[0.0000, 0.0039, 0.0196, ..., 0.0235, 0.0275, 0.0314],\n",
" [0.0000, 0.0039, 0.0157, ..., 0.0196, 0.0235, 0.0275],\n",
" [0.0039, 0.0078, 0.0078, ..., 0.0118, 0.0157, 0.0196],\n",
" ...,\n",
" [0.0235, 0.0196, 0.0196, ..., 0.0157, 0.0039, 0.0039],\n",
" [0.0275, 0.0275, 0.0275, ..., 0.0157, 0.0078, 0.0118],\n",
" [0.0314, 0.0314, 0.0314, ..., 0.0157, 0.0118, 0.0196]]]), TensorImage([[[0.0471, 0.0510, 0.0510, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0471, 0.0510, 0.0471, ..., 0.0275, 0.0235, 0.0196],\n",
" [0.0549, 0.0510, 0.0549, ..., 0.0196, 0.0196, 0.0196],\n",
" ...,\n",
" [0.0039, 0.0039, 0.0078, ..., 0.0118, 0.0157, 0.0235],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0118, 0.0196, 0.0275],\n",
" [0.0078, 0.0039, 0.0000, ..., 0.0157, 0.0235, 0.0314]],\n",
"\n",
" [[0.0000, 0.0000, 0.0000, ..., 0.0157, 0.0118, 0.0078],\n",
" [0.0000, 0.0000, 0.0000, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0000, 0.0039, 0.0078, ..., 0.0118, 0.0118, 0.0118],\n",
" ...,\n",
" [0.0000, 0.0000, 0.0078, ..., 0.0000, 0.0000, 0.0000],\n",
" [0.0039, 0.0039, 0.0039, ..., 0.0000, 0.0000, 0.0039],\n",
" [0.0118, 0.0078, 0.0039, ..., 0.0000, 0.0000, 0.0078]],\n",
"\n",
" [[0.0078, 0.0118, 0.0118, ..., 0.0196, 0.0157, 0.0118],\n",
" [0.0078, 0.0118, 0.0157, ..., 0.0235, 0.0196, 0.0157],\n",
" [0.0157, 0.0196, 0.0235, ..., 0.0157, 0.0157, 0.0157],\n",
" ...,\n",
" [0.0196, 0.0196, 0.0157, ..., 0.0196, 0.0235, 0.0392],\n",
" [0.0196, 0.0196, 0.0118, ..., 0.0196, 0.0353, 0.0431],\n",
" [0.0275, 0.0235, 0.0118, ..., 0.0235, 0.0392, 0.0549]]]), -0.06884900000000016)\n",
"ipdb> q\n"
]
}
],
"source": [
"%debug"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "fastai2",
"language": "python",
"name": "fastai2"
},
"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.7.7"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment