{
"cells": [
{
"cell_type": "markdown",
"id": "f153e478",
"metadata": {},
"source": [
"# Нейронный сети"
]
},
{
"cell_type": "markdown",
"id": "52e87eb1",
"metadata": {},
"source": [
"## Поддержка GPU"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "48740e3f",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import torch\n",
"\n",
"\n",
"cpu = torch.device(\"cpu\")\n",
"gpu = torch.device(\"cuda:0\")\n",
"\n",
"A = np.random.rand(10000, 10000)\n",
"B = np.random.rand(10000, 10000)\n",
"\n",
"A_cpu = torch.Tensor(A)\n",
"B_cpu = torch.Tensor(B)\n",
"\n",
"A_gpu = A_cpu.to(gpu)\n",
"B_gpu = B_cpu.to(gpu)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "1e39869d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 2min 9s, sys: 16.5 s, total: 2min 25s\n",
"Wall time: 4.59 s\n"
]
}
],
"source": [
"%%time\n",
"C = A @ B"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "5ce7c496",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 35.5 s, sys: 3.57 s, total: 39.1 s\n",
"Wall time: 2.35 s\n"
]
}
],
"source": [
"%%time\n",
"C_cpu = A_cpu @ B_cpu"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "e1168cf5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 2.51 ms, sys: 0 ns, total: 2.51 ms\n",
"Wall time: 2.17 ms\n"
]
}
],
"source": [
"%%time\n",
"C_gpu = A_gpu @ B_gpu"
]
},
{
"cell_type": "markdown",
"id": "a44e641b",
"metadata": {},
"source": [
"## Граф вычислений"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "460e8ab7",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
],
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from matplotlib import pyplot as plt\n",
"plt.rcParams.update({\"font.size\": 16})\n",
"from torchviz import make_dot\n",
"\n",
"def x_plus_one(x):\n",
" sinx = torch.sin(x)\n",
" cosx = torch.cos(x)\n",
" one = torch.sqrt(sinx*sinx + cosx*cosx)\n",
"\n",
" expx = torch.exp(x)\n",
" x = torch.log(expx)\n",
" return x + one\n",
"\n",
"x = torch.tensor(0., requires_grad=True)\n",
"y = x_plus_one(x)\n",
"\n",
"make_dot(y)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "b14b402a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Text(0, 0.5, '$y$')"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"