pytorch-stuff/Tensors1D.ipynb

1181 lines
35 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import torch"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"a = torch.tensor([7,4,3,2,6])"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor(7)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[0]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor(6)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a[4]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"torch.int64"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.dtype"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'torch.LongTensor'"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.type()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"a = torch.tensor([0.0,1.0,2.0,3.0,4.0])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"torch.float32"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.dtype"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'torch.FloatTensor'"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.type()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"a = torch.tensor([0.0,1.0,2.0,3.0,4.0], dtype=torch.int32)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"torch.int32"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.dtype"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"a = torch.tensor([4.0, 1.0, 2.0, 3.0, 4])"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"torch.float32"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.dtype"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"a = torch.FloatTensor([0,1,2,3,4])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"torch.float32"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.dtype"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'torch.FloatTensor'"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.type()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([0., 1., 2., 3., 4.])"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"a = torch.tensor([0,1,2,3,4])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"a = a.type(torch.FloatTensor)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'torch.FloatTensor'"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.type()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"torch.float32"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a = torch.tensor([4, 1, 2, 3, 4])\n",
"b=a.type(torch.float32)\n",
"b.dtype"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"torch.Size([5])"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.size()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a.ndimension()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"a = torch.tensor([1,2,3,4,5])"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"a_col = a.view(5,1)"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([[1],\n",
" [2],\n",
" [3],\n",
" [4],\n",
" [5]])"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"a_col"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"b_col = a.view(-1,1)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([[1],\n",
" [2],\n",
" [3],\n",
" [4],\n",
" [5]])"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b_col"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"b_col.ndimension()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [],
"source": [
"numpy_array = np.array([0.0,1.0,2.0,3.0,4.0])"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"torch_tensor = torch.from_numpy(numpy_array)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [],
"source": [
"back_to_numpy = torch_tensor.numpy()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/eddie/.pyenv/versions/3.7.6/envs/pytorch/lib/python3.7/site-packages/pandas/compat/__init__.py:117: UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError.\n",
" warnings.warn(msg)\n"
]
}
],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"pandas_series = pd.Series([0.1,2,0.3,10.1])"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"pandas_to_torch = torch.from_numpy(pandas_series.values)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"this_tensor = torch.tensor([0,1,2,3])"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
"torch_to_list = this_tensor.tolist()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[0, 1, 2, 3]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"torch_to_list"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [],
"source": [
"new_tensor = torch.tensor([1,2,3,4,5])"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor(1)"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_tensor[0]"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_tensor[1].item()"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
"c = torch.tensor([20,1,2,3,4])"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [],
"source": [
"c[0] = 100"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([100, 1, 2, 3, 4])"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"c[4] = 0"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([100, 1, 2, 3, 0])"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"d = c[1:4]"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([1, 2, 3])"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"d"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [],
"source": [
"c[3:5] = torch.tensor([300,400])"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([100, 1, 2, 300, 400])"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"c"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
"u = torch.tensor([1, 2, 3, -1])\n",
"v = u + 1"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([2, 3, 4, 0])"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"v"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [],
"source": [
"u = torch.tensor([1,0])"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [],
"source": [
"v = torch.tensor([0,1])"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [],
"source": [
"w = u + v"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([1, 1])"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
"z = 2*w"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([2, 2])"
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"z"
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [],
"source": [
"u = torch.tensor([1,2])"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [],
"source": [
"v = torch.tensor([3,2])"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [],
"source": [
"z = u * v"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([3, 4])"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"z"
]
},
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"v = torch.tensor([3,1])"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [],
"source": [
"result = torch.dot(u,v)"
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor(5)"
]
},
"execution_count": 73,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"a = torch.tensor([1.0,-1.0,1.0,-1.0])"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [],
"source": [
"mean_a = a.mean()"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor(0.)"
]
},
"execution_count": 78,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mean_a"
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [],
"source": [
"x=torch.tensor([0,np.pi/2,np.pi])"
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [],
"source": [
"y=torch.sin(x)"
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([ 0.0000e+00, 1.0000e+00, -8.7423e-08])"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y"
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-4.371138828673793e-07"
]
},
"execution_count": 84,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y[2].item()*5"
]
},
{
"cell_type": "code",
"execution_count": 88,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"tensor([-2., -1., 0., 1., 2.])"
]
},
"execution_count": 88,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"torch.linspace(-2,2,steps=5)"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [],
"source": [
"x=torch.linspace(0,2*np.pi,100)"
]
},
{
"cell_type": "code",
"execution_count": 90,
"metadata": {},
"outputs": [],
"source": [
"y=torch.sin(x)"
]
},
{
"cell_type": "code",
"execution_count": 93,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1295f5d10>]"
]
},
"execution_count": 95,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAD4CAYAAADhNOGaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3dd3RUdf7/8ec7nYSQEBJaCgQIvRODggUVFCv2BVdFLNhd111X/equu7pF1111RSyIBbuuDdZGV7EgBKS3hFCSUBIINSEJSd6/PzL4i5iQhJnkTnk/zpmTuW3mNRzOvOdz7+d+PqKqGGOMCVxBTgcwxhjjLCsExhgT4KwQGGNMgLNCYIwxAc4KgTHGBLgQpwMcj/j4eO3cubPTMYwxxqcsWbJkl6omHL3eJwtB586dyczMdDqGMcb4FBHZUtt6OzVkjDEBzgqBMcYEOCsExhgT4KwQGGNMgLNCYIwxAc4jhUBEXhaRAhFZVcd2EZGnRSRbRFaIyOAa28aLSJbrMd4TeYwxxjScp1oErwKjj7H9HCDN9ZgIPAcgInHAQ8BQIAN4SERaeyiTMcaYBvDIfQSq+rWIdD7GLmOA17R6zOuFIhIrIh2AEcBsVS0CEJHZVBeUtz2RyzROcVkF2QUH2Vh4kL0lhymrqKKsopIWocG0bRVO2+gIuiRE0SGmhdNRjTEe1Fw3lCUCuTWW81zr6lr/CyIykerWBCkpKU2TMsAcKq9kYc5u5q8v4KsNhWzZXdKg4zrGRDCoU2uGd43n3H7tiY0Ma+Kkxpim5DN3FqvqFGAKQHp6us2m44Z1O/bz2vdb+PjHfErKq3/xD+vahsuHJNGtbTTd2rYkvmUY4SHBhIUEUVJeQcGBMnbuL2X9jgMs2bKHJVv28OmK7Tw0YxWndW/LZUOSOKt3O4KCxOmPZ4xppOYqBPlAco3lJNe6fKpPD9Vc/2UzZQo4izYV8e9Z6/lhUxHhIUFcMKAjFw7oSEZqHBGhwXUeFx0RSnREKF0TWjKsazwThqeiqqzetp/py/KZsXwbc9bupGtCFLeO6MaFAzsSGmwd0ozxFeKpqSpd1wg+UdW+tWw7D7gdOJfqC8NPq2qG62LxEuBIL6KlwJAj1wzqkp6erjbWUMNl7TzAY1+sY87aAtq1Cue64alckZ5M6yjPnNKprFI+W7mdyfOzWbfjAJ3bRPLQBX04vWdbj7y+McYzRGSJqqYfvd4jLQIReZvqX/bxIpJHdU+gUABVfR74jOoikA2UABNc24pE5BFgseulHq6vCJiGKz1cyX/mZvHCVxuJCgvhnrN7cN3wVFqE1f3r/3gEBwkXDOjI+f07MHdtAX//fC0TXl3M2X3a8acL+pAYaxeXjfFmHmsRNCdrEdRvWe5e7vnvcrIKDnJFehL3ndOLOA+1AOpTXlHF1G9ymDQ3GxF4eExfLh2ciIhdPzDGSXW1COxErp9RVZ77ciOXPPstB8sqeHXCCfzzsgHNVgQAwkKCuHVEN2bffSr9EmP4/X+X89t3l3Gg9HCzZTDGNJzP9Boy9TtYVsE9/13O56t2cF7/Dvzjkn60igh1LE9S60jeuvFEJs/P5qk5G/gxdy9Tr0knrV20Y5mMMb9kLQI/sXlXMWOe+YZZa3bywLm9eGbcIEeLwBHBQcKdZ6bx7k0nUVJeySXPfseCrEKnYxljarBC4AdW5u3j0ue+o6i4nNevz+DGU7t43fn4EzrH8fFtw0ls3YJrX1nMGwtrnSjJGOMAKwQ+7pusXYyd8j0RocG8f8swhnWNdzpSnRJjW/D+LcM4rXsCD368iv/MycIXOysY42+sEPiwL1ZtZ8Kri0iOi+TDW4fRNaGl05Hq1TI8hBevSefSwUk8OWcD/5y53oqBMQ6zi8U+atbqHdz+1o/0T4rhlQkZxLRw/npAQwUHCY9f1p+I0CCe+3IjpYcr+dP5vb3udJYxgcIKgQ+at24nt721lD6JMUy7LoNoL7go3FhBQcJfL+pLeEgwL3+7iZAg4f/O7WXFwBgHWCHwMQuyCrn59aX0bN+K13y0CBwhIvzx/F5UVlXx4oJNxEaGcdvp3ZyOZUzAsULgQ1bl7+Pm15fQJSGK16/3rdNBdRERHrqgD/sOHebxmeuJaRHKVSd2cjqWMQHFCoGPyC0qYcKri4lpEcq06zL8ag6AoCDh8csHcKC0gj9OX0V8yzBG9+3gdCxjAob1GvIBe0vKufaVRZQdrmTadRm0axXhdCSPCw0OYvKvBzMoOZa73l3Giry9TkcyJmBYIfByhyuruPmNJeQWHeJFPx+eISI0mCnXpBPfMpwbpmWyfd8hpyMZExCsEHi5v326loU5RTx6aT+GdmnjdJwmF98ynJfGn0BJeSXXv5pJcVmF05GM8XtWCLzYe5m5vPrdZm44OZVLBic5HafZ9GgfzaQrB7Fux37+8MEKu+HMmCZmhcBLLd26hwc/WsUpafHcd05Pp+M0u9N7tOX3Z/fg0xXbeeXbzU7HMcaveaQQiMhoEVkvItkicl8t258UkWWuxwYR2VtjW2WNbTM8kcfXFRWXc9ubS2kXE86kcYMICdD5f285rSujerfj75+tJXOzTVxnTFNx+xtGRIKBycA5QG9gnIj0rrmPqv5WVQeq6kBgEvBhjc2HjmxT1QvdzePrqqqU3723jN0Hy3nu10P8qptoY4kI/75iAEmtW3Drm0spOFDqdCRj/JInfmpmANmqmqOq5cA7wJhj7D8OeNsD7+uXXlyQw/z1hTx4fi/6JsY4HcdxrSJCef7qIewvPczd7y6nqsquFxjjaZ4oBIlAbo3lPNe6XxCRTkAqMK/G6ggRyRSRhSJyUV1vIiITXftlFhb658QmS7YU8c+Z6zm3X3uutrtrf9KzfSseuqAP32Tv4sUFOU7HMcbvNPfJ57HA+6paWWNdJ9dkylcCT4lI19oOVNUpqpququkJCQnNkbVZ7S89zJ1vLyMxtgWPXtrfBl87ytgTkjmnb3sen7me5bl2s5kxnuSJQpAPJNdYTnKtq81YjjotpKr5rr85wJfAIA9k8jl/nrGaHftLeWrsQK+YYtLbiAj/uKQfCdHh3PnOjxy0+wuM8RhPFILFQJqIpIpIGNVf9r/o/SMiPYHWwPc11rUWkXDX83hgOLDGA5l8ymcrt/Ph0nxuO70bg1NaOx3Ha8VGhvHUrwaSW1TCw/9b7XQcY/yG24VAVSuA24GZwFrgPVVdLSIPi0jNXkBjgXf053cH9QIyRWQ5MB94VFUDqhDs3F/K/320kgFJMdxxhg3BXJ+hXdpw02ldeS8zj3nrdjodxxi/IL5412Z6erpmZmY6HcNtqsr4VxazeFMRn955Ml18YKpJb1BWUcmFk76lqKSc2b89NaC72BrTGCKyxHVN9mcC804lL/HfJXl8vaGQ+8/taUWgEcJDgvn3FQPYU1zOQzPsFJEx7rJC4JAd+0p55JM1DE2N46qh1lW0sfomxnDHGWlMX7aNL1ZtdzqOMT7NCoEDVJUHPlrJ4coqHru0P0FB1lX0eNx6elf6JrbiwY9Xs6/ksNNxjPFZVggcMGP5NuauK+D3Z/Wgc3yU03F8VmhwEI9e0p89JeX8/bO1TscxxmdZIWhmRcXl/HnGagalxDJheKrTcXxe38QYbjylC+9m5vJd9i6n4xjjk6wQNLO/f7aWA6UVPHZpf4LtlJBH3DUyjU5tIrn/o5WUHq6s/wBjzM9YIWhG32/czftL8ph4ahe6+/GUk80tIjSYf1zSjy27S3hqTpbTcYzxOVYImklZRSUPfLSSlLhI7jgjzek4fmdY13guH5LE1AU5ZO084HQcY3yKFYJm8tyXG8nZVcwjF/WlRViw03H80n3n9CQqPIQHP15l01sa0whWCJrBlt3FPPvlRi4Y0JHTuvvfyKneok3LcO4d3ZMfNhXx8bK6xj00xhzNCkEzePh/awgNEh48r5fTUfze2BOSGZAcy98+Xce+Q3ZvgTENYYWgic1du5O56wq4a2R32rWKcDqO3wsKEv52UV+Kist4YtZ6p+MY4xOsEDSh0sOV/OV/a+jWtiXXDu/sdJyA0TcxhqtO7MTrC7ewbsd+p+MY4/WsEDShF7/OYWtRCX+5sA+hwfZP3ZzuHtWdVi1C+fOM1Xbh2Jh62LdTE9m29xCTv8zmvH4dGN4t3uk4ASc2MozfndWDhTlFfL5qh9NxjPFqHikEIjJaRNaLSLaI3FfL9mtFpFBElrkeN9TYNl5EslyP8Z7I4w0e+2IdqnD/uT2djhKwrsxIoWf7aP726Vq749iYY3C7EIhIMDAZOAfoDYwTkd617Pquqg50Paa6jo0DHgKGAhnAQyLi83M1Ltmyh+nLtjHx1C4ktY50Ok7ACg4S/nxhH/L3HuKFr3KcjmOM1/JEiyADyFbVHFUtB94BxjTw2LOB2apapKp7gNnAaA9kckxVlfLwJ2to1yqcm0/r6nScgHdilzac168Dz32VzY59pU7HMcYreaIQJAK5NZbzXOuOdqmIrBCR90UkuZHH+ozpy/NZnruXP5xdfZercd595/Skqgr+Zd1JjalVc10s/h/QWVX7U/2rf1pjX0BEJopIpohkFhYWejygJ5SUV/DY5+vpnxTDxYN8up75leS4SCYM78wHS/NYlb/P6TjGeB1PFIJ8ILnGcpJr3U9UdbeqlrkWpwJDGnpsjdeYoqrpqpqekOCdwzRMXbCJHftL+eP5vW3WMS9z6+ndaB0Zxl8/XWPdSY05iicKwWIgTURSRSQMGAvMqLmDiHSosXghcGQ6qZnAWSLS2nWR+CzXOp9TeKCMF77ayNl92nFC5zin45ijxLQI5bcj01iYU8SctQVOxzHGq7hdCFS1Arid6i/wtcB7qrpaRB4WkQtdu90pIqtFZDlwJ3Ct69gi4BGqi8li4GHXOp/z1JwNlFVUce9o6y7qrcZlpNA1IYp/fLaWw5VVTscxxmuILzaT09PTNTMz0+kYP8kuOMjZT33NVUNT+MuYvk7HMccwZ81Obngtk0cu6svVJ3ZyOo4xzUpElqhq+tHr7c5iD3j083VEhgZz55k24Yy3O7NXWzI6x/GfOVkUl1U4HccYr2CFwE2LNhUxZ+1Obh7RlTYtw52OY+ohItx3bk92HSzjxQV2k5kxYIXALarKo5+vpV2rcK4bnup0HNNAg1Nac07f9kz5OofCA2X1H2CMn7NC4IbZa3aydOte7hrZ3aaf9DH3nN2DsooqJs2zye6NsUJwnCqrlMdnrqdLQhSXD0lyOo5ppC4JLRmXkcxbP2xl865ip+MY4ygrBMfpg6V5ZBUc5J6zehBicw34pDvPSCM0OIgn52xwOooxjrJvsONQeriSp2ZvYEByLKP7tnc6jjlObVtFMGF4Z2Ys38ba7TaTmQlcVgiOwxsLt7BtXyn3nt0DERtKwpfddGpXosND+NdMG5DOBC4rBI10sKyC577cyMnd4hlmM4/5vJjIUG4e0ZW56wrI3OyTN7Ub4zYrBI30yjeb2F1czu/P7uF0FOMhE4alkhAdzj9nrrcB6UxAskLQCHtLypmyIIdRvdsxMDnW6TjGQ1qEBXPnGd1YtKmIBVm7nI5jTLOzQtAIL3ydw8GyCn53VnenoxgP+9UJKSTGtuBfs6xVYAKPFYIGKjhQyivfbuLCAR3p2b6V03GMh4WFBPGbkWmsyNvH7DU7nY5jTLOyQtBAz87fyOFK5a6R1hrwV5cMSiQ1PoonZm+gqspaBSZwWCFogO37DvHWoq1cNjiJ1Pgop+OYJhISHMRdI9NYt+MAn67c7nQcY5qNFYIGmDw/G1Xl9jO6OR3FNLEL+nekR7tonpyzgQqbvMYECI8UAhEZLSLrRSRbRO6rZfvdIrJGRFaIyFwR6VRjW6WILHM9Zhx9rNPy9pTw7uJcrkhPJjku0uk4pokFBQm/HZVGTmEx05dtczqOMc3C7UIgIsHAZOAcoDcwTkR6H7Xbj0C6qvYH3gf+WWPbIVUd6HpciJeZNDcbEbHWQAA5u097endoxdPzsqxVYAKCJ1oEGUC2quaoajnwDjCm5g6qOl9VS1yLCwGfGK5zy+5i3l+ax5UZKXSIaeF0HNNMRITfjurOlt0lfPhjvtNxjGlynigEiUBujeU817q6XA98XmM5QkQyRWShiFxU10EiMtG1X2ZhYaF7iRvo6bnZhAYLt47o2izvZ7zHyF5t6ZcYw6R5WTbRvfF7zXqxWESuAtKBx2us7uSaTPlK4CkRqfVbV1WnqGq6qqYnJCQ0edZNu4r56Mc8rhraibatIpr8/Yx3qW4VpJFbdIgPluQ5HceYJuWJQpAPJNdYTnKt+xkRGQk8AFyoqj/ND6iq+a6/OcCXwCAPZHLbpLlZhIUEcdNp1hoIVKf3aMuA5FgmzcumvMJaBcZ/eaIQLAbSRCRVRMKAscDPev+IyCDgBaqLQEGN9a1FJNz1PB4YDqzxQCa35BQe5ONl+Vx9YicSom1C+kAlIvx2ZBr5ew/xvrUKjB9zuxCoagVwOzATWAu8p6qrReRhETnSC+hxoCXw36O6ifYCMkVkOTAfeFRVHS8Ek+ZlExYSxMRTrTUQ6E7rnsDA5Fgmz7dWgfFfIZ54EVX9DPjsqHV/qvF8ZB3HfQf080QGT9lYeJDpy/K54ZQu1howiAh3jUzj2lcW8/6SPK4cmuJ0JGM8zu4sPsoz87IJDwlm4qldnI5ivIS1Coy/s0JQQ46rNXD1SZ2Ib2mtAVPtSKsgf+8hPlhq1wqM/7FCUMMzrmsDN55irQHzc0daBc9YDyLjh6wQuGzaVczHy/K5aqj1FDK/JCL8xloFxk9ZIXB5Zl42ocFBTDzNWgOmdiO6JzAgKYbJ87PtbmPjV6wQUD2m0MfL8vn10E60jba7iE3tjrQK8vYc4qOlNgaR8R9WCKiebyAkSLjZWgOmHqf3qB6D6Jn52TYyqfEbAV8IcotK+HBpPuMyUmxMIVMvEeHOM9PYWlTCxzZfgfETAV8Inv1yI0Ei3GxjCpkGGtmrLb07tGKytQqMnwjoQlA9hkwuvzohmfYx1howDXOkVbBpVzH/W2GtAuP7AroQPP/lRgBusfkGTCOd1bsdPdtH88y8bCqr1Ok4xrglYAvBjn2lvLs4l8vTk+kYa7OPmcYJChLuOCONjYXFfLZyu9NxjHFLwBaC57/aSJUqt9i1AXOczunbnrS2LXlmXjZV1iowPiwgC0HBgVLeXrSVSwYnkhwX6XQc46OCgoTbz+jG+p0HmLVmh9NxjDluAVkIXvw6h4oq5bbTuzkdxfi48/t3pEt8FE/PzUbVWgXGNwVcIdh1sIw3Fm5lzICOdGoT5XQc4+OCg4TbTu/Gmu37mbO2oP4DjPFCHikEIjJaRNaLSLaI3FfL9nARede1/QcR6Vxj2/2u9etF5GxP5DmWqQs2UVpRyW1nWGvAeMaYgR3p1CaSSfOyrFVgfJLbhUBEgoHJwDlAb2CciPQ+arfrgT2q2g14EnjMdWxvquc47gOMBp51vV6T2FNczuvfb+b8/h3pmtCyqd7GBJiQ4CBuHdGVFXn7+GpDodNxjGk0T7QIMoBsVc1R1XLgHWDMUfuMAaa5nr8PnCki4lr/jqqWqeomINv1ek3i5W83UVxeyR3WGjAedvGgJBJjW/D0XGsVmKaRXXCQCa8sYuvuEo+/ticKQSKQW2M5z7Wu1n1ck93vA9o08FgARGSiiGSKSGZh4fH96ioqLue8/h3o3i76uI43pi5hIUHcMqIrS7fu5buNu52OY/zQ5PnZLMwpIirc8ydNfOZisapOUdV0VU1PSEg4rtf428X9eHrsIA8nM6ba5elJtG8VwX/mZjkdxfiZTbuKf5pGt00TTKPriUKQDyTXWE5yrat1HxEJAWKA3Q081qOCg6QpX94EsPCQYG4+rQuLNhWxMMdaBcZznp1fPXHWDaekNsnre6IQLAbSRCRVRMKovvg746h9ZgDjXc8vA+Zp9YnUGcBYV6+iVCANWOSBTMY4YmxGCgnR4UyaZ60C4xm5RSV8+GM+Vw5NabKJs9wuBK5z/rcDM4G1wHuqulpEHhaRC127vQS0EZFs4G7gPtexq4H3gDXAF8BtqlrpbiZjnBIRGsxNp3bh2+zdLNlS5HQc4wee/XIjwSLcdGrTDYcjvtjDIT09XTMzM52OYUytSsorOOWx+fRNjGHadU3WCc4EgPy9hxjx+HzGnpDCIxf1dfv1RGSJqqYfvd5nLhYb4ysiw0K48dQufLWhkGW5e52OY3zYC19VD5V/cxMPlW+FwJgmcNWJnYiNDGWS9SAyx2nHvlLeWZTLZUOSSWziofKtEBjTBFqGh3DDyanMXVfAqvx9TscxPuiFr6uHyr+1GSbOskJgTBO5ZlhnWkWE8LS1CkwjFRwo5a0fmm+ofCsExjSRVhGhXHdyKrPW7GTNtv1OxzE+pLmHyrdCYEwTmjAslejwELuvwDTYroNlvL5wi2tU2+YZKt8KgTFNKCYylAnDO/P5qh2s33HA6TjGB7y4IIfyiqpmnTjLCoExTey6k1NpGR7C09YqMPUoKi7n9e+3cMGA5h0q3wqBMU0sNjKM8cM68dnK7WTttFaBqduLC3I4dLj5h8q3QmBMM7j+5C60CA3m6XnZTkcxXqqouJxp31VPnNWtbfMOlW+FwJhmEBcVxjUndeaTFdvILrBWgfmlqa7WwJ0OTJxlhcCYZnLjKanVrYK51iowP7fH1Ro4t18H0hyYOMsKgTHNpE3LcK45qTP/s1aBOcpL31RPo3vnGWmOvL8VAmOa0ZFWwSS7VmBc9hSX8+p3mzmvXwd6tHdmGl0rBMY0oyOtghnLt5FdcNDpOMYLTP0mh+LyCu4805nWAFghMKbZ/f9rBXZfQaArKi7n1W+rrw041RoANwuBiMSJyGwRyXL9bV3LPgNF5HsRWS0iK0TkVzW2vSoim0Rkmesx0J08xviCmtcK7L6CwDZ1QQ4lhyu5y8HWALjfIrgPmKuqacBc1/LRSoBrVLUPMBp4SkRia2y/R1UHuh7L3MxjjE+YeGoXIkOD+Y+1CgJWzfsGnOgpVJO7hWAMMM31fBpw0dE7qOoGVc1yPd8GFAAJbr6vMT4tLiqMa4d35tOV220MogD1oqs14MR9A0dztxC0U9Xtruc7gHbH2llEMoAwYGON1X9znTJ6UkTCj3HsRBHJFJHMwsJCN2Mb47wbT+lCVFgI/5m7wekoppntOljGq99u5gIvaA1AAwqBiMwRkVW1PMbU3E9VFdBjvE4H4HVggqpWuVbfD/QETgDigHvrOl5Vp6hquqqmJyRYg8L4vtjIMK4b3pnPVu6w+QoCzPNfbqSsopLfjHT22sAR9RYCVR2pqn1reUwHdrq+4I980RfU9hoi0gr4FHhAVRfWeO3tWq0MeAXI8MSHMsZXXH9yF6IjQnhqjrUKAsXO/aW8vnALFw9KatYRRo/F3VNDM4DxrufjgelH7yAiYcBHwGuq+v5R244UEaH6+sIqN/MY41NiIkO54eQuzFqzk5V5NrdxIHh2fjYVVcqdZzp/beAIdwvBo8AoEckCRrqWEZF0EZnq2ucK4FTg2lq6ib4pIiuBlUA88Fc38xjjc647uTOxkaH8e/Z6p6OYJrZt7yHeXpTL5UOSmm32sYYIcedgVd0NnFnL+kzgBtfzN4A36jj+DHfe3xh/EB0Rys2ndeXRz9eRubmI9M5xTkcyTeSZ+dkoyu1e0FOoJruz2BgvcM1JnYhvGc7jM9dT3e/C+Jstu4t5b3EuY09IIal1pNNxfsYKgTFeIDIshNtO78oPm4r4buNup+OYJvDUnCxCgqXZZx9rCCsExniJcRkpdIiJsFaBH9qw8wAfL8tn/Emdadsqwuk4v2CFwBgvEREazJ1nprEsdy9z1tbaE9v4qH/PWk9UWAg3n9bV6Si1skJgjBe5fEgSqfFR/GvmeiqrrFXgD5bn7mXm6p3ccEoqraPCnI5TKysExniRkOAg7h7VnfU7DzB9Wb7TcYwH/GvWelpHhnL9yalOR6mTFQJjvMx5/TrQu0MrnpyzgfKKqvoPMF7ru+xdLMjaxa0juhEdEep0nDpZITDGywQFCfeM7kFu0SHeWbzV6TjmOKkqj32xjo4xEVx9Uien4xyTFQJjvNCI7glkpMbx9NxsissqnI5jjsPnq3awPG8fd43qTkRosNNxjskKgTFeSES4d3RPdh0sY+qCTU7HMY1UUVnFv2auJ61tSy4dnOR0nHpZITDGSw3p1Jqz+7Rjytcb2XWwzOk4phHey8wjZ1cx95zdg+AgcTpOvawQGOPF/jC6J6UVVTbRvQ8pKa/gqTkbGJwSy6jex5yry2tYITDGi3VNaMmvTkjmrR+2smlXsdNxTANMXbCJggNlPHBeL6pH2Pd+VgiM8XJ3nZlGaHAQ/5ppw1R7u4IDpTz/1UZG92nPkE6+M4qsFQJjvFzbVhHceEoqn67cztKte5yOY47hqTlZlFdUce85PZ2O0ihuFQIRiROR2SKS5frbuo79KmtMSjOjxvpUEflBRLJF5F3XbGbGmKPcdFpXEqLD+esna2xAOi+VXXCAdxfnctWJnUiN955JZxrC3RbBfcBcVU0D5rqWa3NIVQe6HhfWWP8Y8KSqdgP2ANe7mccYvxQVHsLvRnVn6da9fLpyu9NxTC0e/Xwdka6BA32Nu4VgDDDN9Xwa1fMON4hrnuIzgCPzGDfqeGMCzeXpyfRsH81jX6yj9HCl03FMDd9k7WLO2gJuOb0rcV46sNyxuFsI2qnqkZ8nO4C6+kpFiEimiCwUkSNf9m2Avap65LbJPCDRzTzG+K3gIOHB83qTW3SIad9tdjqOcamorOKRT9aQHNeC64Z778Byx1LvnMUiMgdoX8umB2ouqKqKSF0nLzupar6IdAHmuSas39eYoCIyEZgIkJKS0phDjfEbJ6fFc3qPBJ6Zl81lQ5Jo0zLc6UgB793MXNbvPMBzvx7s9UNJ1KXeFoGqjlTVvrU8pgM7RaQDgOtvrbNpqGq+628O8CUwCNgNxIrIkWKUBNQ57q6qTlHVdFVNT0hIaMRHNMa/PHBeLw4druRfszY4HSXg7S89zL9nbSAjNY7RfWv7vewb3D01NAMY73o+HqMA1CgAAA9MSURBVJh+9A4i0lpEwl3P44HhwBqt7vowH7jsWMcbY36uW9toxg/rzDuLt7Iqv1ENa+Nhz8zLZk9JOX86v7fP3DxWG3cLwaPAKBHJAka6lhGRdBGZ6tqnF5ApIsup/uJ/VFXXuLbdC9wtItlUXzN4yc08xgSEO89MIy4yjD/PWG3dSR2ysfAgr3y7icsGJ9E3McbpOG6p9xrBsajqbuDMWtZnAje4nn8H9Kvj+Bwgw50MxgSimBah3HN2D+77cCUzlm9jzEDrZ9GcVJU/z1hNREgwfxjtWzeP1cbuLDbGR12enky/xBj+8dk6SsptzoLmNHP1ThZk7eK3o7qTEO37F+ytEBjjo4KDhD9f2Jsd+0uZNC/b6TgB41B5JY98soYe7aK5xstnHmsoKwTG+LAhneK4Ij2JF7/OIWvnAafjBITnvtpI/t5D/GVMH0KC/eMr1D8+hTEB7N7RPYkKD+GP01fZheMmtnlXMc9/tZELB3TkxC5tnI7jMVYIjPFxbVqGc+/onizMKWL6sm1Ox/FbqsqDH68iPDiIB87r5XQcj7JCYIwfGHtCMgOSY/nrp2vZd+iw03H80ozl2/gmexd/GN2Ddq0inI7jUVYIjPEDQUHC3y7qS1FxGY99sc7pOH5nb0k5j3yyhgHJsVw51D8uENdkhcAYP9E3MYYbTunCWz9s5Yec3U7H8SuPfbGOPSWH+fvFfX1iMvrGskJgjB/57cjuJMe14P4PV9pQ1R7yQ85u3l6Uy/Unp9Kno2/fQVwXKwTG+JEWYcH8/eJ+5Owq5hm7t8Bth8orufeDFaTERXLXSN+bcKahrBAY42dOSUvg0sFJPP/VRtZs2+90HJ/2xOz1bN5dwqOX9iMyzK0RebyaFQJj/NCD5/UiNjKM3/13OeUVVU7H8UlLt+7hpW828euhKQzrGu90nCZlhcAYP9Q6Kox/XNKPtdv388y8LKfj+JzSw5X84f0VtG8VwX3n+P6gcvWxQmCMnxrVux2XDE5k8pcbWZ671+k4PuXfs9aTXXCQv1/Sj+iIUKfjNDkrBMb4sYcu6ENCy3B+99/l1ouogb7buIup32ziqhNTGNGjrdNxmoUVAmP8WEyLUB67rD/ZBQftRrMG2HfoML9/bzmpbaJ44NzeTsdpNm4VAhGJE5HZIpLl+tu6ln1OF5FlNR6lInKRa9urIrKpxraB7uQxxvzSad0TGH9SJ175djPz19c6rbhx+dP0VRQcKOPJXw2kRZhvTkR/PNxtEdwHzFXVNGCua/lnVHW+qg5U1YHAGUAJMKvGLvcc2a6qy9zMY4ypxf3n9qJn+2h+/95yCg6UOh3HK338Yz7Tl23jzjPTGJAc63ScZuVuIRgDTHM9nwZcVM/+lwGfq2qJm+9rjGmEiNBgJo0bxMGyCn733nKqqmy46po2Fh7k/z5aSUbnOG4d0dXpOM3O3ULQTlW3u57vANrVs/9Y4O2j1v1NRFaIyJMiUuecbyIyUUQyRSSzsLDQjcjGBKa0dtH88fzeLMjaxZQFOU7H8Rqlhyu57c2lRIQG8/S4QX4z2Uxj1PuJRWSOiKyq5TGm5n5aPSNGnT8zRKQD1ZPYz6yx+n6gJ3ACEAfcW9fxqjpFVdNVNT0hIaG+2MaYWvx6aArn9evAP79Yx/cbbWA6gL/8bzXrdhzgiSsG0D7Gv4aXbqh6C4GqjlTVvrU8pgM7XV/wR77oj3Ul6grgI1X9abB0Vd2u1cqAV4AM9z6OMeZYRITHLutPanwUd7y9lB37Avt6wYdL83h7US63jOgaMF1Fa+NuG2gGMN71fDww/Rj7juOo00I1iohQfX1hlZt5jDH1aBkewgtXD6GkvJLb3loasENQrMjby30frmRoahy/G9Xd6TiOcrcQPAqMEpEsYKRrGRFJF5GpR3YSkc5AMvDVUce/KSIrgZVAPPBXN/MYYxqgW9to/nlZf5Zs2cPDn6x2Ok6zKzhQysTXlpDQMpxnfz04IK8L1OTWcHqquhs4s5b1mcANNZY3A4m17HeGO+9vjDl+5/fvyMr8fbzwVQ7dElpy7fBUpyM1i/KKKm59Yyl7D5XzwS3DaNOyzj4qAcN/x1U1xtTr3rN7sqmwmIc/WUOn+ChO9/Pz5KrK/R+uJHPLHiaNG+S3E800VmC3h4wJcEFBwlNjB9KrQyvueOtH1u844HSkJvXE7A18sDSPu0amccGAjk7H8RpWCIwJcJFhIUwdn05UeDDjX15EbpF/3u/51g9bmTQvm1+lJ/ObM/13trHjYYXAGEOHmBZMuy6DkvIKrn7pBwoPlDkdyaNmr9nJgx+vZESPBP56cV+qOyqaI6wQGGMA6Nm+Fa9MyGDn/jKueXkR+w4drv8gHzB/fQG3vbmUfokxTL5yMKEB3kOoNvYvYoz5yZBOrXnh6iFkFxxgvB8Ug683FHLT60tIa9eS164bSlS49Y+pjRUCY8zPnNo9gclXDmb1tn1c+eJCiorLnY50XL7N3sWNr2XSJT6KN64fSkyk/880drysEBhjfuGsPu158Zp0sgsOMnbK9z43dPWnK7Yz4ZXFdG4TxZs3DKV1VJjTkbyaFQJjTK1G9GjLK9eeQN6eQ1z23PdkFxx0OlKDvP79Zm5/eyn9k2J496YT7YaxBrBCYIyp07Bu8bx5w1BKyiu45Nlv+TZ7l9OR6lRZpTz2xTr+OH01Z/Zsy+vXDyU20loCDWGFwBhzTINSWvPRrcNpHxPB+JcX8cbCLVSPOu899hSXM+HVxTz35UbGZaTw/FVDAmqqSXdZITDG1Cs5LpIPbhnG8G7xPPjxKu54+0f2l3pHj6JV+fu44JlvWLhxN/+4pB//uKRfwA8i11j2r2WMaZDoiFBevvYE7jm7B5+v2sG5/1nAki17HMtzuLKKp+dmcfGz31JRqbx704mMy0hxLI8vs0JgjGmw4CDhttO78d5NJ6EKlz3/HX/8eBX7Spq3dbBm234umvwtT8zewDl9O/D5b05hUErrZs3gT8TbzvU1RHp6umZmZjodw5iAtr/0ME/M2sBr32+mdWQY947uySWDE5v0tMz2fYd4Ylb1wHFxUWH89aJ+jO7bvsnez9+IyBJVTf/FeisExhh3rN62jz9+vIqlW/eSEhfJzad15dIhiYSHeO5ibW5RCa99v5nXvt+CKlxzUiduP6Ob9QpqpCYpBCJyOfBnoBeQ4ZqQprb9RgP/AYKBqap6ZCazVOAdoA2wBLhaVeu9jdEKgTHepapKmbN2J5PnZ7M8bx8J0eFcNLAjYwYm0qdjq+Ma5K30cCXfbdzFWz9sZe66AgQYMzCRu0d1Jzku0vMfIgA0VSHoBVQBLwC/r60QiEgwsAEYBeQBi4FxqrpGRN4DPlTVd0TkeWC5qj5X3/taITDGO6kq32TvYtp3W/hqQwGHK5XU+ChO7BLH4JTWDEqJJTE28hddO1WV3cXlZO08yPod+1mQtYtvN+6i9HAV8S3DGHtCClcOTaFjbAuHPpl/qKsQuDtV5VrXix9rtwwgW1VzXPu+A4wRkbXAGcCVrv2mUd26qLcQGGO8k4hwSloCp6QlsLeknM9W7mDWmh18umI7by/K/Wm/6PAQ4lqGUaVK2eEqSsorOVhW8dP25LgW/Co9mRE92jKsWxuPnmYyv9QcQ/ElArk1lvOAoVSfDtqrqhU11v9iXuMjRGQiMBEgJcW6iBnj7WIjw7hyaPUv+aoqZWPhQVbm72PH/lIK9pexu7ic0CAhPDSI8JBgUuIiSWvXkm5tW9K+VYTNGdCM6i0EIjIHqO2y/AOqOt3zkWqnqlOAKVB9aqi53tcY476gICGtXTRp7aKdjmJqUW8hUNWRbr5HPpBcYznJtW43ECsiIa5WwZH1xhhjmlFz3FC2GEgTkVQRCQPGAjO0+ir1fOAy137jgWZrYRhjjKnmViEQkYtFJA84CfhURGa61ncUkc8AXL/2bwdmAmuB91R1tesl7gXuFpFsqq8ZvOROHmOMMY1nN5QZY0yAqKv7qI01ZIwxAc4KgTHGBDgrBMYYE+CsEBhjTIDzyYvFIlIIbDnOw+MB7514tX6+nh98/zP4en7w/c/g6/nBmc/QSVUTjl7pk4XAHSKSWdtVc1/h6/nB9z+Dr+cH3/8Mvp4fvOsz2KkhY4wJcFYIjDEmwAViIZjidAA3+Xp+8P3P4Ov5wfc/g6/nBy/6DAF3jcAYY8zPBWKLwBhjTA1WCIwxJsAFVCEQkdEisl5EskXkPqfzNIaIvCwiBSKyyuksx0NEkkVkvoisEZHVIvIbpzM1lohEiMgiEVnu+gx/cTrT8RCRYBH5UUQ+cTrL8RCRzSKyUkSWiYjPjT4pIrEi8r6IrBORtSJykuOZAuUagYgEAxuAUVRPi7kYGKeqaxwN1kAicipwEHhNVfs6naexRKQD0EFVl4pINLAEuMhX/v0BpHruxChVPSgiocA3wG9UdaHD0RpFRO4G0oFWqnq+03kaS0Q2A+mq6pM3lInINGCBqk51zdESqap7ncwUSC2CDCBbVXNUtRx4BxjjcKYGU9WvgSKncxwvVd2uqktdzw9QPTdFnXNUeyOtdtC1GOp6+NQvKRFJAs4DpjqdJRCJSAxwKq65V1S13OkiAIFVCBKB3BrLefjYF5G/EJHOwCDgB2eTNJ7rtMoyoACYraq+9hmeAv4AVDkdxA0KzBKRJSIy0ekwjZQKFAKvuE7PTRWRKKdDBVIhMF5ARFoCHwB3qep+p/M0lqpWqupAqufYzhARnzlNJyLnAwWqusTpLG46WVUHA+cAt7lOm/qKEGAw8JyqDgKKAcevVwZSIcgHkmssJ7nWmWbiOq/+AfCmqn7odB53uJrz84HRTmdphOHAha5z7O8AZ4jIG85GajxVzXf9LQA+ovq0r6/IA/JqtCTfp7owOCqQCsFiIE1EUl0XaMYCMxzOFDBcF1pfAtaq6hNO5zkeIpIgIrGu5y2o7niwztlUDaeq96tqkqp2pvr//zxVvcrhWI0iIlGuzga4TqmcBfhMTzpV3QHkikgP16ozAcc7TIQ4HaC5qGqFiNwOzASCgZdVdbXDsRpMRN4GRgDxIpIHPKSqLzmbqlGGA1cDK13n2AH+T1U/czBTY3UAprl6oAUB76mqT3bB9GHtgI+qf1cQArylql84G6nR7gDedP0gzQEmOJwncLqPGmOMqV0gnRoyxhhTCysExhgT4KwQGGNMgLNCYIwxAc4KgTHGBDgrBMYYE+CsEBhjTID7f1P4BRL+mhPMAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(x.numpy(),y.numpy())"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'1.4.0'"
]
},
"execution_count": 96,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"torch.__version__"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}