Skip to content

Instantly share code, notes, and snippets.

@UmarZein
Last active August 10, 2023 00:55
Show Gist options
  • Save UmarZein/a1b46757637ebd7e1f34c7d2fb6d3651 to your computer and use it in GitHub Desktop.
Save UmarZein/a1b46757637ebd7e1f34c7d2fb6d3651 to your computer and use it in GitHub Desktop.
belajar pytorch
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "e4ddab22-91cd-4691-acb8-6a1a754d4a28",
"metadata": {},
"source": [
"[Video 3Blue1Brown tentang neural network](https://www.youtube.com/watch?v=aircAruvnKk&list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi)"
]
},
{
"cell_type": "markdown",
"id": "e0b529f4-0391-4bae-9d12-a0a348f27c57",
"metadata": {},
"source": [
"install `mathjax` biar rumus-rumusnya kelihatan keren"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "2fa9cd5a-f03f-4c64-a54a-ea0864869051",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: mathjax in /home/maru/anaconda3/lib/python3.9/site-packages (0.1.2)\n"
]
}
],
"source": [
"!pip install mathjax"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "a1ba92d3-ca63-4b7a-8790-65c1fa3f39a8",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import torch"
]
},
{
"cell_type": "markdown",
"id": "dad7f737-225c-4b6e-87bd-a3bca5419d75",
"metadata": {},
"source": [
"Kita akan coba membuat neural network yang memprediksi suatu target $y$, bila dikasih fitur-fitur $X$\n",
"\n",
"fungsi targetnya adalah:\n",
"$$\n",
"y=f(x_1,x_2,x_3)=x_1-x_2+2x_3\n",
"$$\n",
"\n",
"contoh:\n",
"$$\n",
"X=(3,4,5)\n",
"\\\\\\\n",
"y=3-4+2\\cdot5=9\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c8014f71-6167-4c55-91e4-974c1ac6142e",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"X=torch.Tensor([\n",
" [0,1,2],\n",
" [3,4,5],\n",
" [6,7,8],\n",
" [9,0,1]\n",
"])\n",
"y=torch.Tensor([\n",
" 3,\n",
" 9,\n",
" 15,\n",
" 11\n",
"])"
]
},
{
"cell_type": "markdown",
"id": "f6b400d8-29e7-45ef-b789-c08ed680e158",
"metadata": {
"tags": []
},
"source": [
"Untuk membuat neural network, kita harus mendefinisikan suatu kelas yang meng-inherit kelas `torch.nn.Module`"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "bf278291-8d46-40ac-af50-21586323baa3",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"from torch import nn\n",
"\n",
"class MyPredictor(nn.Module):\n",
" def __init__(self):\n",
" pass"
]
},
{
"cell_type": "markdown",
"id": "2d267126-0c58-41de-af59-82f19ebaca9d",
"metadata": {},
"source": [
"Jika ingin membuat suatu instansi dari kelas `MyPredictor` sekarang, akan ada beberapa masalah tersembunyi\n",
"___\n",
"Ini karena beberapa hal yang terkait dengan object-oriented programming dan _inheritance_. \n",
"Masalah ini tidak usah dipikirkan untuk sekarang.\n",
"Untuk mengatasinya, kita tulis `super().__init__()`"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "09f49ada-7e9c-479b-95c4-e87a392df4de",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"class MyPredictor(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()"
]
},
{
"cell_type": "markdown",
"id": "2e2086e1-defc-47ed-a7ab-579c9fb0973a",
"metadata": {},
"source": [
"Sekarang, kalo kita coba ulang, error sebelumnya hilang\n",
"___\n",
"Cara membuat instansi `MyPredictor`:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "1dcbbc3c-2e69-4a4a-85a3-cb0c0dc47d80",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"model=MyPredictor()"
]
},
{
"cell_type": "markdown",
"id": "de441692-d8ef-4763-a288-92672df03988",
"metadata": {},
"source": [
"Untuk langkah selanjutnya, kita akan tambahkan layer linear (terkadang disebut layer dense) yang input-nya 3-dimensi, dan outputnya 1-dimensi\n",
"\n",
"\n",
"Berikut ilustrasi layer tersebut dengan dimensi input 7 dan dimensi output 5\n",
"\n",
"<img src=\"https://www.baeldung.com/wp-content/uploads/sites/4/2022/07/fc.png\" alt=\"gambar layer linear\" width=\"400\"/>\n",
"\n",
"Layer ini dapat dijadikan perkalian matriks:\n",
"$$\n",
"Y=XW+B\n",
"$$\n",
"dimana dimensi $X$ adalah $N{\\times}I$, $W$ (\"weight\") adalah $I{\\times}O$, dan $B$ (\"bias\") adalah $N{\\times}O$.\n",
"$$\n",
"(N{\\times}O)=(N{\\times}I)(I{\\times}O)+(N{\\times}O)\\\\\\\n",
"(N{\\times}O)=(N{\\times}O)+(N{\\times}O)\\\\\\\n",
"(N{\\times}O)=(N{\\times}O)\n",
"$$\n",
"Perlu diingat bahwa multiplikasi matriks $A$ dan $B$ boleh jika dan hanya jika ukuran $A$ adalah $X{\\times}Y$ dan $B$ adalah $Y{\\times}Z$.\n",
"Dan hasilnya berukuran $X{\\times}Z$\n",
"\n",
"> \"parameter\" dari suatu model adalah \"weight\" dan/atau \"biases\" dalam model tersebut"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "c00bbbbe-e7db-47aa-9456-226f942f1e27",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"class MyPredictor(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()\n",
" \n",
" self.layer1=nn.Linear(3,1)"
]
},
{
"cell_type": "markdown",
"id": "9cf87675-3bf5-46fe-adb9-305c23fe3fbd",
"metadata": {},
"source": [
"Ok...tapi kalo begini doang, kita tidak bisa _menggunakan_ layer itu. Maka kita harus berkenalan dengan metode `forward`"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "be638d6a-2be2-4408-a2d6-afc41b104425",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"class MyPredictor(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()\n",
" \n",
" self.layer1=nn.Linear(3,1)\n",
" def forward(self, x):\n",
" return self.layer1(x)"
]
},
{
"cell_type": "markdown",
"id": "66ff7db9-b2ba-4c06-aeb4-1dd59cb1d1fe",
"metadata": {},
"source": [
"Penjelasan metode `forward` akan dikelaskan nanti, sekarang akan langsung kita pakai. \n",
"Saya percaya eksperimen yang hands-on dapat membantu menumbuhkan intuisi dibalik \n",
"banyak mekanisme kompleks. "
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "fbb84988-7f63-46be-bc3d-bf9d7fa7a7ef",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"X=torch.Tensor([\n",
" [0,1,2],\n",
" [3,4,5],\n",
" [6,7,8],\n",
" [9,0,1]\n",
"])\n",
"y=torch.Tensor([\n",
" 3,\n",
" 9,\n",
" 15,\n",
" 11\n",
"])"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "54bdabc8-f986-4ec1-8a86-ef029e1df77f",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"model=MyPredictor()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "ea29ae77-a630-4772-b039-515c74ea27c5",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"tensor([[-1.5086],\n",
" [-2.9871],\n",
" [-4.4656],\n",
" [ 1.6479]], grad_fn=<AddmmBackward0>)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model(X)"
]
},
{
"cell_type": "markdown",
"id": "d91caea5-e310-41f8-b733-0186aaee7875",
"metadata": {},
"source": [
"___\n",
"Saat kita memanggil `model` yaitu dengan `model(X)`, metode `forward` yang dipanggil.\n",
"Jika mau otak-atik, silahkan tambahkan `print(123)` di atas `return self.layer1(x)` di sel tadi.\n",
"\n",
"Sebelum lanjut, berikut merupakan notasi \"tradisional\" yang digunakan dalam metode `forward`:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "782ca938-2687-4e08-8433-c20af4e0b87c",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"class MyPredictor(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()\n",
" \n",
" self.layer1=nn.Linear(3,1)\n",
" def forward(self, x):\n",
" x = self.layer1(x)\n",
" return x"
]
},
{
"cell_type": "markdown",
"id": "f85eb575-2b7c-4c63-ad9d-5d716f28681a",
"metadata": {},
"source": [
"Bedanya cuman satu, yaitu sebelum di-output-kan, kita masukkan hasil layer ke variabel `x`. Mengapa? \n",
"Berikut perbedaannya jika menggunakan banyak layer:\n",
"\n",
"Opsi1:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "74a06e31-1129-4fc1-93a9-00bb940dda3c",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"class TwoLayeredPredictor(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()\n",
" \n",
" self.layer1=nn.Linear(3,2)\n",
" self.layer2=nn.Linear(2,1)\n",
" def forward(self, x):\n",
" return self.layer2(self.layer1(x))"
]
},
{
"cell_type": "markdown",
"id": "68b5b552-8721-4312-8a48-f7adec77c226",
"metadata": {},
"source": [
"Opsi kedua:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "a8361eb4-e916-4437-acd2-23b0cb913ec7",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"class TwoLayeredPredictor(nn.Module):\n",
" def __init__(self):\n",
" super().__init__()\n",
" \n",
" self.layer1=nn.Linear(3,2)\n",
" self.layer2=nn.Linear(2,1)\n",
" def forward(self, x):\n",
" x = self.layer1(x)\n",
" x = self.layer2(x)\n",
" return x"
]
},
{
"cell_type": "markdown",
"id": "d8b6bf51-49a3-4657-99ac-52b3bb59efbb",
"metadata": {},
"source": [
"Kalo menurut saya, opsi kedua lebih mudah dilihat, dan itulah notasi yang akan digunakan dalam notebook ini.\n",
"\n",
"Kita akan lanjut ke bagian melatih model. Pertama kita perlu _loss function_"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "608c1203-d3a4-405b-b38b-08c4b4e82a34",
"metadata": {},
"outputs": [],
"source": [
"loss_fn = nn.MSELoss() #MSE = mean-squared error"
]
},
{
"cell_type": "markdown",
"id": "639cfd02-9d37-4213-b831-9b7726886a52",
"metadata": {},
"source": [
"`loss_fn` adalah _loss function_, yaitu fungsi yang mengukur berapa _buruk_ prediksi kita $\\hat{y}$ terhadap target $y$"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "751dcf75-d824-4d78-9efe-7714c827ddb9",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor(0.)\n"
]
}
],
"source": [
"y=torch.Tensor([1])\n",
"pred=torch.Tensor([1])\n",
"print(loss_fn(y, pred))"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "98247bbd-96d1-42e3-92d8-d36bfdd2408c",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor(1.)\n"
]
}
],
"source": [
"y=torch.Tensor([2])\n",
"pred=torch.Tensor([3])\n",
"print(loss_fn(y, pred))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "e93cf7b7-9ead-4b03-8164-8d260470503c",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor(9.)\n"
]
}
],
"source": [
"y=torch.Tensor([2])\n",
"pred=torch.Tensor([-1])\n",
"print(loss_fn(y, pred))"
]
},
{
"cell_type": "markdown",
"id": "ce768973-8d61-4120-8367-75b7d8087753",
"metadata": {},
"source": [
"Yang perlu diketahui adalah, semakin jauh prediksi dari target, semakin tinggi _loss_-nya.\n",
"\n",
"> Note: dimensi `y` dan `pred` sebaiknya sama\n",
"\n",
"Dalam kasus kita, ada transformasi prediksi sebelum menggunakan fungsi loss. Karena dimensi `pred` dan `y` beda"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "298ba156-896f-4e31-82a4-eb9c852c9cb3",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"torch.Size([4, 1])\n",
"torch.Size([1])\n"
]
}
],
"source": [
"pred=model(X)\n",
"print(pred.shape)\n",
"print(y.shape)"
]
},
{
"cell_type": "markdown",
"id": "e34706e3-453c-44cf-825b-c0bd93694a3a",
"metadata": {},
"source": [
"Harus digepengin"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "8cad4cfe-21d9-4536-bef8-28fcabefd0e6",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"torch.Size([4])\n",
"torch.Size([1])\n"
]
}
],
"source": [
"pred=model(X)\n",
"pred=pred.flatten()\n",
"print(pred.shape)\n",
"print(y.shape)"
]
},
{
"cell_type": "markdown",
"id": "42c559db-d4fe-4d7f-a0b9-2b5f8a016fc5",
"metadata": {},
"source": [
"Selanjutnya, kita gunakan optimizer"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "dc86fac0-1949-4615-b4d2-b6a003232567",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"model = MyPredictor()\n",
"optimizer = torch.optim.AdamW(model.parameters(), lr=0.1)"
]
},
{
"cell_type": "markdown",
"id": "a29c90bc-a63d-41aa-a99e-1e265083e17d",
"metadata": {},
"source": [
"Tugasnya optimizer adalah untuk merubah parameter model untuk meminimalisir _loss_-nya. \n",
"Kita menggunakan optimizer `AdamW` karena terkenal dan bagus\n",
"\n",
"`lr` adalah _learning rate_, yaitu _berapa cepat paremeternya akan dirubah_"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "c60f4d44-8453-49a3-8944-140a44470332",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"X=torch.Tensor([\n",
" [0,1,2],\n",
" [3,4,5],\n",
" [6,7,8],\n",
" [9,0,1]\n",
"])\n",
"y=torch.Tensor([\n",
" 3,\n",
" 9,\n",
" 15,\n",
" 11\n",
"])"
]
},
{
"cell_type": "markdown",
"id": "08809bf3-878a-4ed8-8648-3feb868ec0f5",
"metadata": {},
"source": [
"Jalankan sel berikut berkali-kali, dan lihatlah _loss_-nya yang menurun"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "50c05b92-2ef6-4601-9085-53749e521560",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"y = tensor([ 3., 9., 15., 11.])\n",
"pred = tensor([2.1288, 5.7070, 9.2853, 2.7130], grad_fn=<ReshapeAliasBackward0>)\n",
"loss = 28.23394775390625\n"
]
}
],
"source": [
"model.train()\n",
"#mulai latihan\n",
"pred = model(X)\n",
"pred = pred.flatten()\n",
"loss = loss_fn(pred,y)\n",
"model.zero_grad()\n",
"loss.backward()\n",
"optimizer.step()\n",
"#selesai latihan\n",
"model.eval()\n",
"print(f\"{y = }\")\n",
"print(f\"{pred = }\")\n",
"print(\"loss = \",loss.item())\n"
]
},
{
"cell_type": "markdown",
"id": "15b7726e-9b91-4e1d-a274-4b3c2515a743",
"metadata": {},
"source": [
"___\n",
"Lima baris kode diatas yang harus dihafalkan adalah:\n",
"```python3\n",
"model.train()\n",
"...\n",
"model.zero_grad()\n",
"loss.backward()\n",
"optimizer.step()\n",
"...\n",
"model.eval()\n",
"```\n",
"\n",
"`model.train()` -> set model ke mode training\n",
"\n",
"`model.zero_grad()` -> reset gradien: gradien adalah perubahan terhadap parameter. kalo tidak direset, \n",
"gradien akan berakumulasi jadi nilai yang tinggi\n",
"\n",
"`loss.backward()` -> dapatkan gradien yang proporsional dengan loss. semakin tinggi loss, semakin tinggi gradien\n",
"\n",
"`optimizer.step()` -> terapkan _gradient descent_ terhadap parameter model\n",
"\n",
"`model.eval()` -> set model ke mode biasa (non-training)\n",
"___\n",
"Mari kita rubah menjadi kode yang menggunakan for/while loop"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "8a9c0541-c595-464d-8e7f-678c1d79eddc",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loss = 0.0002394318871665746\n"
]
}
],
"source": [
"epochs = 100#berapa kali kita mengiterasi dataset/X\n",
"model.train()\n",
"\n",
"for epoch in range(epochs):\n",
" pred = model(X)\n",
" pred = pred.flatten()\n",
" loss = loss_fn(pred,y)\n",
" model.zero_grad()\n",
" loss.backward()\n",
" optimizer.step()\n",
" \n",
"model.eval()\n",
"\n",
"print(\"loss = \",loss.item())"
]
},
{
"cell_type": "markdown",
"id": "4aef8905-e3da-495d-b21e-9a88e21d6e44",
"metadata": {
"tags": []
},
"source": [
"___\n",
"Dalam kaggle, setau saya, biasanya orang menggunakan 3-5 untuk menjauhi _overfitting_. Tapi ini bukan kompetisi.\n",
"\n",
"Kalau penasaran parameter modelnya apa, berikut caranya:"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "b97fe944-150f-4c7b-ad78-f593e589404d",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Parameter containing:\n",
"tensor([1.3448], requires_grad=True)\n",
"Parameter containing:\n",
"tensor([[1.0026, 0.3775, 0.6243]], requires_grad=True)\n"
]
}
],
"source": [
"print(model.layer1.bias)\n",
"print(model.layer1.weight)"
]
},
{
"cell_type": "markdown",
"id": "47fbcfaf-08fe-42a1-a8c5-060b2c9bca34",
"metadata": {
"tags": []
},
"source": [
"___\n",
"Bisa juga begini:"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "a37e8be5-bfa0-4815-bbb5-ee30664cdfa4",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"name = 'layer1.weight': Parameter containing:\n",
"tensor([[1.0026, 0.3775, 0.6243]], requires_grad=True)\n",
"name = 'layer1.bias': Parameter containing:\n",
"tensor([1.3448], requires_grad=True)\n"
]
}
],
"source": [
"for name, param in model.named_parameters():\n",
" print(f\"{name = }:\", param)"
]
},
{
"cell_type": "markdown",
"id": "6be00189-4af9-4449-8551-154bd30dc5f1",
"metadata": {},
"source": [
"___\n",
"## Data non-linear\n",
"\n",
"Data yang selama ini kita gunakan merupakan data linear, tidak ada pangkat-pangkatan atau kuadrat-kuadratan. \n",
"Jika datanya non-linear, kita harus menggunakan model yang non-linear juga (model yang lebih kompleks).\n",
"\n",
"Misalkan:\n",
"$$\n",
"y=x_1^2-x_2x_3\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "f0be7bc5-19e7-4122-90e1-521cfae85bb7",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"class OldPredictor(nn.Module):\n",
" def __init__(self):\n",
" super(OldPredictor, self).__init__()\n",
" self.layer1=nn.Linear(3,1)\n",
" def forward(self, x):\n",
" x = self.layer1(x)\n",
" return x"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "2fea5fb3-20dd-4a1c-a909-ac5d520a4ae3",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"class NewPredictor(nn.Module):\n",
" def __init__(self):\n",
" super(NewPredictor, self).__init__()\n",
" self.dim=10\n",
" self.n=15\n",
" self.first = nn.Linear(3,self.dim)\n",
" self.last = nn.Linear(self.dim,1)\n",
" self.mods=nn.ModuleList([\n",
" nn.ModuleList([\n",
" nn.Linear(self.dim,self.dim),\n",
" nn.LeakyReLU()\n",
" ]) for _ in range(self.n)\n",
" ])\n",
" \n",
" def forward(self, x):\n",
" x = self.first(x)\n",
" \n",
" for mod in self.mods:\n",
" old_=x\n",
" x=mod[0](x)\n",
" x=mod[1](x)\n",
" x+=old_\n",
" \n",
" x=self.last(x)\n",
" return x"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "95a59d78-43e3-4317-aa9b-b18811b8cb95",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"X=20*torch.randn(1000,3)\n",
"y=X[:,0]*X[:,0]-X[:,1]*X[:,2]"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "540a0b46-5efe-43b9-a878-b91556054d40",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loss = 653952.0\n"
]
}
],
"source": [
"old_model = OldPredictor()\n",
"old_optimizer = torch.optim.AdamW(old_model.parameters(),lr=0.01)\n",
"epochs = 100\n",
"\n",
"for epoch in range(epochs):\n",
" old_pred = old_model(X)\n",
" old_pred = old_pred.flatten()\n",
" loss = loss_fn(old_pred,y)\n",
" old_model.zero_grad()\n",
" loss.backward()\n",
" old_optimizer.step()\n",
" \n",
"print(\"loss = \",loss.item())"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "b91b5adc-b1b9-40af-9b2d-6e74331d9f29",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"loss = 35943.69140625\n"
]
}
],
"source": [
"new_model = NewPredictor()\n",
"new_optimizer = torch.optim.AdamW(new_model.parameters(),lr=0.01)\n",
"epochs = 100\n",
"\n",
"for epoch in range(epochs):\n",
" new_pred = new_model(X)\n",
" new_pred = new_pred.flatten()\n",
" loss = loss_fn(new_pred,y)\n",
" new_model.zero_grad()\n",
" loss.backward()\n",
" new_optimizer.step()\n",
" \n",
"print(\"loss = \",loss.item())"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "e94ee3f0-0062-4028-8e1f-984cebaee192",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'semakin dekat dengan garis +, semakin bagus')"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAGxCAYAAABmyWwBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACe0klEQVR4nOzdd3hUVfrA8e+dmWTSJwkhCaEk9BZCEykWUEpAEAuuiICIriKsJQsqi+uiomsEFuRnAXFXRRcEdhcbqARQwQaIFKkBFAg1oaWXSTJzfn/czDCTTBomBML7eZ48kJsz95475d53znnPOZpSSiGEEEIIUY8Z6roCQgghhBC1TQIeIYQQQtR7EvAIIYQQot6TgEcIIYQQ9Z4EPEIIIYSo9yTgEUIIIUS9JwGPEEIIIeo9CXiEEEIIUe9JwCOEEEKIek8CHnHZ0TSNRx99tMIyR44cQdM0Fi1aVOv16devH/369buox1blXKrq5MmTPP/88+zYseN37WfRokVomsaRI0dqpF7Cs5iYGO6///66rka9tX79ejRN43//+1+F5Wrj/V6Tn2tx6ZjqugJCXIxGjRqxceNGWrZsWddVuWROnjzJCy+8QExMDF26dKnr6ohKfPzxxwQFBdV1Na56Q4cOZePGjTRq1KiuqyLqmLTwiCuS2WymV69eNGzYsK6rIoSb/Px8ALp27VprAfnzzz9PTExMrey7vmnYsCG9evXCbDbXdVVEHZOApx47c+YMDz/8ME2bNsVsNtOwYUOuu+461q1b51Zu3bp19O/fn6CgIPz8/Ljuuuv46quv3Mo8//zzaJrGzp07+cMf/oDFYiE0NJTJkydTXFzM/v37GTx4MIGBgcTExDBr1iy3xxcUFDBlyhS6dOnifGzv3r359NNPKz0PpRTPPPMMXl5e/POf/wQ8d2k56rhnzx5GjRqFxWIhIiKCBx54gMzMzCodZ9asWURHR+Pj40O3bt348ssvPZbNysriySefpHnz5nh7e9O4cWMSEhLIzc2t9rn8+uuvjB8/ntatW+Pn50fjxo259dZb2bVrl/Nx69evp0ePHgCMHz8eTdPQNI3nn3++wuNt2rSJ6667Dh8fH6Kiopg2bRpFRUUeyy5fvpzevXvj7+9PQEAA8fHxbN++3a3M/fffT0BAAL/++iu33HILAQEBNG3alClTpmC1Wt3KHj9+nLvuuovAwECCg4MZPXo0W7ZsKfO6/fzzz9xzzz3ExMTg6+tLTEwMo0aNIiUlxW1/jq6Jb775hokTJxIWFkaDBg248847OXnyZIXPg8M///lP2rRpg9lspkOHDnz44Yfcf//9ZYKHF154gZ49exIaGkpQUBDdunXjnXfeofRayzExMQwbNoyPPvqIrl274uPjwwsvvOD8m2uXlt1u56WXXqJt27b4+voSHBxMXFwc//d//1elutem7du3M2zYMMLDwzGbzURFRTF06FCOHz/uLKOUYv78+XTp0gVfX19CQkK46667OHTokNu++vXrR2xsLBs3bqRPnz7O1/S9994D4PPPP6dbt274+fnRqVMnVq9e7fb4qnweypOVlUV8fDwRERH89NNPgOcuLUcdt2zZwg033ICfnx8tWrTglVdewW63V/l5W7hwodv7admyZW5/P3PmDJMmTaJDhw4EBAQQHh7OzTffzHfffVdmX1X9vJTXxe7pfbxgwQI6d+5MQEAAgYGBtGvXjmeeeabK51ffSJdWPTZ27Fi2bdvG3//+d9q0aUNGRgbbtm3j3LlzzjKLFy/mvvvu47bbbuP999/Hy8uLhQsXEh8fT1JSEv3793fb5913382YMWOYMGECa9euZdasWRQVFbFu3TomTZrEk08+yYcffsjUqVNp1aoVd955JwBWq5Xz58/z5JNP0rhxYwoLC1m3bh133nkn7733Hvfdd5/Hc7Bardx///18/vnnrFy5ksGDB1d63iNGjGDkyJE8+OCD7Nq1i2nTpgHw7rvvVvi4F154gRdeeIEHH3yQu+66i2PHjvHQQw9hs9lo27ats1xeXh59+/bl+PHjPPPMM8TFxbFnzx6mT5/Orl27WLduHZqmVflcTp48SYMGDXjllVdo2LAh58+f5/3336dnz55s376dtm3b0q1bN9577z3Gjx/Ps88+y9ChQwFo0qRJueezd+9e+vfvT0xMDIsWLcLPz4/58+fz4Ycflin78ssv8+yzzzr3X1hYyOzZs7nhhhv46aef6NChg7NsUVERw4cP58EHH2TKlCl8++23vPjii1gsFqZPnw5Abm4uN910E+fPn2fmzJm0atWK1atXM3LkyDLHPnLkCG3btuWee+4hNDSUU6dOsWDBAnr06MHevXsJCwtzK//HP/6RoUOH8uGHH3Ls2DGeeuopxowZw9dff13Ry8vbb7/NhAkTGDFiBK+++iqZmZm88MILZQI1R50mTJhAs2bNAD1wfOyxxzhx4oTzHB22bdvGvn37ePbZZ2nevDn+/v4ejz9r1iyef/55nn32WW688UaKiopITk4mIyOjwnrXttzcXAYOHEjz5s158803iYiIIDU1lW+++Ybs7GxnuQkTJrBo0SIef/xxZs6cyfnz55kxYwZ9+vThl19+ISIiwlk2NTWV8ePH8/TTT9OkSRNef/11HnjgAY4dO8b//vc/nnnmGSwWCzNmzOD222/n0KFDREVFAVX7PHhy/PhxbrnlFgoLC9m4cSMtWrSo8LxTU1MZPXo0U6ZM4bnnnuPjjz9m2rRpREVFlXs9cvXZZ5/xzTffMGPGDPz9/Zk/fz6jRo3CZDJx1113AXD+/HkAnnvuOSIjI8nJyeHjjz+mX79+fPXVV87ApTqfl6patmwZkyZN4rHHHuMf//gHBoOBX3/9lb179170Pq94StRbAQEBKiEhody/5+bmqtDQUHXrrbe6bbfZbKpz587q2muvdW577rnnFKDmzJnjVrZLly4KUB999JFzW1FRkWrYsKG68847yz12cXGxKioqUg8++KDq2rWr298A9ac//UmdO3dOXX/99apx48Zqx44dbmUOHz6sAPXee++VqeOsWbPcyk6aNEn5+Pgou91ebn3S09OVj4+PuuOOO9y2//DDDwpQffv2dW5LTExUBoNBbdmyxa3s//73PwWoL774olrn4um5KSwsVK1bt1Z//vOfndu3bNlS5pwrMnLkSOXr66tSU1Pd9t2uXTsFqMOHDyullDp69KgymUzqsccec3t8dna2ioyMVHfffbdz27hx4xSg/vOf/7iVveWWW1Tbtm2dv7/55psKUF9++aVbuQkTJlR6DsXFxSonJ0f5+/ur//u//3Nuf++99xSgJk2a5FZ+1qxZClCnTp0qd582m01FRkaqnj17um1PSUlRXl5eKjo6usLHFhUVqRkzZqgGDRq4vY+io6OV0WhU+/fvL/O46OhoNW7cOOfvw4YNU126dCn3OBUpKipy+/nb3/6moqOjy2yv6D1enp9//lkB6pNPPim3zMaNGz1+/o8dO6Z8fX3V008/7dzWt29fBaiff/7Zue3cuXPKaDQqX19fdeLECef2HTt2KEC99tpr5R67vM/DN998owD13//+V23fvl1FRUWp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/Oc/nft1RcnIJldLly5VJpNJjR8/XtlstgpHaZWuo6dRGp7Y7XaVmJiomjZtqry9vVVcXJxauXKlx1EROTk56tlnn1Vt27ZV3t7eymKxqE6dOqk///nPbiM3qnIu6enp6sEHH1Th4eHKz89PXX/99eq7777zeNylS5eqdu3aKS8vLwWo5557rsJz+uGHH1SvXr2U2WxWkZGR6qmnnlJvv/22x+fjk08+UTfddJMKCgpSZrNZRUdHq7vuukutW7fOWaa819vT63j06FF15513qoCAABUYGKhGjBihvvjiCwWoTz/91Fnu+PHjasSIESokJEQFBgaqwYMHq927d5cZ5eR4HUuPjnOM1vnmm28qfC6UUurtt99WrVq1Ut7e3qpNmzbq3XffVbfddluZkYLvvvuuatu2rTKbzapFixYqMTFRvfPOO2Wet+joaDV06FCPxypd/zlz5qg+ffqosLAw5e3trZo1a6YefPBBdeTIkUrrXdpzzz1X4cgyh7CwMNWrV68KyyQnJ6tRo0apli1bKl9fX2WxWNS1116rFi1aVKbsu+++q3r27Kn8/f2Vr6+vatmypbrvvvvcRmR5+uwrVf5zVfozUtXPg+soLQe73a4ef/xxZTAY1D//+U+lVPmjtDzVsfRIp/I46jx//nzVsmVL5eXlpdq1a6eWLFniVs5qtaonn3xSNW7cWPn4+Khu3bqpTz75xONxqvp5UUqp999/X7Vv3175+PioDh06qOXLl5fZ5/vvv69uuukmFRERoby9vVVUVJS6++671c6dOys9v/pKU6rUTFpCCFFLHPP9HD16tNrJ6LUhIyODNm3acPvtt/P222/XdXVq1N69e+nYsSOrVq1yztskriyX2+flSiddWkKIWvHGG28A0K5dO4qKivj666957bXXGDNmTJ1cvFNTU/n73//OTTfdRIMGDUhJSeHVV18lOzubJ5544pLXp7Z988039O7dW4KdK8Tl9nmpj6SFRwhRK959911effVVjhw5gtVqpVmzZtx77708++yzNZYMXx3p6encd999bNmyhfPnz+Pn50evXr2cy0gIUZcut89LfSQBjxBCCCHqPRmWLoQQQoh6TwIeIYQQQtR7EvAIIYQQot6TUVol7HY7J0+eJDAwsFYmthNCCCFEzVNKkZ2dTVRUlNskjaVJwFPi5MmTNG3atK6rIYQQQoiL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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"\n",
"sns.scatterplot(x=y.flatten(),y=new_model(X).flatten().detach().numpy(),marker='x')\n",
"sns.scatterplot(x=y.flatten(),y=old_model(X).flatten().detach().numpy(),marker='o')\n",
"sns.scatterplot(x=y.flatten(),y=y.flatten(),marker='+')\n",
"\n",
"plt.title(\"semakin dekat dengan garis +, semakin bagus\")"
]
},
{
"cell_type": "markdown",
"id": "69255ed6-fc8e-4b61-a381-aa0f0f851082",
"metadata": {},
"source": [
"Untuk mendapatkan model non-linear, kita memerlukan fungsi \"aktivasi\": berikut illustrasinya"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "d2a1bf2d-4df4-42d8-a286-80ae39d6dd9f",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'ReLU')"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"X=torch.arange(100)/50-1\n",
"sns.lineplot(x=X,y=nn.ReLU()(X))\n",
"plt.title(\"ReLU\")"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "9025be5e-8548-44d5-ab9f-20e5d3dac2fc",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'SiLU')"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"X=torch.arange(100)/10-7\n",
"sns.lineplot(x=X,y=nn.SiLU()(X))\n",
"plt.title(\"SiLU\")"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "98674d36-3b4c-4d3e-8aa5-1125922130be",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Tanh')"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"X=torch.arange(100)/25-2\n",
"sns.lineplot(x=X,y=nn.Tanh()(X))\n",
"plt.title(\"Tanh\")"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "861d69e6-3b65-43d1-b02d-1c0eaf6414d0",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"Text(0.5, 1.0, 'Sigmoid')"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGxCAYAAACwbLZkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABAOElEQVR4nO3deVxVdeL/8fdd4LKjgCAgKO6W5YJpbqOWkdbY5pRNm7Z98zeWo8y0WH1bnCabmpZp0eqbrdNiZk2blbRppZbikru5giwiqICsl3vP7w+QhkADAs7l3tfz8biP6z33HHifZri8+ZxzPsdiGIYhAAAAk1jNDgAAAHwbZQQAAJiKMgIAAExFGQEAAKaijAAAAFNRRgAAgKkoIwAAwFSUEQAAYCrKCAAAMBVlBIC+//57XXzxxUpMTJTD4VBMTIyGDx+uv/zlL7XrjB07VmPHjjUvZCPs27dPFotFL7/88q+ue99998lisbR+KAC/ym52AADm+vjjj3XBBRdo7NixevjhhxUbG6ucnBytXbtWb731lh599FFJ0vz5801O+utiY2O1atUq9ejRw+woAJrAwr1pAN82ZswYZWVlafv27bLb6/594na7ZbV65wDqfffdp/vvv198BALm885PGQCNVlBQoKioqHpFRFKdItLQYZoDBw7oD3/4g0JDQ9WhQwddeeWVWrNmTb1DJdOmTVNISIi2b9+uc889V8HBwYqNjdVDDz0kSVq9erVGjRql4OBg9e7dW6+88kq9LJs3b9aFF16ojh07KiAgQAMHDqy33okO03z88ccaOHCgHA6HkpKS9M9//rOJ/5UAtCbKCODjhg8fru+//14zZ87U999/L6fT2ajtSkpKNG7cOH311Vf6xz/+obffflsxMTGaMmVKg+s7nU5dcsklOv/88/X+++9r4sSJmjNnju68805NnTpV1113nd577z316dNH06ZNU3p6eu22O3bs0IgRI7RlyxY9+eSTevfdd3XKKado2rRpevjhh0+a84svvtCFF16o0NBQvfXWW3rkkUf09ttv66WXXmr8fyQArcsA4NPy8/ONUaNGGZIMSYafn58xYsQIY968eUZxcXHtemPGjDHGjBlT+/qZZ54xJBmffPJJna930003GZKMl156qXbZ1KlTDUnGkiVLapc5nU6jU6dOhiRj3bp1tcsLCgoMm81mpKam1i67/PLLDYfDYWRkZNT5XhMnTjSCgoKMo0ePGoZhGHv37q33vYcNG2bExcUZZWVltcuKioqMiIgIg49AwDMwMgL4uMjISH3zzTdas2aNHnroIV144YXauXOn5syZo9NOO035+fkNbrd8+XKFhoZqwoQJdZb/8Y9/bHB9i8Wi8847r/a13W5Xz549FRsbq0GDBtUuj4iIUHR0tPbv31+77Msvv9TZZ5+thISEOl9z2rRpKi0t1apVqxr8niUlJVqzZo0uueQSBQQE1C4PDQ3VpEmTTvBfBEBbo4wAkCQNGTJEt99+uxYvXqzs7GzNnj1b+/btO+FhkIKCAsXExNRb3tAySQoKCqpTCCTJ399fERER9db19/dXeXl5ne8VGxtbb724uLja9xty5MgRud1ude7cud57DS0DYA7KCIB6/Pz8dO+990qqPnG0IZGRkTp48GC95bm5uS2eJzIyUjk5OfWWZ2dnS5KioqIa3K5jx46yWCwNZmqNnACahzIC+LiGfslL0rZt2yT9PPrwS2PGjFFxcbE++eSTOsvfeuutlg0o6eyzz9aXX35ZWz6Oe/XVVxUUFKQzzzyzwe2Cg4M1dOhQvfvuu3VGWoqLi/Xhhx+2eE4AzcOkZ4CPO/fcc9WlSxdNmjRJffv2ldvt1oYNG/Too48qJCREf/7znxvcburUqXr88cd11VVX6YEHHlDPnj31ySef6LPPPpOkFp2f5N5779VHH32kcePG6Z577lFERIRef/11ffzxx3r44YcVHh5+wm3/9re/acKECTrnnHP0l7/8RS6XS//4xz8UHBysw4cPt1hGAM3HyAjg4+6++2517NhRjz/+uC644AJNnDhRTz75pMaPH68ffvhBp512WoPbBQcH68svv9TYsWN12223afLkycrIyKidqbVDhw4tlrFPnz5auXKl+vTpoxkzZuiiiy7S5s2b9dJLL+nWW2896bbnnHOO/vOf/6ioqEhTpkxRamqqJk+erOuuu67F8gH4bZiBFUCLevDBB3X33XcrIyNDXbp0MTsOgHaAwzQAmu3pp5+WJPXt21dOp1NffvmlnnzySV111VUUEQCNRhkB0GxBQUF6/PHHtW/fPlVUVCgxMVG333677r77brOjAWhHOEwDAABMxQmsAADAVJQRAABgKsoIAAAwVbs4gdXtdis7O1uhoaGyWCxmxwEAAI1g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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"X=torch.arange(100)/7-7\n",
"sns.lineplot(x=X,y=nn.Sigmoid()(X))\n",
"plt.title(\"Sigmoid\")"
]
},
{
"cell_type": "markdown",
"id": "142c728b-0b66-4b8b-89c3-83b2ba1bddb7",
"metadata": {},
"source": [
"## Transformasi tensor"
]
},
{
"cell_type": "code",
"execution_count": 48,
"id": "972f7c47-70b1-4102-a8f8-04c68f453396",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
" 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29])\n",
"torch.Size([30])\n"
]
}
],
"source": [
"X=torch.arange(30)\n",
"print(X)\n",
"print(X.shape)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "712ba864-8697-47b3-9858-5efe7c13ee35",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],\n",
" [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],\n",
" [20, 21, 22, 23, 24, 25, 26, 27, 28, 29]])\n",
"torch.Size([3, 10])\n"
]
}
],
"source": [
"x=X.view(3,10)\n",
"print(x)\n",
"print(x.shape)"
]
},
{
"cell_type": "code",
"execution_count": 50,
"id": "4ffd3b8e-af89-4ee4-ba04-e300c6024dbe",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[[ 0, 1, 2, 3, 4],\n",
" [ 5, 6, 7, 8, 9],\n",
" [10, 11, 12, 13, 14]],\n",
"\n",
" [[15, 16, 17, 18, 19],\n",
" [20, 21, 22, 23, 24],\n",
" [25, 26, 27, 28, 29]]])\n",
"torch.Size([2, 3, 5])\n"
]
}
],
"source": [
"x=X.view(2,3,5)\n",
"print(x)\n",
"print(x.shape)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "9b5b3ab0-c366-4765-a19c-891594ba1437",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
" 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]])\n",
"torch.Size([1, 30])\n"
]
}
],
"source": [
"x=X.unsqueeze(0)\n",
"print(x)\n",
"print(x.shape)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "7f763d2d-a717-4f6d-ae98-6ea4b8536eff",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[ 0],\n",
" [ 1],\n",
" [ 2],\n",
" [ 3],\n",
" [ 4],\n",
" [ 5],\n",
" [ 6],\n",
" [ 7],\n",
" [ 8],\n",
" [ 9],\n",
" [10],\n",
" [11],\n",
" [12],\n",
" [13],\n",
" [14],\n",
" [15],\n",
" [16],\n",
" [17],\n",
" [18],\n",
" [19],\n",
" [20],\n",
" [21],\n",
" [22],\n",
" [23],\n",
" [24],\n",
" [25],\n",
" [26],\n",
" [27],\n",
" [28],\n",
" [29]])\n",
"torch.Size([30, 1])\n"
]
}
],
"source": [
"x=X.unsqueeze(1)\n",
"print(x)\n",
"print(x.shape)"
]
},
{
"cell_type": "code",
"execution_count": 79,
"id": "6d3569a9-5b6d-48d6-8b94-0e0bea1fc548",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
" 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29],\n",
" [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
" 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29],\n",
" [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
" 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]])\n",
"torch.Size([3, 30])\n"
]
}
],
"source": [
"x=X.broadcast_to(3,30)\n",
"print(x)\n",
"print(x.shape)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"id": "35003505-5da9-4c79-83d1-e30538ee7c79",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[ 0, 1, 2, 3, 4, 5],\n",
" [ 6, 7, 8, 9, 10, 11],\n",
" [12, 13, 14, 15, 16, 17],\n",
" [18, 19, 20, 21, 22, 23],\n",
" [24, 25, 26, 27, 28, 29]])\n",
"torch.Size([5, 6])\n"
]
}
],
"source": [
"X2=X.view(5,6)\n",
"print(X2)\n",
"print(X2.shape)"
]
},
{
"cell_type": "code",
"execution_count": 67,
"id": "a3dca516-0213-4715-8a10-73401f948f68",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([ 0, 6, 12, 18, 24])\n",
"torch.Size([5])\n"
]
}
],
"source": [
"x2=X2[:,0]\n",
"print(x2)\n",
"print(x2.shape)"
]
},
{
"cell_type": "code",
"execution_count": 68,
"id": "3a0a0df1-e623-4ca8-b420-1e69f228d048",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([ 1, 7, 13, 19, 25])\n",
"torch.Size([5])\n"
]
}
],
"source": [
"x2=X2[:,1]\n",
"print(x2)\n",
"print(x2.shape)"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "8a91d598-f262-445c-857d-5af120f643d2",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([0, 1, 2, 3, 4, 5])\n",
"torch.Size([6])\n"
]
}
],
"source": [
"x2=X2[0,:]\n",
"print(x2)\n",
"print(x2.shape)"
]
},
{
"cell_type": "code",
"execution_count": 70,
"id": "b28f378b-82b8-447a-af43-630e0abfa6e1",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([12, 13, 14, 15, 16, 17])\n",
"torch.Size([6])\n"
]
}
],
"source": [
"x2=X2[2,:]\n",
"print(x2)\n",
"print(x2.shape)"
]
},
{
"cell_type": "code",
"execution_count": 76,
"id": "f9526daa-d597-4aee-8108-8b541c994d12",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[ 0, 1, 2],\n",
" [ 6, 7, 8],\n",
" [12, 13, 14]])\n",
"torch.Size([3, 3])\n"
]
}
],
"source": [
"x2=X2[:3,:3]#row 0,1,2, baris 0,1,2\n",
"print(x2)\n",
"print(x2.shape)"
]
},
{
"cell_type": "code",
"execution_count": 77,
"id": "d83d696b-23f9-4eac-8baf-ab61df04c288",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[ 0, 6, 12, 18, 24],\n",
" [ 1, 7, 13, 19, 25],\n",
" [ 2, 8, 14, 20, 26],\n",
" [ 3, 9, 15, 21, 27],\n",
" [ 4, 10, 16, 22, 28],\n",
" [ 5, 11, 17, 23, 29]])\n",
"torch.Size([6, 5])\n"
]
}
],
"source": [
"x2=X2.transpose(-1,-2)#tukar dimensi terakhir dengan dimensi 2 dari terakhir\n",
"print(x2)\n",
"print(x2.shape)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"id": "3c10cef6-771b-48af-9b6e-1617d90bc0e4",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[[ 0, 1, 2, 3, 4],\n",
" [ 5, 6, 7, 8, 9],\n",
" [10, 11, 12, 13, 14]],\n",
"\n",
" [[15, 16, 17, 18, 19],\n",
" [20, 21, 22, 23, 24],\n",
" [25, 26, 27, 28, 29]]])\n",
"torch.Size([2, 3, 5])\n"
]
}
],
"source": [
"X3=X.view(2,3,5)\n",
"print(X3)\n",
"print(X3.shape)"
]
},
{
"cell_type": "code",
"execution_count": 62,
"id": "c55774aa-9809-41d6-b243-85246f656db2",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[[ 0, 15],\n",
" [ 5, 20],\n",
" [10, 25]],\n",
"\n",
" [[ 1, 16],\n",
" [ 6, 21],\n",
" [11, 26]],\n",
"\n",
" [[ 2, 17],\n",
" [ 7, 22],\n",
" [12, 27]],\n",
"\n",
" [[ 3, 18],\n",
" [ 8, 23],\n",
" [13, 28]],\n",
"\n",
" [[ 4, 19],\n",
" [ 9, 24],\n",
" [14, 29]]])\n",
"torch.Size([5, 3, 2])\n"
]
}
],
"source": [
"x3=X3.permute(2,1,0)\n",
"print(x3)\n",
"print(x3.shape)"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "13a252df-ac01-463b-9115-05f0502a6569",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([[[ 0, 1, 2, 3, 4],\n",
" [15, 16, 17, 18, 19]],\n",
"\n",
" [[ 5, 6, 7, 8, 9],\n",
" [20, 21, 22, 23, 24]],\n",
"\n",
" [[10, 11, 12, 13, 14],\n",
" [25, 26, 27, 28, 29]]])\n",
"torch.Size([3, 2, 5])\n"
]
}
],
"source": [
"x3=X3.permute(1,0,2)\n",
"print(x3)\n",
"print(x3.shape)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "728272b1-cabe-4a64-b1a9-7a6f4d18e1f9",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
" 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29])\n",
"torch.Size([30])\n"
]
}
],
"source": [
"x3=X3.flatten()\n",
"print(x3)\n",
"print(x3.shape)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "60f183ed-7f31-4e7f-9676-d9c8d7c7324c",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.9.16"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment