{ "cells": [ { "cell_type": "code", "execution_count": 194, "id": "62c170c5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] } ], "source": [ "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "code", "execution_count": 195, "id": "9dc62fbc", "metadata": {}, "outputs": [], "source": [ "from data_utils import get_tokenizer, get_train_dataset\n", "# from model_utils import get_model\n", "from generate import force_args\n", "from generate import generate_seq\n", "\n", "import math\n", "import matplotlib.pyplot as plt\n", "\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "\n", "from model_utils import SSMTransformer" ] }, { "cell_type": "code", "execution_count": 196, "id": "60f94b8e", "metadata": {}, "outputs": [], "source": [ "class Args:\n", " def __init__(self):\n", " self.model = \"hybrid\"\n", " self.num_vocab = 26\n", " self.train_task = \"var-copy\"\n", " self.num_numbers = 5\n", " self.nope = False\n", " self.layers = ['SSM', 'TF']\n", " self.hidden_size = 12\n", " self.heads = 1\n", " self.state_dim = 1\n", " self.sequence_length = 100\n", "\n", " self.pack_examples = False\n", " self.min_train_length = 97\n", " self.max_train_length = 98\n", " self.min_test_length = 97\n", " self.max_test_length = 98\n", "\n", " self.num_examples = 1000\n", "\n", " self.train_batch_size = 4\n", " self.test_batch_size = 4\n", "\n", " self.p = 0.2\n", "\n", "args = Args()\n", "force_args(args)\n", "\n", "tokenizer = get_tokenizer(args)\n", "train_dataset = get_train_dataset(args, tokenizer) " ] }, { "cell_type": "code", "execution_count": 197, "id": "1c70350b", "metadata": {}, "outputs": [], "source": [ "batch = 2\n", "seq_len = 100\n", "size_vocab = 34\n", "\n", "l = max(int(math.log2(seq_len)), int(math.log2(size_vocab))) + 2\n", "d_model = 2 * l + 2 + 2 * l + 8\n", "\n", "# x = torch.randn(batch, seq_len, d_model)\n", "\n", "model = SSMTransformer(\n", " num_vocab=34,\n", " d_model=d_model,\n", " d_state=1,\n", " n_heads=1,\n", " d_ff=-1,\n", " layers=['SSM', 'TF'],\n", ")\n", "\n", "# y = model(x)\n", "# print(y.shape) # (2, 64, 128)\n" ] }, { "cell_type": "code", "execution_count": 198, "id": "232bd737", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "SSMTransformer(\n", " (embedding): Embedding(34, 42)\n", " (layers): ModuleList(\n", " (0): SSMTransformerBlock(\n", " (layer): SimpleSSM(\n", " (Wo): Linear(in_features=42, out_features=42, bias=False)\n", " )\n", " )\n", " (1): SSMTransformerBlock(\n", " (layer): CausalSelfAttention(\n", " (qkv): Linear(in_features=42, out_features=126, bias=False)\n", " (out): Linear(in_features=42, out_features=42, bias=False)\n", " )\n", " )\n", " )\n", " (lm_head): Linear(in_features=42, out_features=34, bias=True)\n", ")" ] }, "execution_count": 198, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model" ] }, { "cell_type": "code", "execution_count": 199, "id": "9e0d58a8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "emb = torch.zeros((34, d_model))\n", "for i in range(34):\n", " t = i + 1\n", " if tokenizer.TO_STR[i][0] == \"#\":\n", " t = int(tokenizer.TO_STR[i][1:]) #+ 1\n", "\n", " # for j in range(l-2, -1, -1):\n", " for j in range(l-1, -1, -1):\n", " # emb[i,j] = t % 2 # 0/1 binary\n", " emb[i,j] = 2*(t % 2) - 1 # -1/1 binary encoding\n", " t //= 2\n", "\n", " if tokenizer.TO_STR[i][0] == \"#\": # If the token is a number token\n", " emb[i,l:2*l] = emb[i,:l]\n", "\n", " emb[i,l] = 1 # Indicator for being a number token\n", " emb[i,2*l] = 1 # Indicator for being a number token\n", " # else:\n", " # emb[i,l] = -1 # Indicator for being a number token\n", " # emb[i,2*l] = -1 # Indicator for being a number token\n", "\n", "emb[:,2*l+1] = 1 # For bias terms\n", "\n", "model.embedding.weight.data.copy_(emb)\n", "print()" ] }, { "cell_type": "code", "execution_count": 200, "id": "3f928dce", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "pos_emb = torch.zeros_like(model.pos_emb.data)\n", "for i in range(seq_len):\n", " # t = i + 1\n", " # t = seq_len - i\n", " t = seq_len - i - 1\n", " for j in range(-1, -l-1, -1):\n", " # pos_emb[0,i,j] = t % 2 # 0/1 binary\n", " pos_emb[0,i,j] = 2*(t % 2) - 1 # -1/1 binary encoding\n", " t //= 2\n", "\n", "model.pos_emb.data.copy_(pos_emb)\n", "print()" ] }, { "cell_type": "code", "execution_count": 201, "id": "b991bd89", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "A = torch.zeros_like(model.layers[0].layer.A.data)\n", "# A += 10 # M = 10\n", "# A += 1\n", "\n", "model.layers[0].layer.A.data.copy_(A)\n", "print()" ] }, { "cell_type": "code", "execution_count": 202, "id": "ddc28110", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "B = torch.zeros_like(model.layers[0].layer.B.data)\n", "B[2*l+1] = 1 # Identity\n", "\n", "model.layers[0].layer.B.data.copy_(B)\n", "print()" ] }, { "cell_type": "code", "execution_count": 203, "id": "79ed41af", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "C = torch.zeros_like(model.layers[0].layer.C.data)\n", "C[2*l+1] = 1 # Identity\n", "\n", "model.layers[0].layer.C.data.copy_(C)\n", "print()" ] }, { "cell_type": "code", "execution_count": 204, "id": "1d9a5b92", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "Delta = torch.zeros_like(model.layers[0].layer.Delta.data)\n", "Delta[2*l] = 1 # Position of the number token\n", "\n", "model.layers[0].layer.Delta.data.copy_(Delta)\n", "print()" ] }, { "cell_type": "code", "execution_count": 205, "id": "2191cbc5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "Wo = torch.zeros_like(model.layers[0].layer.Wo.weight.data)\n", "# Wo = torch.eye(model.layers[0].ssm.Wo.weight.data.shape[0])\n", "# Wo[2*l+2:3*l+2, :l] = torch.eye(l) \n", "Wo[2*l+2:3*l+2, l:2*l] = torch.eye(l) \n", "# Wo[2*l+2:3*l+2, -l:] = torch.eye(l) \n", "\n", "model.layers[0].layer.Wo.weight.data.copy_(Wo)\n", "print()" ] }, { "cell_type": "code", "execution_count": 206, "id": "829db9d3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "Wq = torch.zeros((d_model, d_model))\n", "Wk = torch.zeros((d_model, d_model))\n", "# Wv = torch.zeros((d_model, d_model))\n", "\n", "Wq[:l, 2*l+2:3*l+2] = 50 * torch.eye(l)\n", "# Wq[:l, 2*l+2:3*l+2] = 10 * torch.eye(l)\n", "Wq[0, 2*l+2] = 0 # Ignore the indicator\n", "# Wq[2*l+2:3*l+2, :l] = 10 * torch.eye(l)\n", "Wk[:l, -l:] = torch.eye(l)\n", "Wv = torch.eye(d_model)\n", "\n", "model.layers[1].layer.qkv.weight.data.copy_(torch.concat([Wq, Wk, Wv], dim=0))\n", "print()" ] }, { "cell_type": "code", "execution_count": 207, "id": "d2d1e4b0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "out = torch.zeros_like(model.layers[1].layer.out.weight.data)\n", "# Wo = torch.eye(model.layers[0].ssm.Wo.weight.data.shape[0])\n", "# out[3*l+2:4*l+2, :l] = torch.eye(l) \n", "out[3*l+2:4*l+2, :l] = torch.eye(l) \n", "\n", "model.layers[1].layer.out.weight.data.copy_(out)\n", "print()" ] }, { "cell_type": "code", "execution_count": 208, "id": "345188a4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "lm_head = torch.zeros_like(model.lm_head.weight.data)\n", "lm_head[:,3*l+2:4*l+2] = model.embedding.weight.data[:,:l]\n", "\n", "model.lm_head.weight.data.copy_(lm_head)\n", "print()" ] }, { "cell_type": "code", "execution_count": 209, "id": "d023b30d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'V15 V19 V22 #7 #6 V18 #9 V2 #8 V25 V19 #8 V19 V16 V22 V4 V8 V3 V19 V12 #8 V19 V7 V23 #5 V4 V6 V23 V15 V6 #6 V11 #9 V23 V20 V12 V7 V5 #6 V18 V7 V13 V4 V6 #5 V10 V9 V8 #9 V5 V7 V24 V4 V16 V19 #5 V7 V18 V15 V12 V2 V4 V12 #8 #7 V1 #9 V8 V6 V15 V0 V17 #9 V20 V24 V3 V3 #5 #9 V0 V0 #9 V13 V5 V0 V21 #8 V25 #6 V7 V13 V13 V22 V23 V24 V16 #8 V10 V24 #7'" ] }, "execution_count": 209, "metadata": {}, "output_type": "execute_result" } ], "source": [ "first_data = train_dataset[0]\n", "x = first_data['input_ids']\n", "y = first_data['output_ids']\n", "\n", "' '.join(first_data['input'][0])" ] }, { "cell_type": "code", "execution_count": 210, "id": "7278ad14", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([[15, 19, 22, 28, 27, 18, 30, 2, 29, 25, 19, 29, 19, 16, 22, 4, 8, 3,\n", " 19, 12, 29, 19, 7, 23, 26, 4, 6, 23, 15, 6, 27, 11, 30, 23, 20, 12,\n", " 7, 5, 27, 18, 7, 13, 4, 6, 26, 10, 9, 8, 30, 5, 7, 24, 4, 16,\n", " 19, 26, 7, 18, 15, 12, 2, 4, 12, 29, 28, 1, 30, 8, 6, 15, 0, 17,\n", " 30, 20, 24, 3, 3, 26, 30, 0, 0, 30, 13, 5, 0, 21, 29, 25, 27, 7,\n", " 13, 13, 22, 23, 24, 16, 29, 10, 24, 28]])" ] }, "execution_count": 210, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x, y = x[:1], y[:1]\n", "x" ] }, { "cell_type": "code", "execution_count": 211, "id": "2f365ad7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([[33, 33, 33, 33, 33, 33, 33, 33, 15, 19, 22, 28, 27, 18, 30, 2, 29, 25,\n", " 19, 29, 19, 16, 22, 4, 12, 29, 19, 7, 23, 26, 26, 4, 23, 26, 4, 6,\n", " 23, 15, 30, 23, 20, 12, 7, 5, 18, 7, 13, 4, 18, 7, 13, 4, 6, 26,\n", " 10, 7, 24, 4, 16, 19, 26, 7, 18, 26, 18, 15, 18, 15, 12, 2, 4, 12,\n", " 29, 28, 1, 30, 8, 30, 15, 0, 17, 30, 20, 24, 3, 3, 30, 0, 13, 5,\n", " 0, 21, 29, 25, 27, 7, 27, 7, 13, 22]])" ] }, "execution_count": 211, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y" ] }, { "cell_type": "code", "execution_count": 212, "id": "55d55593", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([[15, 15, 19, 15, 19, 18, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7,\n", " 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 15, 15, 6, 6, 6, 6, 6, 6,\n", " 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,\n", " 6, 5, 5, 5, 5, 5, 5, 5, 26, 7, 2, 2, 2, 2, 2, 2, 2, 2,\n", " 2, 2, 16, 16, 16, 26, 16, 16, 16, 16, 16, 16, 16, 16, 11, 7, 26, 26,\n", " 26, 26, 6, 23, 23, 23, 13, 13, 13, 22]])" ] }, "execution_count": 212, "metadata": {}, "output_type": "execute_result" } ], "source": [ "torch.argmax(model(x), dim=-1)" ] }, { "cell_type": "code", "execution_count": 213, "id": "ca772c02", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmYAAAEwCAYAAAAdE739AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKKpJREFUeJzt3Xt4VNW9//HPJOQCJDMQMIkoAURorKDYcDGFikIg5RetShA4ogbqqbQGyuU5XqIVjlYaBI83RKzWA6dCANNCFRQ4GLmcKtdYLIiNVKCkQoK3ZAKYBDLr94eHOY5JgAmTzJrh/XqeeR6y95q1v3uvMPk8e/ba22GMMQIAAEDQRQS7AAAAAHyDYAYAAGAJghkAAIAlCGYAAACWIJgBAABYgmAGAABgCYIZAACAJQhmAAAAliCYAQAAWIJgBlzgxo8fr65du7b4dg8ePCiHw6FFixa1+LYBwFYEMyDE7N69W6NGjVKXLl0UGxurSy65RMOGDdO8efOCXVqDCgoK9MwzzwS7jHrcbrceffRRXX311YqLi1Pr1q3Vq1cvPfDAAzp8+HCwy2tU165ddeONNwa7DK+33npL//7v/x7sMoCw4eBZmUDoeO+993TDDTcoJSVFOTk5Sk5OVmlpqbZu3apPPvlEf//73/3uc/z48dq4caMOHjwY+IIl3XjjjdqzZ0+9/o0xqqmpUVRUlCIjI5tl243Zv3+/MjIydOjQId12220aNGiQoqOj9de//lVLly5VQkKCPv744xat6Vx17dpVvXr10urVq4NdiiRp0qRJmj9/vvhTAgRGq2AXAODczZo1Sy6XSzt27FC7du181h09ejQ4RTWRw+FQbGxsi2/31KlTGjlypMrLy7Vx40YNGjTIZ/2sWbP0xBNPtHhdACDxVSYQUj755BNdeeWV9UKZJCUmJtZbtnjxYqWlpal169ZKSEjQ2LFjVVpaetbteDwePfPMM7ryyisVGxurpKQkTZw4UV999VW9tmvWrNHgwYMVHx8vp9Opfv36qaCgQJJ0/fXX680339Q//vEPORwOORwO7/Vs373G7Mknn5TD4dA//vGPetvIy8tTdHS0z/a3bdumH//4x3K5XGrTpo0GDx6sd99996z79sc//lEffPCBHn744XqhTJKcTqdmzZrls6ywsNB7HDt27Kg77rhDn376qU+b8ePHKy4uTvv371dmZqbatm2rTp066bHHHvOeTTLGqGvXrrr55pvrbbe6uloul0sTJ0486z582+nj+OSTT+qll15S9+7dFRMTo379+mnHjh1+1yhJGzdulMPh0MaNGxvc1ukxGz9+vObPny9J3vF1OBx+1Q/AF8EMCCFdunRRcXGx9uzZc9a2s2bN0l133aUePXroqaee0tSpU1VUVKTrrrtOFRUVZ3zvxIkTdd9992ngwIF69tlnNWHCBC1ZskSZmZk6efKkt92iRYuUlZWlL7/8Unl5eZo9e7b69OmjtWvXSpIefvhh9enTRx07dtSrr76qV199tdHrzUaPHi2Hw6HXXnut3rrXXntNw4cPV/v27SVJ77zzjq677jq53W7NnDlTv/nNb1RRUaEhQ4Zo+/btZ9y3N954Q5J05513nrHdt/dx9OjRioyMVH5+vn72s59pxYoVGjRoUL3jWFdXpx//+MdKSkrSnDlzlJaWppkzZ2rmzJmSvgkvd9xxh9asWaMvv/zS572rVq2S2+3WHXfccU51fVdBQYHmzp2riRMn6vHHH9fBgwc1cuRIn/E6lxr9MXHiRA0bNkySvOP76quvNql+AP/LAAgZ//3f/20iIyNNZGSkSU9PN/fff79Zt26dqa2t9Wl38OBBExkZaWbNmuWzfPfu3aZVq1Y+y3NyckyXLl28P//P//yPkWSWLFni8961a9f6LK+oqDDx8fFmwIAB5uuvv/Zp6/F4vP/Oysry6f+0AwcOGElm4cKF3mXp6ekmLS3Np9327duNJPP73//e23ePHj1MZmamz3ZOnDhhunXrZoYNG1ZvW992zTXXGJfLdcY2p9XW1prExETTq1cvn31cvXq1kWRmzJjhXZaTk2MkmcmTJ3uXeTwek5WVZaKjo81nn31mjDGmpKTESDILFizw2dZPfvIT07VrV599akiXLl1MVlaW9+fTx7FDhw7myy+/9C5//fXXjSSzatUqv2vcsGGDkWQ2bNjgs+2Gxiw3N9fwpwQIHM6YASFk2LBh2rJli37yk5/ogw8+0Jw5c5SZmalLLrnEeyZIklasWCGPx6PRo0fr888/976Sk5PVo0cPbdiwodFtFBYWyuVyadiwYT7vTUtLU1xcnPe969evV1VVlR588MF614o19eusMWPGqLi4WJ988ol32fLlyxUTE+P9+m/Xrl3at2+fbr/9dn3xxRfe+o4fP66hQ4dq8+bN8ng8jW7D7XYrPj7+nOrZuXOnjh49qnvvvddnH7OyspSamqo333yz3nsmTZrk/bfD4dCkSZNUW1urt99+W5LUs2dPDRgwQEuWLPG2+/LLL7VmzRqNGzfuvI7d6TOKkvSjH/1I0jcTHfytEUDwEMyAENOvXz+tWLFCX331lbZv3668vDxVVVVp1KhR2rt3ryRp3759MsaoR48euuiii3xeH3300RknCuzbt0+VlZVKTEys995jx45533s6PPXq1Stg+3bbbbcpIiJCy5cvl/TNNVmFhYUaMWKEnE6ntz5JysnJqVff7373O9XU1KiysrLRbTidTlVVVZ1TPaevd/ve975Xb11qamq96+EiIiJ02WWX+Szr2bOnJPnMSr3rrrv07rvvet9fWFiokydPnvPXqw1JSUnx+fl0SPvudYHnWiOA4GBWJhCioqOj1a9fP/Xr1089e/bUhAkTVFhYqJkzZ8rj8cjhcGjNmjUN3ooiLi6u0X49Ho8SExN9zuh820UXXRSwffiuTp066Uc/+pFee+01PfTQQ9q6dasOHTrkM0vy9NmwuXPnqk+fPg32c6b9S01N1V/+8heVlpaqc+fOAa3/XI0dO1bTpk3TkiVL9NBDD2nx4sXq27dvgwHwXDV2yxHThNtYNHbWrq6uzu++APiHYAaEgb59+0qSjhw5Iknq3r27jDHq1q2b92zIuerevbvefvttDRw4UK1btz5jO0nas2ePLr/88kbb+fvV3JgxY3TvvfeqpKREy5cvV5s2bXTTTTfV267T6VRGRoZffUvSTTfdpKVLl2rx4sXKy8s7Y9suXbpIkkpKSjRkyBCfdSUlJd71p3k8Hu3fv9/nmJ++H9q3n66QkJCgrKwsLVmyROPGjdO7777bYjfhPZcaT59t++7khoZmzDILEwgsvsoEQsiGDRsaPAPy1ltvSfq/r9xGjhypyMhIPfroo/XaG2P0xRdfNLqN0aNHq66uTr/+9a/rrTt16pT3j/Xw4cMVHx+v/Px8VVdX19vGaW3btj3jV4vflZ2drcjISC1dulSFhYW68cYb1bZtW+/6tLQ0de/eXU8++aSOHTtW7/2fffbZGfsfNWqUevfurVmzZmnLli311ldVVenhhx+W9E3gTUxM1IsvvqiamhpvmzVr1uijjz5SVlZWvfc///zz3n8bY/T8888rKipKQ4cO9Wl35513au/evbrvvvsUGRmpsWPHnrHuQDpbjV26dFFkZKQ2b97s874XXnihXl+nx+ZsM30BnBvOmAEhZPLkyTpx4oRuvfVWpaamqra2Vu+9956WL1+url27asKECZK+Oav0+OOPKy8vTwcPHtQtt9yi+Ph4HThwQCtXrtQ999yjf/u3f2twG4MHD9bEiROVn5+vXbt2afjw4YqKitK+fftUWFioZ599VqNGjZLT6dTTTz+tf/3Xf1W/fv10++23q3379vrggw904sQJ/dd//Zekb4LU8uXLNX36dPXr109xcXE+Z8C+KzExUTfccIOeeuopVVVVacyYMT7rIyIi9Lvf/U4jRozQlVdeqQkTJuiSSy7Rp59+qg0bNsjpdGrVqlWN9h8VFaUVK1YoIyND1113nUaPHq2BAwcqKipKH374oQoKCtS+fXvNmjVLUVFReuKJJzRhwgQNHjxY//Iv/6Ly8nI9++yz6tq1q6ZNm+bTd2xsrNauXaucnBwNGDBAa9as0ZtvvqmHHnqo3lfAWVlZ6tChg/cauobuQ9cczqVGl8ul2267TfPmzZPD4VD37t21evXqBq9NTEtLkyT98pe/VGZmZouHTCDsBGs6KAD/rVmzxvz0pz81qampJi4uzkRHR5vLL7/cTJ482ZSXl9dr/8c//tEMGjTItG3b1rRt29akpqaa3NxcU1JS4m3z3dtlnPbSSy+ZtLQ007p1axMfH2969+5t7r//fnP48GGfdm+88Yb54Q9/aFq3bm2cTqfp37+/Wbp0qXf9sWPHzO23327atWtnJHm31dCtF057+eWXjSQTHx9f71Ycp/3lL38xI0eONB06dDAxMTGmS5cuZvTo0aaoqOgcjqQxX331lZkxY4bp3bu3adOmjYmNjTW9evUyeXl55siRIz5tly9fbq655hoTExNjEhISzLhx48w///lPnzY5OTmmbdu25pNPPjHDhw83bdq0MUlJSWbmzJmmrq6uwRruvfdeI8kUFBScU83GNH67jLlz59ZrK8nMnDmzSTV+9tlnJjs727Rp08a0b9/eTJw40ezZs6femJ06dcpMnjzZXHTRRcbhcHDrDOA88axMAAiA8ePH6w9/+EODX682Ztq0aXrllVdUVlamNm3aNGN132hKjQBaFteYAUAQVFdXa/HixcrOzm6RUAYgNHCNGQC0oKNH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rd69e2vnzp3e9cYYzZgxQxdffLFat26tjIwM7du3L4gV49vq6ur0yCOPqFu3bmrdurW6d++uX//61z7PWGQMw5e1wWz58uWaPn26Zs6cqffff19XX321MjMzdfTo0WCXhgZs2rRJubm52rp1q9avX6+TJ09q+PDhOn78uLfNtGnTtGrVKhUWFmrTpk06fPiwRo4cGcSq0ZgdO3bot7/9ra666iqf5Yyh/b766isNHDhQUVFRWrNmjfbu3av/+I//UPv27b1t5syZo+eee04vvviitm3bprZt2yozM1PV1dVBrBynPfHEE1qwYIGef/55ffTRR3riiSc0Z84czZs3z9uGMQxjxlL9+/c3ubm53p/r6upMp06dTH5+fhCrwrk6evSokWQ2bdpkjDGmoqLCREVFmcLCQm+bjz76yEgyW7ZsCVaZaEBVVZXp0aOHWb9+vRk8eLCZMmWKMYYxDBUPPPCAGTRoUKPrPR6PSU5ONnPnzvUuq6ioMDExMWbp0qUtUSLOIisry/z0pz/1WTZy5Egzbtw4YwxjGO6sPGNWW1ur4uJiZWRkeJdFREQoIyNDW7ZsCWJlOFeVlZWSpISEBElScXGxTp486TOmqampSklJYUwtk5ubq6ysLJ+xkhjDUPHGG2+ob9++uu2225SYmKhrrrlGL7/8snf9gQMHVFZW5jOOLpdLAwYMYBwt8cMf/lBFRUX6+OOPJUkffPCB/vznP2vEiBGSGMNwZ91DzCXp888/V11dnZKSknyWJyUl6W9/+1uQqsK58ng8mjp1qgYOHKhevXpJksrKyhQdHa127dr5tE1KSlJZWVkQqkRDli1bpvfff187duyot44xDA379+/XggULNH36dD300EPasWOHfvnLXyo6Olo5OTnesWro85VxtMODDz4ot9ut1NRURUZGqq6uTrNmzdK4ceMkiTEMc1YGM4S23Nxc7dmzR3/+85+DXQr8UFpaqilTpmj9+vWKjY0NdjloIo/Ho759++o3v/mNJOmaa67Rnj179OKLLyonJyfI1eFcvPbaa1qyZIkKCgp05ZVXateuXZo6dao6derEGF4ArPwqs2PHjoqMjKw326u8vFzJyclBqgrnYtKkSVq9erU2bNigSy+91Ls8OTlZtbW1qqio8GnPmNqjuLhYR48e1Q9+8AO1atVKrVq10qZNm/Tcc8+pVatWSkpKYgxDwMUXX6zvf//7PsuuuOIKHTp0SJK8Y8Xnq73uu+8+Pfjggxo7dqx69+6tO++8U9OmTVN+fr4kxjDcWRnMoqOjlZaWpqKiIu8yj8ejoqIipaenB7EyNMYYo0mTJmnlypV655131K1bN5/1aWlpioqK8hnTkpISHTp0iDG1xNChQ7V7927t2rXL++rbt6/GjRvn/TdjaL+BAwfWu1XNxx9/rC5dukiSunXrpuTkZJ9xdLvd2rZtG+NoiRMnTigiwvfPc2RkpDwejyTGMOwFe/ZBY5YtW2ZiYmLMokWLzN69e80999xj2rVrZ8rKyoJdGhrwi1/8wrhcLrNx40Zz5MgR7+vEiRPeNj//+c9NSkqKeeedd8zOnTtNenq6SU9PD2LVOJtvz8o0hjEMBdu3bzetWrUys2bNMvv27TNLliwxbdq0MYsXL/a2mT17tmnXrp15/fXXzV//+ldz8803m27dupmvv/46iJXjtJycHHPJJZeY1atXmwMHDpgVK1aYjh07mvvvv9/bhjEMX9YGM2OMmTdvnklJSTHR0dGmf//+ZuvWrcEuCY2Q1OBr4cKF3jZff/21uffee0379u1NmzZtzK233mqOHDkSvKJxVt8NZoxhaFi1apXp1auXiYmJMampqeall17yWe/xeMwjjzxikpKSTExMjBk6dKgpKSkJUrX4LrfbbaZMmWJSUlJMbGysueyyy8zDDz9sampqvG0Yw/DlMOZbtxIGAABA0Fh5jRkAAMCFiGAGAABgCYIZAACAJQhmAAAAliCYAQAAWIJgBgAAYAmCGQAAgCUIZgAAAJYgmAEAAFiCYAYAAGAJghkAAIAlCGYAAACW+P9OricQCyRuPAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "m = model.embedding(x) + model.pos_emb\n", "\n", "plt.title(\"Selective Copy Input\")\n", "plt.tight_layout()\n", "\n", "plt.imshow(m.detach().numpy()[0].T)\n", "\n", "plt.savefig(\"fig/selective_copy_input.pdf\")" ] }, { "cell_type": "code", "execution_count": 214, "id": "555ea9f3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 214, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "m = m + model.layers[0].layer(m)\n", "plt.imshow(m.detach().numpy()[0])" ] }, { "cell_type": "code", "execution_count": 215, "id": "e919b4e6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 215, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "out, scores = model.layers[1].layer(m)\n", "# plt.imshow((m+out).detach().numpy()[0])\n", "plt.imshow((out).detach().numpy()[0])" ] }, { "cell_type": "code", "execution_count": 216, "id": "caee6b73", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmYAAAEwCAYAAAAdE739AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAALW9JREFUeJzt3Xt0lNW9//FPEnIjlwkXSUQSRAxGBUUCYoSiYiQiKgoKVpRoWfUWOFzWUYkepWoxiq1QJEC1HjzK1bTeLVCNglWJYhSFgw2oWNKDCd6SCSghZPbvD39MGTMDmWQmsyd5v9aatWTPnv18n70nT77uPPvZEcYYIwAAAIRcZKgDAAAAwE9IzAAAACxBYgYAAGAJEjMAAABLkJgBAABYgsQMAADAEiRmAAAAliAxAwAAsASJGQAAgCVIzIAO4IYbbtCJJ57Y5sf98ssvFRERoaeeeqrNjw0A4YjEDLDQ1q1bddVVV6l3796Ki4vTCSecoIsuukiPPfZYqEPzauXKlVqwYEGow2jC6XTqvvvu05lnnqnExETFx8erf//+uvPOO7Vnz55Qh3dUDQ0NWrhwoYYMGaKkpCQlJiZqyJAhWrhwoRoaGlrc7rvvvqvf/OY3qqmpCVywR/Hggw/qhRdeaJNjAe1BBHtlAnZ59913dcEFFygjI0P5+flKS0tTZWWlysrK9Pnnn+uzzz7zu80bbrhBGzZs0Jdffhn4gCVdeuml2rZtW5P2jTGqr69XdHS0oqKignJsX7744gvl5uZq9+7duvrqqzV8+HDFxMTok08+0apVq9S1a1ft2LGjTWNqrv3792vMmDHauHGjLr30Ul188cWKjIzUunXr9NJLL+m8887Tq6++qoSEBL/b/t3vfqfbb79du3btapNZ1MTERF111VXMmgLN1CnUAQDwNHfuXDkcDm3evFkpKSke7+3duzc0QbVQRESE4uLi2vy4hw4d0rhx41RdXa0NGzZo+PDhHu/PnTtXDz/8cJvH1VyzZs3Sxo0b9dhjj2nq1Knu8ltvvVXFxcWaOnWq/vM//1NLliwJYZQAgsIAsMopp5xizj///GbXf+aZZ8ygQYNMXFyc6dKli5k4caLZvXu3R538/HzTu3dvj7LGxkYzf/58c9ppp5nY2FjTo0cPc9NNN5nvvvuuyTH++te/mhEjRpjExESTlJRkBg8ebFasWGGMMea8884zkjxeh4+1a9cuI8ksW7bMGGPMI488YiSZL7/8sskxZs+ebaKjoz2OX1ZWZvLy8kxycrKJj483I0aMMG+//fYx+2T16tVGkpk7d+4x6x727LPPuvuxW7duZtKkSeZf//qXR538/HyTkJBgPv/8czNq1CjTuXNnc/zxx5v77rvPuFwuY4wxLpfL9O7d21x++eVNjvHjjz+a5ORkc9NNN/mMo7Ky0kRFRZmRI0f6rHPBBReYTp06mcrKSmNM034+kiQzZ84cY4wxc+bMaTJWksyuXbvcdQsKCszy5ctNv379TGxsrBk0aJDZuHFjk374+ffpyPaPPPbPX/n5+T7PC4Ax3GMGWKZ3794qLy/Xtm3bjll37ty5mjx5sjIzM/Xoo49qxowZKi0t1YgRI455D9HNN9+s22+/XcOGDdMf/vAH3XjjjVqxYoXy8vI87mF66qmnNGbMGH333XcqLCzUQw89pIEDB2rdunWSpLvvvlsDBw5U9+7d9cwzz+iZZ57xeb/ZhAkTFBERoWeffbbJe88++6xGjRqlLl26SJLeeOMNjRgxQk6nU3PmzNGDDz6ompoajRw5Uu+///5Rz+2ll16SJF1//fVHrXfkOU6YMEFRUVEqKirSr3/9az333HMaPnx4k35sbGzUxRdfrNTUVM2bN0/Z2dmaM2eO5syZI+mnWcLrrrtOa9eu1Xfffefx2ZdffllOp1PXXXedz1jWrl2rxsZGTZ482WedyZMn69ChQ+4xaK5x48bpl7/8pSRp/vz57vE67rjj3HU2btyoGTNm6LrrrtP999+vb7/9VhdffHGzvo8/98wzzyg2Nla/+MUv3Me6+eab/W4H6FBCnRkC8PS3v/3NREVFmaioKJOTk2PuuOMOs379enPw4EGPel9++aWJiopqMiu0detW06lTJ4/yn89w/P3vfzeS3LNeh61bt86jvKamxiQlJZmhQ4eaH3/80aPu4RkiY4wZM2aM1xkUbzM5OTk5Jjs726Pe+++/bySZp59+2t12ZmamycvL8zjODz/8YPr06WMuuuiiJsc60llnnWUcDsdR6xx28OBB06NHD9O/f3+Pc3zllVeMJHPvvfe6y/Lz840kM23aNHeZy+UyY8aMMTExMebrr782xhhTUVFhJJklS5Z4HOvyyy83J554osc5/dyMGTOMJPPRRx/5rPPhhx8aSWbWrFnGmObPmBnz71nLw7NkP68ryXzwwQfusn/+858mLi7OXHnllR790JwZM2OMSUhIYJYM8AMzZoBlLrroIm3atEmXX365Pv74Y82bN095eXk64YQT3DNBkvTcc8/J5XJpwoQJ+uabb9yvtLQ0ZWZm6s033/R5jJKSEjkcDl100UUen83OzlZiYqL7s6+99prq6uo0e/bsJveKRUREtOj8Jk6cqPLycn3++efusjVr1ig2NlZjx46VJG3ZskU7d+7Utddeq2+//dYd3/79+3XhhRfqrbfeksvl8nkMp9OppKSkZsXzwQcfaO/evbrttts8znHMmDHKysrSq6++2uQzR973FRERoalTp+rgwYN6/fXXJUn9+vXT0KFDtWLFCne97777TmvXrtWkSZOO2nd1dXWSdNT4D7/ndDqbdY7+yMnJUXZ2tvvfGRkZGjt2rNavX6/GxsaAHw+AJxIzwEJDhgzRc889p++//17vv/++CgsLVVdXp6uuukrbt2+XJO3cuVPGGGVmZuq4447zeH366adHXSiwc+dO1dbWqkePHk0+u2/fPvdnDydP/fv3D9i5XX311YqMjNSaNWsk/bRys6SkRKNHj1ZycrI7PknKz89vEt+f/vQn1dfXq7a21ucxkpOT3QnOsfzzn/+UJJ1yyilN3svKynK/f1hkZKROOukkj7J+/fpJkseq1MmTJ+udd95xf76kpEQNDQ3H/PPq4aTraPE3J3lrqczMzCZl/fr10w8//KCvv/464McD4IlVmYDFYmJiNGTIEA0ZMkT9+vXTjTfeqJKSEs2ZM0cul0sRERFau3at10dRJCYm+mzX5XKpR48eHjM6RzrynqNA69mzp37xi1/o2Wef1V133aWysjLt3r3bY5Xk4dmwRx55RAMHDvTaztHOLysrSx999JEqKyuVnp4e0Pib65prrtHMmTO1YsUK3XXXXVq+fLkGDx7sNQE80qmnnipJ+uSTT3ye+yeffCJJOu200yT5nr0M1gxXWx8P6EhIzIAwMXjwYEnSV199JUnq27evjDHq06ePe8amufr27avXX39dw4YNU3x8/FHrSdK2bdt08skn+6zn7581J06cqNtuu00VFRVas2aNOnfurMsuu6zJcZOTk5Wbm+tX25J02WWXadWqVVq+fLkKCwuPWrd3796SpIqKCo0cOdLjvYqKCvf7h7lcLn3xxRcefX74eWhHPhesa9euGjNmjFasWKFJkybpnXfeadZDeEePHq2oqCg988wzPhcAPP300+rUqZMuvvhiSXIvmPj5QoWfz/ZJxx6rw7OVR9qxY4c6d+7sTti7dOnidXFJS44HwBN/ygQs8+abb8p4ee7zX//6V0n//pPbuHHjFBUVpfvuu69JfWOMvv32W5/HmDBhghobG/XAAw80ee/QoUPuX7qjRo1SUlKSioqKdODAgSbHOCwhIeGof1r8ufHjxysqKkqrVq1SSUmJLr30Uo+HpWZnZ6tv37763e9+p3379jX5/LH+pHbVVVdpwIABmjt3rjZt2tTk/bq6Ot19992Sfkp4e/TooaVLl6q+vt5dZ+3atfr00081ZsyYJp9ftGiR+7+NMVq0aJGio6N14YUXetS7/vrrtX37dt1+++2KiorSNddcc9S4JSk9PV033nijXn/9da/PKVu6dKneeOMNTZkyRb169ZL0UwLbvXt3vfXWWx51Fy9e3OTzh/vZ16rdTZs26cMPP3T/u7KyUi+++KJGjRrlnpnt27evamtr3TN30k//w/D88897PV5b7TIAtAuhW3cAwJvTTz/d9OnTx8yaNcs8/vjjZtGiRebaa681UVFR5sQTTzTff/+9u25RUZGRZM4991wzb948s2TJEnPHHXeYzMxM88gjj7jreVtFd/PNNxtJZvTo0Wb+/Plm0aJFZvr06aZnz56mpKTEXe9Pf/qTkWT69+9vHnzwQbNkyRJzyy23mMmTJ7vrzJs3z0gyM2fONCtXrjQvvfSSMeboqwVzc3NNUlKSkWT+8pe/NHn/zTffNHFxcSYjI8PMmTPHPP7442bOnDlmxIgR5tJLLz1mP+7cudP07t3bdOrUyVx77bWmuLjYPP7442b69OnmuOOOM/369XPXXbZsmZFkhg4dahYsWGAKCwtN586dm/R3fn6+iYuLM5mZmWby5MmmuLjYXHrppUaSueuuu5rEUF9fb7p16+bu5+aqq6szw4cPN5LM5ZdfbhYvXmwWL15sxo4daySZ8847z+zbt8/jM7NnzzaSzJQpU8ySJUvML3/5S5Odnd1kVebhFbCXXHKJefrpp82qVavcbR0e5+7du5v777/fPPzww6Z3794mLi7OfPzxx+42vvnmG5OQkGBOOukks2DBAvPggw+a9PR0M2jQoCarMi+55BKTkJBg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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.title(\"Selective Copy Output\")\n", "plt.tight_layout()\n", "\n", "plt.imshow((m+out).detach().numpy()[0].T)\n", "\n", "plt.savefig(\"fig/selective_copy_output.pdf\")" ] }, { "cell_type": "code", "execution_count": 217, "id": "9125a8cd", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAcMAAAHWCAYAAAALneL2AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMG1JREFUeJzt3Xl4FFXa/vG7s4esbEmMhBARjSwOEBYDKAwE8mpUUBBQRFwZNaCAG6CgqBjRUVBW8fWHqCCII+57FB2VRVEYcYmoKCgmuJEgCITk+f3Bmx6ahCUbHTzfz3XVddGnTnU9ddLkzunqqvaYmQkAAIcF+LsAAAD8jTAEADiPMAQAOI8wBAA4jzAEADiPMAQAOI8wBAA4jzAEADiPMAQAOI8wdNTFF1+sZs2aHfH9fvfdd/J4PHr00UeP+L5RN9x2223yeDz+LgPwQRgeJT799FMNGDBAycnJCgsL07HHHqvevXtr+vTp/i6tQgsXLtS0adP8XUY5RUVFmjRpkv72t78pMjJS4eHhat26tW666SZt3rzZ3+UdUklJiRITE+XxePTKK69U2GfWrFkV/rHx+eef67bbbtN3331Xu0VK2rFjh2677TYtW7as1vdVGR6Px7sEBAQoMTFRffr0qVKdL7/8sm677bZy7XX12HEIhjrv/ffft5CQEDv++OPtjjvusIcfftgmTpxoffr0sebNm1fpOYcNG2bJyck1W+g+srKyKnz+0tJS+/PPP23Pnj21tu8D+eabbywlJcUCAwNt8ODBNmPGDJs7d66NGDHCGjZsaC1atDjiNVXW66+/bpKsWbNmNmTIkAr7tGrVyrp3716ufcmSJSbJ3n777dot0sx+/vlnk2S33npruXXFxcX2559/1noNFZFkvXv3tscff9wee+wxmzRpksXHx5vH47GXX365Us+VnZ1tFf0KPdixo+4K8mcQ4/BMnjxZMTEx+vDDDxUbG+uzbsuWLf4pqoo8Ho/CwsKO+H737Nmjc889VwUFBVq2bJm6devms37y5MmaMmXKEa+rsp544gm1b99ew4YN0/jx47V9+3ZFRET4u6xKCQoKUlCQ/371nHDCCbrwwgu9j8855xydfPLJmjZtmk4//XS/1XUoR+PP+qji7zTGoZ144onWo0ePw+7/+OOPW/v27S0sLMzq169vgwYNso0bN/r0qWhmWFJSYlOnTrWWLVtaaGioxcXF2fDhw+23334rt4+XX37ZTjvtNIuMjLSoqCjr0KGDLViwwMzMunfvbpJ8lrJ9bdiwwSTZvHnzzMzs3nvvNUn23XffldvH2LFjLTg42Gf/K1assMzMTIuOjrbw8HA77bTT7L333jvkmCxatMgk2eTJkw/Zt8xTTz3lHceGDRvakCFD7IcffvDpM2zYMIuIiLBvvvnG+vTpY/Xq1bNjjjnGJk2aZKWlpWa2dzacnJxsZ599drl9/PnnnxYdHW3Dhw8/ZD07duywqKgou+eee+ynn36ygIAA75iXSU5OLjf23bt3t3nz5pVr136zxJdfftm6detm9erVs8jISDvjjDNs3bp1FR7vDz/8YH379rWIiAhr1KiRXXfddd7ZftnPeP+lbKZ06623lptRFRcX2+23327HHXechYSEWHJyso0bN8527txZ7viysrLs3//+t3Xs2NFCQ0MtJSXF5s+ff8jxM9s7M8zOzi7X3qhRI+87A++++64NGDDAkpKSLCQkxJo0aWKjRo2yHTt2+IxDRcd4qGM3M/viiy+sf//+Vr9+fQsNDbW0tDR77rnnfOop+3ktW7bMrrrqKmvcuLHFxsaa2d7/X61atbLPPvvMevToYeHh4ZaYmGhTpkw5rDFAxQjDo0CfPn0sKirKPv3000P2vfPOO83j8digQYNs1qxZNmnSJGvUqJE1a9bMfv/9d2+/isLw8ssvt6CgILviiitszpw5dtNNN1lERIR17NjRdu/e7e03b94883g81rp1a5s8ebLNnDnTLr/8chs6dKiZ7X0rr23bttaoUSN7/PHH7fHHH7elS5eaWfkw/P77783j8dg999xT7liOO+44y8rK8j7Ozc21kJAQS09Pt/vuu8+mTp1qJ598soWEhNjKlSsPOi4XXHCBSSr3R8GBlP0y6tixo02dOtXGjh1r4eHhFY5jWFiYtWjRwoYOHWozZsywM8880yTZhAkTvP1uvvlmCw4Otl9//dVnP0899ZRJsnffffeQNS1atMg8Ho/3GHr27GlnnHGGT5+lS5dakyZNLDU11Tv2r7/+un3zzTd2zTXXmCQbP368d11+fr6ZmT322GPm8Xjsf/7nf2z69Ok2ZcoUa9asmcXGxtqGDRvKHW+rVq3s0ksvtdmzZ1v//v1Nks2aNcvMzP744w+bPXu2SbJzzjnHu6+1a9eaWcVhWBYuAwYMsJkzZ9pFF11kkqxfv34+/ZKTk+3EE0+0+Ph4Gz9+vM2YMcPat29vHo+nXHBXpKIw/O233ywwMNBOOeUUMzMbOXKknXHGGXbXXXfZQw89ZJdddpkFBgbagAEDvNt88MEH1rt3b5PkPb7HH3/8kMe+bt06i4mJsZYtW9qUKVNsxowZdtppp5nH47FnnnnG+/xlr7+WLVta9+7dbfr06Xb33Xeb2d4wTExMtKSkJLv22mtt1qxZ1rNnT5NU6bd68V+E4VHg9ddft8DAQAsMDLT09HS78cYb7bXXXvMJKDOz7777zgIDA8vNfj799FMLCgryad8/DP/973+bpHIzjVdffdWnfevWrRYVFWWdO3cud96nbCZkduBzhvuHoZlZenq6paWl+fRbtWqVSbLHHnvM+9wtWrSwzMxMn/3s2LHDUlJSrHfv3uX2ta927dpZTEzMQfuU2b17t8XFxVnr1q19jvHFF180STZx4kRvW9kv8ZEjR3rbSktLLSsry0JCQuznn382M7O8vDyTZLNnz/bZ19lnn23NmjXzOaYDOfPMM61r167ex3PnzrWgoCDbsmWLT7/KnjPctm2bxcbG2hVXXOHTnp+fbzExMT7tZcd7++23+/Rt166dz8/wYOfN9g/DNWvWmCS7/PLLffpdf/31Jsneeustb1vZzHffPx62bNlioaGhdt1115Xb1/4k2WWXXWY///yzbdmyxVauXGm9evUySXbfffeZmfnMAMvk5OSYx+Ox77//3ttWlXOGvXr1sjZt2vjMeEtLS61Lly4+56zLwrBbt27lzq+XvfNS9n/DzGzXrl2WkJBg/fv3P+QYoGJ8mvQo0Lt3by1fvlxnn3221q5dq3vuuUeZmZk69thj9fzzz3v7PfPMMyotLdXAgQP1yy+/eJeEhAS1aNFCb7/99gH3sWTJEsXExKh3794+26alpSkyMtK77RtvvKFt27Zp7Nix5c79VfXj8oMGDdLq1av1zTffeNsWL16s0NBQ9e3bV5K0Zs0arV+/XhdccIF+/fVXb33bt29Xr1699O6776q0tPSA+ygqKlJUVNRh1fPRRx9py5Ytuvrqq32OMSsrS6mpqXrppZfKbTNixAjvvz0ej0aMGKHdu3frzTfflLT3PFXnzp21YMECb7/ffvtNr7zyioYMGXLIsfv111/12muv6fzzz/e29e/fXx6PR0899dRhHdeBvPHGG9q6davOP/98n599YGCgOnfuXOHr5sorr/R5fOqpp+rbb7+t0v5ffvllSdKYMWN82q+77jpJKjfeLVu21Kmnnup93LhxY5144omHvf9HHnlEjRs3VlxcnDp37qz3339fY8aM0ahRoyRJ4eHh3r7bt2/XL7/8oi5dusjM9Mknn1T6+Mr89ttveuuttzRw4EBt27bNO86//vqrMjMztX79ev34448+21xxxRUKDAws91yRkZE+5z1DQkLUqVOnKv8MIPEBmqNEx44d9cwzz2j37t1au3atli5dqqlTp2rAgAFas2aNWrZsqfXr18vM1KJFiwqfIzg4+IDPv379ehUWFiouLq7C9WUf1CkLrNatW1fziP7rvPPO05gxY7R48WKNHz9eZqYlS5bo9NNPV3R0tLc+SRo2bNgBn6ewsFD169evcF10dPRh/6L4/vvvJUknnnhiuXWpqal67733fNoCAgJ03HHH+bSdcMIJkuRzGcNFF12kESNG6Pvvv1dycrKWLFmi4uJiDR069JA1LV68WMXFxWrXrp2+/vprb3tZwGZnZx/WsVWkbGx79uxZ4fqyn0GZsLAwNW7c2Ketfv36+v3336u0/++//14BAQE6/vjjfdoTEhIUGxvr/XmUadq0abnnqMz++/btqxEjRsjj8SgqKkqtWrXy+WDKxo0bNXHiRD3//PPlnrOwsPBwD6ucr7/+WmamCRMmaMKECRX22bJli4499ljv45SUlAr7NWnSpNwfUPXr19d//vOfKtfnOsLwKBMSEqKOHTuqY8eOOuGEE3TJJZdoyZIluvXWW1VaWuq9/uxAf00eSGlpqeLi4nxmLvva/5dfTUpMTNSpp56qp556SuPHj9eKFSu0ceNGn093ls367r33XrVt27bC5znY8aWmpuqTTz7Rpk2blJSUVKP1H67Bgwdr9OjRWrBggcaPH68nnnhCHTp0qDB091f2c+natWuF67/99ttygXy4ysb28ccfV0JCQrn1+3/ys6LXVk043HcWDrR/Mzus7Zs0aaKMjIwK15WUlKh379767bffdNNNNyk1NVURERH68ccfdfHFFx/03YdDKdv2+uuvV2ZmZoV99v+DYN9Z6r6qOwYojzA8inXo0EGS9NNPP0mSmjdvLjNTSkqKd2ZyuJo3b64333xTXbt2PeB/wLJ+krRu3bpy/3H3Vdm3TAcNGqSrr75aeXl5Wrx4serVq6ezzjqr3H6jo6MP+IvsYM466yw9+eSTeuKJJzRu3LiD9k1OTpYk5eXllZst5eXledeXKS0t1bfffusz5l999ZUk+dzlp0GDBsrKytKCBQs0ZMgQvf/++4d1Y4INGzbogw8+0IgRI9S9e/dy+x46dKgWLlyoW265RdKBx/5A7WVjGxcXV6Wxrcy+KpKcnKzS0lKtX79eJ510kre9oKBAW7duLTfetenTTz/VV199pfnz5+uiiy7ytr/xxhvl+lZ2nMv+WAkODq6xcUbN4ZzhUeDtt9+u8C++snMtZTOLc889V4GBgZo0aVK5/mamX3/99YD7GDhwoEpKSnTHHXeUW7dnzx5t3bpVktSnTx9FRUUpJydHO3fuLLePMhEREZV6S6l///4KDAzUk08+qSVLlujMM8/0eesqLS1NzZs31z//+U/98ccf5bb/+eefD/r8AwYMUJs2bTR58mQtX7683Ppt27bp5ptvlrT3j4y4uDjNmTNHu3bt8vZ55ZVX9MUXXygrK6vc9jNmzPD+28w0Y8YMBQcHq1evXj79hg4dqs8//1w33HCDAgMDNXjw4IPWLf13VnjjjTdqwIABPsvAgQPVvXt3nxl9RESE9+e1r7Lx3H9dZmamoqOjddddd6m4uLjcdoca24rUq1evwn1V5IwzzpCkcn8Y3H///ZJU4XjXlrIZ176vZTPTAw88UK7vgcbzQMceFxenHj166KGHHvL+Abuvqowzag4zw6PAyJEjtWPHDp1zzjlKTU3V7t279cEHH2jx4sVq1qyZLrnkEkl7/8K/8847NW7cOH333Xfq16+foqKitGHDBi1dulTDhw/X9ddfX+E+unfvrn/84x/KycnRmjVr1KdPHwUHB2v9+vVasmSJHnjgAQ0YMEDR0dGaOnWqLr/8cnXs2FEXXHCB6tevr7Vr12rHjh2aP3++pL3htXjxYo0ZM0YdO3ZUZGSkz0xvf3Fxcfr73/+u+++/X9u2bdOgQYN81gcEBOh///d/dfrpp6tVq1a65JJLdOyxx+rHH3/U22+/rejoaL3wwgsHfP7g4GA988wzysjI0GmnnaaBAweqa9euCg4O1meffaaFCxeqfv36mjx5soKDgzVlyhRdcskl6t69u84//3wVFBTogQceULNmzTR69Gif5w4LC9Orr76qYcOGqXPnznrllVf00ksvafz48eXeXs7KylLDhg2950QPdI52XwsWLFDbtm0P+Pbu2WefrZEjR+rjjz9W+/btlZaWptmzZ+vOO+/U8ccfr7i4OPXs2VNt27ZVYGCgpkyZosLCQoWGhqpnz56Ki4vT7NmzNXToULVv316DBw9W48aNtXHjRr300kvq2rWrT9gfjvDwcLVs2VKLFy/WCSecoAYNGqh169YVnmv+29/+pmHDhmnu3LnaunWrunfvrlWrVmn+/Pnq16+f/v73v1dq39WRmpqq5s2b6/rrr9ePP/6o6Oho/etf/6rwfGRaWpok6ZprrlFmZqb3j5uDHfvMmTPVrVs3tWnTRldccYWOO+44FRQUaPny5frhhx+0du3aI3as2I8/PsKKynnllVfs0ksvtdTUVIuMjPTemm3kyJFWUFBQrv+//vUv69atm0VERFhERISlpqZadna25eXlefsc6HZsc+fOtbS0NAsPD7eoqChr06aN3XjjjbZ582affs8//7x16dLFwsPDLTo62jp16mRPPvmkd/0ff/xhF1xwgcXGxh70ovt9PfzwwybJoqKiDni7rk8++cTOPfdca9iwoYWGhlpycrINHDjQcnNzD2MkzX7//XebOHGitWnTxurVq2dhYWHWunVrGzdunP30008+fRcvXmzt2rWz0NBQa9CgwWFfdB8fH2+33nqrlZSUVFjD1VdfbZJs4cKFh6x39erV5a5Z3N93331nkmz06NFmtveSiKysLIuKivJedF/m4YcftuOOO84CAwPLXWbx9ttvW2ZmpsXExFhYWJg1b97cLr74Yvvoo4/KHe/+Krp28IMPPrC0tDQLCQk5rIvuJ02aZCkpKRYcHGxJSUkHveh+f927d6/wcpL96QAX3e/r888/t4yMDIuMjLRGjRrZFVdcYWvXri33ut2zZ4+NHDnSGjdubB6Px+eYDnTsZntvC3jRRRdZQkKCBQcH27HHHmtnnnmmPf30094+ZZdWfPjhhxUea6tWrcq11/YtFv/qPGaccQWq6uKLL9bTTz9d4Vu3BzJ69Gg98sgjys/P976lBsC/OGcIHEE7d+7UE088of79+xOEQB3COUPgCNiyZYvefPNNPf300/r111917bXX+rskAPsgDIEj4PPPP9eQIUMUFxenBx988IDXSgLwD84ZAgCcxzlD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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.title(\"Selective Copy Attention Pattern\")\n", "plt.tight_layout()\n", "\n", "plt.imshow(scores.detach().numpy()[0,0])\n", "\n", "plt.savefig(\"fig/selective_copy_atterntion_pattern.pdf\")" ] }, { "cell_type": "code", "execution_count": 218, "id": "0f3fbf55", "metadata": {}, "outputs": [], "source": [ "qkv = model.layers[1].layer.qkv(m)\n", "q, k, v = qkv.chunk(3, dim=-1)" ] }, { "cell_type": "code", "execution_count": 219, "id": "b14d0fed", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 219, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(q.detach().numpy()[0])" ] }, { "cell_type": "code", "execution_count": 220, "id": "19f589dc", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 220, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(k.detach().numpy()[0])" ] }, { "cell_type": "code", "execution_count": 221, "id": "5c2de9b5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 221, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAM0AAAGgCAYAAAAJoeNZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGUlJREFUeJzt3X9sVfX9x/FXS+ktk3L54biloZV+Dd/gQL8qvyyY/dBmZOICs9lmwjLGzJjaKoVkzi7CMqZe9Q9pMBWn0YrJGI7ki1s0YyFFSdAiUoeRMStTv6Mb3stM1l7EUbA93z/8fq+9tz9u3/fennPPvc9HchPvveec++mVV+7n9ylyHMcRgDEr9roAgN8QGsCI0ABGhAYwIjSAEaEBjAgNYERoACNCAxgRGsBo3ELT2tqqOXPmqKysTEuXLtWRI0fG66MAVxWNx9yz559/Xt///vf1xBNPaOnSpWppadGePXvU1dWlmTNnjnruwMCATp8+rfLychUVFWW7aEACx3F09uxZVVZWqrh4jL8hzjhYsmSJ09DQEH/e39/vVFZWOuFwOOW53d3djiQePFx9dHd3j/nfd4my7MKFC+rs7FRzc3P8teLiYtXV1amjo2PI8X19ferr64s/d/7vh+963aQSTUz5eXvffTvh+bf+88p0i673H1qc9rnZ8tYtzyQ8/6///qFHJXHff9z7RsLz5P+3g1n/P490rdjHA7rs2v9ReXn5mK+V9dB89NFH6u/vVygUSng9FArpnXfeGXJ8OBzWL37xi2EKNlElRalDM6U88Sd1LOeMpLisLO1zsyX578mFMrkl+f9d8ncx2rGpjHYtSaamQNZDY9Xc3KxNmzbFn8diMVVVVWXt+n88fSz+3ysqr87adeFfg/8dfOpclPS+6fysh+bSSy/VhAkTFI1GE16PRqOqqKgYcnwgEFAgEMh2MYBxk/Uu59LSUi1cuFDt7e3x1wYGBtTe3q7a2tpsfxzgunGpnm3atElr167VokWLtGTJErW0tOjcuXNat27deHzcmA2uqg3n8uevc6cgcN3gKtngfwexswOa9p+2a41LaL773e/qn//8p7Zs2aJIJKKrr75a+/btG9I5APjRuHUENDY2qrGxcbwuD3iGuWeAkeddzpnKZjfye999IivXTdV2shhcJin9clnLdPnzt6f1OX6QaZczvzSAEaEBjAgNYOT7Nk0mktsH2WyLjPVz3frMVIa0lbZ5UoxRjcf3ls44Db80gBGhAYx8Xz1L/plOrmaM9pOe/DyhmzWD6knK6TiDrp18bHIXM7KPLmfAZYQGMCI0gJHv2zSpuo0Hv5/q2Eym0VhWiLrVzZxJmfJtmUQ2lwbwSwMYERrAiNAARr5v0yQbre6eerlz+uM0CW2AFOeO1l5gnGb8MU4DuIzQAEaEBjDKuzaNZZwm2Xun3RmnGek8L/lhaYDFWJd9ME4DuIDQAEa+r55ZqjeplhG41eU84nmiy9kNdDkDLiM0gBGhAYx836ZJNlpXIzd1KlwsDQA8RGgAI0IDGPm+TWNZ7pyKW8udRzoP7mCcBnAZoQGMfF89S1Uds1SbmEbjX+luZk+XM+ACQgMYERrAyPdtmlQsu9Pk266SGB5dzoDLCA1gRGgAo7xv0zBNBRJLAwBPERrAyPfVM8uM4nSnWiC/0OUMuIzQAEaEBjDyfZsmWSYrN5E/2AAdyCGEBjAiNIBR3rVpLMud8+1GRhgbxmkAlxEawIjQAEa+b9MwLoOxYGkA4CFCAxj5vnqWyXR/dqMpTHQ5Ay4jNICRKTThcFiLFy9WeXm5Zs6cqdWrV6urqyvhmPPnz6uhoUEzZszQ5MmTVV9fr2g0mtVCA14ytWkOHjyohoYGLV68WJ9++ql+9rOf6etf/7pOnDihSy65RJK0ceNGvfTSS9qzZ4+CwaAaGxt1yy236NVXXx2XPyCV0bqgk9977zQ3dfKLbC1dT6fL2RSaffv2JTx/9tlnNXPmTHV2durLX/6yent79fTTT2vXrl264YYbJEltbW264oordPjwYV133dCGdl9fn/r6+j7/I2Ix218AuCyjNk1vb68kafr06ZKkzs5OXbx4UXV1dfFj5s2bp+rqanV0dAx7jXA4rGAwGH9UVVVlUiRg3KUdmoGBATU1NWn58uVasGCBJCkSiai0tFRTp05NODYUCikSiQx7nebmZvX29sYf3d3d6RYJcEXa4zQNDQ06fvy4Dh06lFEBAoGAAoFA2udzJzRYeTJO09jYqBdffFEvv/yyZs+eHX+9oqJCFy5cUE9PT8Lx0WhUFRUV6XwUkHNMoXEcR42Njdq7d68OHDigmpqahPcXLlyoiRMnqr29Pf5aV1eXTp06pdra2uyUGPCYqXrW0NCgXbt26Xe/+53Ky8vj7ZRgMKhJkyYpGAzqtttu06ZNmzR9+nRNmTJFd911l2pra4ftOcuGVF2PzHqGlN1ZzqbQ7NixQ5L01a9+NeH1trY2/eAHP5Akbdu2TcXFxaqvr1dfX59WrFihxx9/3FYqIIeZQuM4TspjysrK1NraqtbW1rQLBeQy5p4BRr5fGsA0FFixNABwGaEBjAgNYOT7Nk2qcZjRptEMbQ+NfKyFZWrPeBppbCL5veHe9/vSb+4aAOQQQgMY+b56lk2ZzHJOvE5S1WZbivcHYZbz+KPLGXAZoQGMCA1gVFBtGqbcFC42QAc8RGgAI0IDGPm+TZOqnWKaDsONagsC4zSAywgNYERoACPft2mSsWVTYUp3+QXjNIALCA1g5PvqmWXlZip+X62IsaHLGXAZoQGMCA1g5Ps2TSayeaPawSxTe7xarpDy7gp5NqWIpQGAhwgNYERoAKO8a9OM1kYYzxvVJl4nxXjPoGtzo1r3MU4DuIzQAEZ5Vz1LNlqVLJsboI+20Xrqzx0fmZTJ71OK2AAdyCGEBjAiNICR79s0mbQPkuu9f902qB5v7HJOaAOkOJe7BniLLmfAZYQGMCI0gJHv2zTJRuufz/ebs2JkLA0APERoACPfV8/S3SQOhYsuZ8BlhAYwIjSAke/bNKmMNiU+33dg8Ts32qt0OQMuIDSAEaEBjPKuTWOpB3MDqMLEOA3gMkIDGBEawCjv2jSZGLzUOB/uGmD5nHwfs2JpAOAhQgMY+b56lurmRKNVUYau3GQD9EJAlzPgMkIDGGUUmoceekhFRUVqamqKv3b+/Hk1NDRoxowZmjx5surr6xWNRjMtJ5Az0m7TvPHGG/rVr36lq666KuH1jRs36qWXXtKePXsUDAbV2NioW265Ra+++mrGhR1Oqmkzg99P2Y2cZ92shSzn7hrw8ccfa82aNXrqqac0bdq0+Ou9vb16+umn9eijj+qGG27QwoUL1dbWptdee02HDx8e9lp9fX2KxWIJDyCXpRWahoYGrVy5UnV1dQmvd3Z26uLFiwmvz5s3T9XV1ero6Bj2WuFwWMFgMP6oqqpKp0iAa8yh2b17t958802Fw+Eh70UiEZWWlmrq1KkJr4dCIUUikWGv19zcrN7e3viju7vbWiTAVaY2TXd3tzZs2KD9+/errKwsKwUIBAIKBAJZudZwWBqAZK6O03R2durMmTO69tprVVJSopKSEh08eFDbt29XSUmJQqGQLly4oJ6enoTzotGoKioqTAUDcpXpl+bGG2/U22+/nfDaunXrNG/ePP30pz9VVVWVJk6cqPb2dtXX10uSurq6dOrUKdXW1mav1ICHTKEpLy/XggULEl675JJLNGPGjPjrt912mzZt2qTp06drypQpuuuuu1RbW6vrrnNnc3E2QMdwsjnLOetzz7Zt26bi4mLV19err69PK1as0OOPP57tjwE8k3FoXnnllYTnZWVlam1tVWtra6aXBnISc88AI98vDbDgjgKQWBoAuI7QAEaEBjAqqDZNqnGa8dqNJhfv1pZvY1bpfsfsRgO4gNAARnlXPRutapTqJ3vcdqPZluL9QdiNZvzR5Qy4jNAARoQGMMq7No1Fvm/6jc+xATrgIUIDGBEawKig2jT5NnUE6WGcBnAZoQGMCA1gVFBtmlQyWRow2lZRox07nixlyjc5d9cAoJARGsAo76pnlhV8ycf+ddugLmfjlJqE7uoU57I0wFt0OQMuIzSAEaEBjPKuTZNqJxgUJpYGAB4iNIARoQGMfN+myWRKCksDChPjNIDLCA1g5PvqmWVGMd3P+SNbm8rT5Qy4gNAARoQGMPJ9mybVtBnaMUhGlzPgMkIDGBEawMj3bZpURhun4a4BhYOlAYCHCA1g5PvqWSZdykOnXnz+PJvXzdaUD6vRbtJbyF3xdDkDLiM0gBGhAYx836ZJZqm7Z3OHzcGGrADdluL9QdhhMzvYAB3IIYQGMCI0gJHv2zSWNkyq8RF2oykMjNMALiM0gBGhAYx836axSDnfiqUBeYulAYCHCA1g5PvqWSY3pmUD9MJElzPgMkIDGJlD849//EPf+973NGPGDE2aNElXXnmljh49Gn/fcRxt2bJFs2bN0qRJk1RXV6eTJ09mtdCAl0xtmn/9619avny5vva1r+kPf/iDvvjFL+rkyZOaNm1a/JhHHnlE27dv186dO1VTU6PNmzdrxYoVOnHihMrKyrL+ByTLZBoN/CvdJeXpdDmbQvPwww+rqqpKbW1t8ddqamri/+04jlpaWnTfffdp1apVkqTnnntOoVBIL7zwgm699dYh1+zr61NfX9/nf0QsZvsLAJeZqme///3vtWjRIn3729/WzJkzdc011+ipp56Kv//BBx8oEomorq4u/lowGNTSpUvV0dEx7DXD4bCCwWD8UVVVleafArjDFJr3339fO3bs0Ny5c/XHP/5Rd9xxh+6++27t3LlTkhSJRCRJoVAo4bxQKBR/L1lzc7N6e3vjj+7u7nT+DsA1purZwMCAFi1apAcffFCSdM011+j48eN64okntHbt2rQKEAgEFAgE0jp3LEbbYZM2TmFydZxm1qxZ+tKXvpTw2hVXXKFTp05JkioqKiRJ0Wg04ZhoNBp/D/A7U2iWL1+urq6uhNfeffddXXbZZZI+6xSoqKhQe3t7/P1YLKbXX39dtbW1WSgu4D1T9Wzjxo1atmyZHnzwQX3nO9/RkSNH9OSTT+rJJ5+UJBUVFampqUn333+/5s6dG+9yrqys1OrVq8ej/ENQ5cJwsjnL2RSaxYsXa+/evWpubtbWrVtVU1OjlpYWrVmzJn7MPffco3Pnzmn9+vXq6enR9ddfr3379rkyRgO4wTxh8+abb9bNN9884vtFRUXaunWrtm7dmlHBgFzF3DPAyPdLA1Kx7LD53uknRnwvldG6tsd6XrZZylRIN7hiaQDgMkIDGBEawCjv2jS5eNcxr2RSJr8v/eauAUAOITSAUd5Vz5JZbtY6bjd1MuCmTuOPLmfAZYQGMCI0gFHetWlGa7ek7ob8/Pl4TqNxq0s6F8vkFTZABzxEaAAjQgMY5V2bJhOXP3/750+M4zQJYzMpzh1tHIdxmvHHOA3gMkIDGBEawCjv2jTsopm/xmP5BeM0gAsIDWDk++pZqun+pukwebwDCz5HlzPgMkIDGBEawMj3bRrrFP7BkttDft+BBSNjaQDgIUIDGBEawMj3bZpU4zSmYxmnKQiM0wAuIzSAke+rZ6lmNRfybjSFjA3QgRxCaAAjQgMY+b5Nk6ob2dLWYDeawkCXM+AyQgMYERrAyPdtmmSWaTUoHCwNADxEaAAj31fPLFNWUu5UwyzngkCXM+AyQgMYERrAyPdtGkBKf+N7upwBFxAawIjQAEYF3abJ5nLn0a7r1Y2mRrsJUiFPL2KcBnAZoQGMCA1glHdtGq/q7pZl1W7JxTJ5haUBgIcIDWCUd9WzTKoh7EZTGOhyBlxGaAAjU2j6+/u1efNm1dTUaNKkSbr88sv1y1/+Uo7jxI9xHEdbtmzRrFmzNGnSJNXV1enkyZNZLzjgFVOb5uGHH9aOHTu0c+dOzZ8/X0ePHtW6desUDAZ19913S5IeeeQRbd++XTt37lRNTY02b96sFStW6MSJEyorKxuXPwJINp53DTCF5rXXXtOqVau0cuVKSdKcOXP0m9/8RkeOHJH02a9MS0uL7rvvPq1atUqS9NxzzykUCumFF17QrbfeOuSafX196uvr+/yPiMVsfwHgMlP1bNmyZWpvb9e7774rSXrrrbd06NAhfeMb35AkffDBB4pEIqqrq4ufEwwGtXTpUnV0dAx7zXA4rGAwGH9UVVWl+7cArjD90tx7772KxWKaN2+eJkyYoP7+fj3wwANas2aNJCkSiUiSQqFQwnmhUCj+XrLm5mZt2rQp/jwWixEc5DRTaH7729/q17/+tXbt2qX58+fr2LFjampqUmVlpdauXZtWAQKBgAKBQFrnDieTaTSDx0i4E1r+ynScxhSan/zkJ7r33nvjbZMrr7xSf/vb3xQOh7V27VpVVFRIkqLRqGbNmhU/LxqN6uqrrx7ukoDvmNo0n3zyiYqLE0+ZMGGCBgYGJEk1NTWqqKhQe3t7/P1YLKbXX39dtbW1WSgu4D3TL803v/lNPfDAA6qurtb8+fP1pz/9SY8++qh++MMfSpKKiorU1NSk+++/X3Pnzo13OVdWVmr16tXjUf6URqsKJVej/rpt7FNhkjGNJrdlc5azKTSPPfaYNm/erDvvvFNnzpxRZWWlfvzjH2vLli3xY+655x6dO3dO69evV09Pj66//nrt27ePMRrkDVNoysvL1dLSopaWlhGPKSoq0tatW7V169ZMywbkJOaeAUZ5vzSA7l0kY2kA4DJCAxgRGsAo79o0yUab0pLc3hlt/AS5JVttV3ajAVxAaAAj31fPMtlsnBvVFia6nAGXERrAiNAARr5v06Rqw+Tiys2RzvNSvrfv2AAd8BChAYwIDWDk+zaNpU2Qqr3j1l0DRjxPLHd2A+M0gMsIDWBEaAAj37dpsrmbZSbjNJbPHGnMINssn5NvN7Idz7sG8EsDGBEawMj31bNkmUyjyaTLOfE6KVaADro2Xc7uo8sZcBmhAYwIDWCUd22aZKblzshbLA0APERoACNCAxjlfZsGSMY4DeAyQgMY+b56lskOm2yAnj/S3RCdLmfABYQGMCI0gJHv2zTJMlkakG+7SmJ4dDkDLiM0gBGhAYzyrk1jwThN4WBpAOAhQgMY5V31jNWYSIUuZ8BlhAYwIjSAke/bNJncqDb5vfdO59eNatMtUz5gA3QghxAawIjQAEa+b9NYpGo/cKPawsA4DeAyQgMYERrAyPdtGss4R7rb/MD/WBoAeIjQAEa+r56lmh5iqYIN7u7NZNpJrlT7RqqSjEU+r2KlyxlwGaEBjHKueuY4jiTpU12UnMyvFzs7kNZ5n/1su/uZY5FuuaxlGjh/Pq3PyUQm33nan6nPPvP//92NRZFjOdoFf//731VVVeV1MVBguru7NXv27DEdm3OhGRgY0OnTp+U4jqqrq9Xd3a0pU6Z4XaycFYvFVFVVxfeUwkjfk+M4Onv2rCorK1VcPLbWSs5Vz4qLizV79mzFYjFJ0pQpU/jHMAZ8T2Mz3PcUDAZN16AjADAiNIBRzoYmEAjo5z//uQKBgNdFyWl8T2OTze8p5zoCgFyXs780QK4iNIARoQGMCA1gRGgAo5wNTWtrq+bMmaOysjItXbpUR44c8bpIngmHw1q8eLHKy8s1c+ZMrV69Wl1dXQnHnD9/Xg0NDZoxY4YmT56s+vp6RaNRj0qcGx566CEVFRWpqakp/lpWvicnB+3evdspLS11nnnmGefPf/6z86Mf/ciZOnWqE41GvS6aJ1asWOG0tbU5x48fd44dO+bcdNNNTnV1tfPxxx/Hj7n99tudqqoqp7293Tl69Khz3XXXOcuWLfOw1N46cuSIM2fOHOeqq65yNmzYEH89G99TToZmyZIlTkNDQ/x5f3+/U1lZ6YTDYQ9LlTvOnDnjSHIOHjzoOI7j9PT0OBMnTnT27NkTP+Yvf/mLI8np6OjwqpieOXv2rDN37lxn//79zle+8pV4aLL1PeVc9ezChQvq7OxUXV1d/LXi4mLV1dWpo6PDw5Lljt7eXknS9OnTJUmdnZ26ePFiwnc2b948VVdXF+R31tDQoJUrVyZ8H1L2vqecm+X80Ucfqb+/X6FQKOH1UCikd955x6NS5Y6BgQE1NTVp+fLlWrBggSQpEomotLRUU6dOTTg2FAopEol4UErv7N69W2+++abeeOONIe9l63vKudBgdA0NDTp+/LgOHTrkdVFyTnd3tzZs2KD9+/errKxs3D4n56pnl156qSZMmDCkRyMajaqiosKjUuWGxsZGvfjii3r55ZcTVhlWVFTowoUL6unpSTi+0L6zzs5OnTlzRtdee61KSkpUUlKigwcPavv27SopKVEoFMrK95RzoSktLdXChQvV3t4ef21gYEDt7e2qra31sGTecRxHjY2N2rt3rw4cOKCampqE9xcuXKiJEycmfGddXV06depUQX1nN954o95++20dO3Ys/li0aJHWrFkT/++sfE9Z7rjIit27dzuBQMB59tlnnRMnTjjr1693pk6d6kQiEa+L5ok77rjDCQaDziuvvOJ8+OGH8ccnn3wSP+b22293qqurnQMHDjhHjx51amtrndraWg9LnRsG9545Tna+p5wMjeM4zmOPPeZUV1c7paWlzpIlS5zDhw97XSTP6LN9eYY82tra4sf8+9//du68805n2rRpzhe+8AXnW9/6lvPhhx96V+gckRyabHxPrKcBjHKuTQPkOkIDGBEawIjQAEaEBjAiNIARoQGMCA1gRGgAI0IDGBEawOh/Af3xu4wXGtnsAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(v.detach().numpy()[0])" ] }, { "cell_type": "code", "execution_count": 222, "id": "8039708e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 222, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.imshow(out.detach().numpy()[0])" ] }, { "cell_type": "code", "execution_count": 223, "id": "0b02c404", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([[33, 33, 33, 33, 33, 33, 33, 33, 15, 19, 22, 28, 27, 18, 30, 2, 29, 25,\n", " 19, 29, 19, 16, 22, 4, 12, 29, 19, 7, 23, 26, 26, 4, 23, 26, 4, 6,\n", " 23, 15, 30, 23, 20, 12, 7, 5, 18, 7, 13, 4, 18, 7, 13, 4, 6, 26,\n", " 10, 7, 24, 4, 16, 19, 26, 7, 18, 26, 18, 15, 18, 15, 12, 2, 4, 12,\n", " 29, 28, 1, 30, 8, 30, 15, 0, 17, 30, 20, 24, 3, 3, 30, 0, 13, 5,\n", " 0, 21, 29, 25, 27, 7, 27, 7, 13, 22]])" ] }, "execution_count": 223, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y" ] }, { "cell_type": "code", "execution_count": 224, "id": "343dacd7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([-1.0000, -1.0000, -1.0000, 1.0000, -1.0000, 1.0000, 1.0000, 1.0000],\n", " grad_fn=)" ] }, "execution_count": 224, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(m+out)[0,-1, 3*l+2:4*l+2]" ] }, { "cell_type": "code", "execution_count": 225, "id": "b093612d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([[33, 33, 33, 33, 33, 33, 33, 33, 15, 19, 22, 28, 27, 18, 30, 2, 29, 25,\n", " 19, 29, 19, 16, 22, 4, 12, 29, 19, 7, 23, 26, 26, 4, 23, 26, 4, 6,\n", " 23, 15, 30, 23, 20, 12, 7, 5, 18, 7, 13, 4, 18, 7, 13, 4, 6, 26,\n", " 10, 7, 24, 4, 16, 19, 26, 7, 18, 26, 18, 15, 18, 15, 12, 2, 4, 12,\n", " 29, 28, 1, 30, 8, 30, 15, 0, 17, 30, 20, 24, 3, 3, 30, 0, 13, 5,\n", " 0, 21, 29, 25, 27, 7, 27, 7, 13, 22]])" ] }, "execution_count": 225, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y" ] } ], "metadata": { "kernelspec": { "display_name": "hybrid", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.11" } }, "nbformat": 4, "nbformat_minor": 5 }