311 lines
8.5 KiB
Text
311 lines
8.5 KiB
Text
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Tensor operations"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"/home/lln/Documentos/recreate_pytorch/PyNorch\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"%cd .."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 1 - Basic operations"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"t1 =\n",
|
|
"tensor([[1.0, 2.0,],\n",
|
|
"[3.0, 4.0,]], device=\"cpu\", requires_grad=False)\n",
|
|
"t2 =\n",
|
|
"tensor([[4.0, 3.0,],\n",
|
|
"[2.0, 1.0,]], device=\"cpu\", requires_grad=False)\n",
|
|
"\n",
|
|
"Some basic operations\n",
|
|
"x1 + x2: \n",
|
|
"tensor([[5.0, 5.0,],\n",
|
|
"[5.0, 5.0,]], device=\"cpu\", requires_grad=False)\n",
|
|
"x1 - x2: \n",
|
|
"tensor([[-3.0, -1.0,],\n",
|
|
"[1.0, 3.0,]], device=\"cpu\", requires_grad=False)\n",
|
|
"x1 * x2: \n",
|
|
"tensor([[4.0, 6.0,],\n",
|
|
"[6.0, 4.0,]], device=\"cpu\", requires_grad=False)\n",
|
|
"x1 / x2: \n",
|
|
"tensor([[0.25, 0.6666666865348816,],\n",
|
|
"[1.5, 4.0,]], device=\"cpu\", requires_grad=False)\n",
|
|
"x1 / 10: \n",
|
|
"tensor([[0.10000000149011612, 0.20000000298023224,],\n",
|
|
"[0.30000001192092896, 0.4000000059604645,]], device=\"cpu\", requires_grad=False)\n",
|
|
"x1 @ x2: \n",
|
|
"tensor([[8.0, 5.0,],\n",
|
|
"[20.0, 13.0,]], device=\"cpu\", requires_grad=False)\n",
|
|
"x1 ** 2: \n",
|
|
"tensor([[1.0, 4.0,],\n",
|
|
"[9.0, 16.0,]], device=\"cpu\", requires_grad=False)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import norch\n",
|
|
"\n",
|
|
"x1 = norch.Tensor([[1, 2], \n",
|
|
" [3, 4]])\n",
|
|
"x2 = norch.Tensor([[4, 3], \n",
|
|
" [2, 1]])\n",
|
|
"\n",
|
|
"print(f\"t1 =\\n{x1}\")\n",
|
|
"print(f\"t2 =\\n{x2}\")\n",
|
|
"\n",
|
|
"print(\"\\nSome basic operations\")\n",
|
|
"print(f\"x1 + x2: \\n{x1 + x2}\")\n",
|
|
"print(f\"x1 - x2: \\n{x1 - x2}\")\n",
|
|
"print(f\"x1 * x2: \\n{x1 * x2}\")\n",
|
|
"print(f\"x1 / x2: \\n{x1 / x2}\")\n",
|
|
"print(f\"x1 / 10: \\n{x1 / 10}\")\n",
|
|
"print(f\"x1 @ x2: \\n{x1 @ x2}\")\n",
|
|
"print(f\"x1 ** 2: \\n{x1 ** 2}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"x1 reshape: \n",
|
|
"tensor([[1.0, 2.0, 3.0, 4.0,]], device=\"cpu\", requires_grad=False)\n",
|
|
"x1 transpose axes: \n",
|
|
"tensor([[1.0, 3.0,],\n",
|
|
"[2.0, 4.0,]], device=\"cpu\", requires_grad=False)\n",
|
|
"x1 transpose: \n",
|
|
"tensor([[1.0, 3.0,],\n",
|
|
"[2.0, 4.0,]], device=\"cpu\", requires_grad=False)\n",
|
|
"x1 zeros_like: \n",
|
|
"tensor([[0.0, 0.0,],\n",
|
|
"[0.0, 0.0,]], device=\"cpu\", requires_grad=None)\n",
|
|
"x1 ones_like: \n",
|
|
"tensor([[1.0, 1.0,],\n",
|
|
"[1.0, 1.0,]], device=\"cpu\", requires_grad=None)\n",
|
|
"sin(x1): \n",
|
|
"tensor([[0.8414709568023682, 0.9092974066734314,],\n",
|
|
"[0.14112000167369843, -0.756802499294281,]], device=\"cpu\", requires_grad=False)\n",
|
|
"cos(x1): \n",
|
|
"tensor([[0.5403022766113281, -0.416146844625473,],\n",
|
|
"[-0.9899924993515015, -0.6536436080932617,]], device=\"cpu\", requires_grad=False)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"print(f\"x1 reshape: \\n{x1.reshape([1, 4])}\")\n",
|
|
"print(f\"x1 transpose axes: \\n{x1.transpose(1, 0)}\")\n",
|
|
"print(f\"x1 transpose: \\n{x1.T}\")\n",
|
|
"\n",
|
|
"print(f\"x1 zeros_like: \\n{x1.zeros_like()}\")\n",
|
|
"print(f\"x1 ones_like: \\n{x1.ones_like()}\")\n",
|
|
"\n",
|
|
"print(f\"sin(x1): \\n{x1.sin()}\")\n",
|
|
"print(f\"cos(x1): \\n{x1.cos()}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 2 - Autograd"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"a.shape: [5, 3, 2]\n",
|
|
"b.shape: [5, 4, 3]\n",
|
|
"\n",
|
|
"\n",
|
|
"gradient a: tensor([[\n",
|
|
"[18.437000274658203, 18.437000274658203,],\n",
|
|
" [22.269001007080078, 22.269001007080078,],\n",
|
|
" [5.723199844360352, 5.723199844360352,]],\n",
|
|
"[\n",
|
|
"[18.437000274658203, 18.437000274658203,],\n",
|
|
" [22.269001007080078, 22.269001007080078,],\n",
|
|
" [5.723199844360352, 5.723199844360352,]],\n",
|
|
"[\n",
|
|
"[18.437000274658203, 18.437000274658203,],\n",
|
|
" [22.269001007080078, 22.269001007080078,],\n",
|
|
" [5.723199844360352, 5.723199844360352,]],\n",
|
|
"[\n",
|
|
"[18.437000274658203, 18.437000274658203,],\n",
|
|
" [22.269001007080078, 22.269001007080078,],\n",
|
|
" [5.723199844360352, 5.723199844360352,]],\n",
|
|
"[\n",
|
|
"[18.437000274658203, 18.437000274658203,],\n",
|
|
" [22.269001007080078, 22.269001007080078,],\n",
|
|
" [5.723199844360352, 5.723199844360352,]]], device=\"cpu\", requires_grad=None)\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"a = norch.Tensor([\n",
|
|
" [[1.234, 2.123], [3.635, 4.456], [5.678, 6.789]],\n",
|
|
" [[7.890, 8.901], [9.012, 1.234], [2.345, 3.456]],\n",
|
|
" [[4.567, 5.678], [6.789, 7.890], [8.901, 9.012]],\n",
|
|
" [[1.234, 2.345], [3.456, 4.567], [5.678, 6.789]],\n",
|
|
" [[7.890, 8.901], [9.012, 1.234], [2.345, 3.456]]\n",
|
|
" ], requires_grad=True)\n",
|
|
"\n",
|
|
"\n",
|
|
"b = norch.Tensor([[\n",
|
|
" [1.234, 2.123, 1.5],\n",
|
|
" [5.678, 6.789, 1.293],\n",
|
|
" [3.635, 4.456, 1.0202],\n",
|
|
" [7.890, 8.901, 1.91],\n",
|
|
" ],[\n",
|
|
" [1.234, 2.123, 1.5],\n",
|
|
" [5.678, 6.789, 1.293],\n",
|
|
" [3.635, 4.456, 1.0202],\n",
|
|
" [7.890, 8.901, 1.91],\n",
|
|
" ],[\n",
|
|
" [1.234, 2.123, 1.5],\n",
|
|
" [5.678, 6.789, 1.293],\n",
|
|
" [3.635, 4.456, 1.0202],\n",
|
|
" [7.890, 8.901, 1.91],\n",
|
|
" ],[\n",
|
|
" [1.234, 2.123, 1.5],\n",
|
|
" [5.678, 6.789, 1.293],\n",
|
|
" [3.635, 4.456, 1.0202],\n",
|
|
" [7.890, 8.901, 1.91],\n",
|
|
" ],[\n",
|
|
" [1.234, 2.123, 1.5],\n",
|
|
" [5.678, 6.789, 1.293],\n",
|
|
" [3.635, 4.456, 1.0202],\n",
|
|
" [7.890, 8.901, 1.91],\n",
|
|
" ]])\n",
|
|
"\n",
|
|
"print(f\"a.shape: {a.shape}\")\n",
|
|
"print(f\"b.shape: {b.shape}\\n\\n\")\n",
|
|
"\n",
|
|
"result = b @ a\n",
|
|
"result = result.sum()\n",
|
|
"result.backward()\n",
|
|
"\n",
|
|
"print(f\"gradient a: {a.grad}\")\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Modules"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import norch.nn as nn\n",
|
|
"\n",
|
|
"class MyModule(nn.Module):\n",
|
|
" def __init__(self):\n",
|
|
" super(MyModule, self).__init__()\n",
|
|
"\n",
|
|
" self.layer1 = nn.Linear(100, 1000)\n",
|
|
" self.sigmoid1 = nn.Sigmoid()\n",
|
|
" self.layer2 = nn.Linear(1000, 2)\n",
|
|
" self.sigmoid2 = nn.Sigmoid()\n",
|
|
"\n",
|
|
" def forward(self, x):\n",
|
|
" out = self.layer1(x)\n",
|
|
" out = self.sigmoid1(out)\n",
|
|
" out = self.layer2(out)\n",
|
|
" out = self.sigmoid2(out)\n",
|
|
"\n",
|
|
" return out"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"MyModule(\n",
|
|
" (layer1): Linear(input_dim=100, output_dim=1000, bias=True)\n",
|
|
" (sigmoid1): Sigmoid()\n",
|
|
" (layer2): Linear(input_dim=1000, output_dim=2, bias=True)\n",
|
|
" (sigmoid2): Sigmoid()\n",
|
|
")"
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"model = MyModule()\n",
|
|
"model"
|
|
]
|
|
}
|
|
],
|
|
"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.8.10"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|