{"id":8615,"date":"2019-10-25T11:39:56","date_gmt":"2019-10-25T02:39:56","guid":{"rendered":"http:\/\/www.gisdeveloper.co.kr\/?p=8615"},"modified":"2020-05-28T10:08:18","modified_gmt":"2020-05-28T01:08:18","slug":"pytorch%ec%9d%98-dataset%ea%b3%bc-dataloader%eb%a5%bc-%ec%9d%b4%ec%9a%a9%ed%95%98%ec%97%ac-%ed%95%99%ec%8a%b5-%ed%9a%a8%ec%9c%a8%ec%84%b1-%ed%96%a5%ec%83%81%ec%8b%9c%ed%82%a4%ea%b8%b0","status":"publish","type":"post","link":"http:\/\/www.gisdeveloper.co.kr\/?p=8615","title":{"rendered":"PyTorch\uc758 Dataset\uacfc DataLoader\ub97c \uc774\uc6a9\ud558\uc5ec \ud559\uc2b5 \ud6a8\uc728\uc131 \ud5a5\uc0c1\uc2dc\ud0a4\uae30"},"content":{"rendered":"<p>PyTorch\uc758 Dataset\uacfc DataLoader\ub97c \uc774\uc6a9\ud558\uba74 \ud559\uc2b5\uc744 \uc704\ud55c \ubc29\ub300\ud55c \ub370\uc774\ud130\ub97c \ubbf8\ub2c8\ubc30\uce58 \ub2e8\uc704\ub85c \ucc98\ub9ac\ud560 \uc218 \uc788\uace0, \ub370\uc774\ud130\ub97c \ubb34\uc791\uc704\ub85c \uc11e\uc74c\uc73c\ub85c\uc368 \ud559\uc2b5\uc758 \ud6a8\uc728\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\ub2e4. \ub610\ud55c \ub370\uc774\ud130\ub97c \uc5ec\ub7ec\uac1c\uc758 GPU\ub97c \uc0ac\uc6a9\ud574 \ubcd1\ub82c\ucc98\ub9ac\ub85c \ud559\uc2b5\ud560 \uc218\ub3c4 \uc788\ub2e4. \uc544\ub798\uc758 \ucf54\ub4dc\ub294 Dataset\uacfc DataLoader\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0 \ub9e4 \uc5d0\ud3ed\ub9c8\ub2e4 \ud559\uc2b5 \ub370\uc774\ud130 \uc804\uccb4\ub97c \uc785\ub825\ud574 \ud559\uc2b5\ud558\ub294 \ucf54\ub4dc\uc774\ub2e4.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport torch\r\nfrom torch import nn, optim\r\nfrom sklearn.datasets import load_iris\r\nfrom torch.utils.data import  TensorDataset, DataLoader\r\n \r\niris = load_iris()\r\n \r\nX = iris.data[:100]\r\ny = iris.target[:100]\r\n \r\nX = torch.tensor(X, dtype=torch.float32)\r\ny = torch.tensor(y, dtype=torch.float32)\r\n \r\nnet = nn.Linear(4, 1)\r\nloss_fn = nn.BCEWithLogitsLoss()\r\noptimizer = optim.SGD(net.parameters(), lr=0.25)\r\n \r\nlosses = []\r\n \r\nfor epoc in range(100):\r\n    batch_loss = 0.0\r\n\r\n    optimizer.zero_grad()\r\n    y_pred = net(X)\r\n    loss = loss_fn(y_pred.view_as(y), y)\r\n    loss.backward()\r\n    optimizer.step()\r\n    batch_loss += loss.item()\r\n    \r\n    losses.append(batch_loss)\r\n \r\nfrom matplotlib import pyplot as plt\r\nplt.plot(losses)\r\nplt.show()\r\n<\/pre>\n<p>\uc704\uc758 \ucf54\ub4dc\uc5d0 \ub300\ud55c \uc190\uc2e4 \uadf8\ub798\ud504\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/11\/loss_graph_nobatch.png\" alt=\"\" width=\"640\" height=\"479\" class=\"aligncenter size-full wp-image-8620\" \/><\/p>\n<p>\ub2e4\uc74c \ucf54\ub4dc\ub294 \uc704\uc758 \ucf54\ub4dc\uc5d0 \ub300\ud574\uc11c Dataset\uacfc DataLoader\ub97c \uc801\uc6a9\ud55c \ucf54\ub4dc\uc774\ub2e4. \uc55e \ucf54\ub4dc\uc758 \ud558\uc774\ud37c \ud30c\ub77c\uba54\ud130 \ub4f1\uc5d0 \ub300\ud55c \ubaa8\ub4e0 \uc870\uac74\uc740 \ub3d9\uc77c\ud558\uace0 \ub2e8\uc9c0 \ubbf8\ub2c8\ubc30\uce58\ub97c 10\ub85c \ud558\uc5ec \ud559\uc2b5\uc2dc\ud0a8\ub2e4. <\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">\r\nimport torch\r\nfrom torch import nn, optim\r\nfrom sklearn.datasets import load_iris\r\nfrom torch.utils.data import  TensorDataset, DataLoader\r\n\r\niris = load_iris()\r\n\r\nX = iris.data[:100]\r\ny = iris.target[:100]\r\n\r\nX = torch.tensor(X, dtype=torch.float32)\r\ny = torch.tensor(y, dtype=torch.float32)\r\n\r\nds = TensorDataset(X, y)\r\nloader = DataLoader(ds, batch_size=10, shuffle=True)\r\n\r\nnet = nn.Linear(4, 1)\r\nloss_fn = nn.BCEWithLogitsLoss()\r\noptimizer = optim.SGD(net.parameters(), lr=0.25)\r\n\r\nlosses = []\r\n\r\nfor epoc in range(100):\r\n    batch_loss = 0.0\r\n    for xx, yy in loader:\r\n        optimizer.zero_grad()\r\n        y_pred = net(xx)\r\n        loss = loss_fn(y_pred.view_as(yy), yy)\r\n        loss.backward()\r\n        optimizer.step()\r\n        batch_loss += loss.item()\r\n    losses.append(batch_loss)\r\n\r\nfrom matplotlib import pyplot as plt\r\nplt.plot(losses)\r\nplt.show()\r\n<\/pre>\n<p>\uc704\uc758 \ucf54\ub4dc\uc5d0 \ub300\ud55c \uc190\uc2e4 \uadf8\ub798\ud504\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gisdeveloper.co.kr\/wp-content\/uploads\/2019\/11\/loss_graph_batch.png\" alt=\"\" width=\"640\" height=\"479\" class=\"aligncenter size-full wp-image-8618\" \/><\/p>\n<p>\uc190\uc2e4 \uadf8\ub798\ud504\ub97c \ubcf4\uba74 \ubbf8\ub2c8\ubc30\uce58\ub97c \uc0ac\uc6a9\ud55c \uac83\uc774 \ub354 \uc548\uc815\uc801\uc73c\ub85c \ud559\uc2b5\uc774 \uc9c4\ud589 \ub418\ub294 \uac83\uc73c\ub85c \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>PyTorch\uc758 Dataset\uacfc DataLoader\ub97c \uc774\uc6a9\ud558\uba74 \ud559\uc2b5\uc744 \uc704\ud55c \ubc29\ub300\ud55c \ub370\uc774\ud130\ub97c \ubbf8\ub2c8\ubc30\uce58 \ub2e8\uc704\ub85c \ucc98\ub9ac\ud560 \uc218 \uc788\uace0, \ub370\uc774\ud130\ub97c \ubb34\uc791\uc704\ub85c \uc11e\uc74c\uc73c\ub85c\uc368 \ud559\uc2b5\uc758 \ud6a8\uc728\uc131\uc744 \ud5a5\uc0c1\uc2dc\ud0ac \uc218 \uc788\ub2e4. \ub610\ud55c \ub370\uc774\ud130\ub97c \uc5ec\ub7ec\uac1c\uc758 GPU\ub97c \uc0ac\uc6a9\ud574 \ubcd1\ub82c\ucc98\ub9ac\ub85c \ud559\uc2b5\ud560 \uc218\ub3c4 \uc788\ub2e4. \uc544\ub798\uc758 \ucf54\ub4dc\ub294 Dataset\uacfc DataLoader\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0 \ub9e4 \uc5d0\ud3ed\ub9c8\ub2e4 \ud559\uc2b5 \ub370\uc774\ud130 \uc804\uccb4\ub97c \uc785\ub825\ud574 \ud559\uc2b5\ud558\ub294 \ucf54\ub4dc\uc774\ub2e4. import torch from torch import nn, optim from sklearn.datasets import load_iris &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.gisdeveloper.co.kr\/?p=8615\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;PyTorch\uc758 Dataset\uacfc DataLoader\ub97c \uc774\uc6a9\ud558\uc5ec \ud559\uc2b5 \ud6a8\uc728\uc131 \ud5a5\uc0c1\uc2dc\ud0a4\uae30&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[132],"tags":[],"class_list":["post-8615","post","type-post","status-publish","format-standard","hentry","category-deep-machine-learning"],"_links":{"self":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8615","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8615"}],"version-history":[{"count":7,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8615\/revisions"}],"predecessor-version":[{"id":9368,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=\/wp\/v2\/posts\/8615\/revisions\/9368"}],"wp:attachment":[{"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8615"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8615"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.gisdeveloper.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}