{"id":2109,"date":"2023-04-28T13:36:25","date_gmt":"2023-04-28T04:36:25","guid":{"rendered":"https:\/\/edu.ujhb.org\/?p=2109"},"modified":"2023-04-28T13:36:25","modified_gmt":"2023-04-28T04:36:25","slug":"pytorch%e5%85%a5%e9%96%80%ef%bc%88%e6%97%a5%e6%9c%ac%e8%aa%9e%e7%89%88%ef%bc%89","status":"publish","type":"post","link":"https:\/\/edu.ujhb.org\/?p=2109","title":{"rendered":"PyTorch\u5165\u9580\uff08\u65e5\u672c\u8a9e\u7248\uff09"},"content":{"rendered":"\n<p>\u5bb9\u306e\u6982\u8981\u3092\u6559\u3048\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<p>\u3082\u3061\u308d\u3093\uff01PyTorch \u30d9\u30fc\u30b9\u306e IT \u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u63a8\u5968\u30b3\u30f3\u30c6\u30f3\u30c4 \u30a2\u30a6\u30c8\u30e9\u30a4\u30f3\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u306f\u3058\u3081\u306b 1.1 PyTorch \u306e\u7d39\u4ecb 1.2 \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u69cb\u6210 1.3 PyTorch \u3068\u4ed6\u306e\u6df1\u5c64\u5b66\u7fd2\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e\u6bd4\u8f03<\/li>\n\n\n\n<li>\u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u3068\u57fa\u672c\u7684\u306a\u6570\u5b66\u6f14\u7b97 2.1 \u30c6\u30f3\u30bd\u30eb\u306e\u4f5c\u6210 2.2 \u30c6\u30f3\u30bd\u30eb\u306e\u5f62\u72b6\u3068\u6b21\u5143 2.3 \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u30b9\u30e9\u30a4\u30b9 2.4 \u30c6\u30f3\u30bd\u30eb\u6f14\u7b97 2.5 \u7dda\u5f62\u4ee3\u6570\u6f14\u7b97 2.6 \u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30e1\u30ab\u30cb\u30ba\u30e0<\/li>\n\n\n\n<li>\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316 3.1 \u8a08\u7b97\u30b0\u30e9\u30d5\u3068\u81ea\u52d5\u5c0e\u51fa 3.2 \u30d0\u30c3\u30af\u30d7\u30ed\u30d1\u30b2\u30fc\u30b7\u30e7\u30f3\u3068\u52fe\u914d 3.3 \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u306e\u7d39\u4ecb 3.4 \u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u306e\u4f7f\u7528\u3068\u6bd4\u8f03<\/li>\n\n\n\n<li>\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u69cb\u7bc9\u3068\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 4.1 \u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u306e\u69cb\u7bc9 4.2 \u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3068\u640d\u5931\u95a2\u6570 4.3 \u521d\u671f\u5316\u306e\u91cd\u307f\u3068\u30d0\u30a4\u30a2\u30b9 4.4 \u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u691c\u8a3c\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8 4.5 \u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u691c\u8a3c 4.6 \u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u8abf\u6574\u3068\u6700\u9069\u5316<\/li>\n\n\n\n<li>\u4e00\u822c\u7684\u306a\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u7a2e\u985e\u3068\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 5.1 \u5168\u7d50\u5408\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af (FCNN) 5.2 \u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af (CNN) 5.3 \u30ea\u30ab\u30ec\u30f3\u30c8 \u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af (RNN) 5.4 \u9577\u77ed\u671f\u8a18\u61b6\u30cd\u30c3\u30c8\u30ef\u30fc\u30af (LSTM) 5.5 \u30c8\u30e9\u30f3\u30b9\u30d5\u30a9\u30fc\u30de\u30fc<\/li>\n\n\n\n<li>\u6df1\u5c64\u5b66\u7fd2\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f8b 6.1 \u753b\u50cf\u5206\u985e 6.2 \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u691c\u51fa 6.3 \u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 6.4 \u6a5f\u68b0\u7ffb\u8a33 6.5 \u97f3\u58f0\u8a8d\u8b58<\/li>\n\n\n\n<li>\u9ad8\u5ea6\u306a\u30c8\u30d4\u30c3\u30af 7.1 \u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 7.2 \u30e2\u30c7\u30eb\u306e\u91cf\u5b50\u5316\u3068\u5727\u7e2e 7.3 \u8ee2\u79fb\u5b66\u7fd2 7.4 \u6575\u5bfe\u7684\u751f\u6210\u30cd\u30c3\u30c8\u30ef\u30fc\u30af (GAN)<\/li>\n\n\n\n<li>\u307e\u3068\u3081 8.1 \u307e\u3068\u3081\u3068\u30ec\u30d3\u30e5\u30fc 8.2 PyTorch \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30ea\u30bd\u30fc\u30b9 8.3 \u6df1\u5c64\u5b66\u7fd2\u306e\u4eca\u5f8c\u306e\u5c55\u958b<\/li>\n<\/ol>\n\n\n\n<p>\u3053\u306e\u30a2\u30a6\u30c8\u30e9\u30a4\u30f3\u306f\u30cb\u30fc\u30ba\u306b\u5408\u308f\u305b\u3066\u8abf\u6574\u3067\u304d\u307e\u3059\u304c\u3001PyTorch \u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306e\u57fa\u672c\u7684\u306a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u306e\u7d39\u4ecb\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u3053\u306e\u4f1a\u8a71\u3067\u4f7f\u7528\u3055\u308c\u305f\u4ee5\u524d\u306e\u30e2\u30c7\u30eb\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u6700\u65b0\u306e\u30c7\u30d5\u30a9\u30eb\u30c8 \u30e2\u30c7\u30eb\u306b\u5207\u308a\u66ff\u3048\u307e\u3057\u305f<\/p>\n\n\n\n<p>PyTorch \u306f\u3001Facebook \u4eba\u5de5\u77e5\u80fd\u7814\u7a76\u6240 (FAIR) \u306b\u3088\u3063\u3066 2016 \u5e74\u306b\u6700\u521d\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305f\u30aa\u30fc\u30d7\u30f3 \u30bd\u30fc\u30b9\u306e\u6a5f\u68b0\u5b66\u7fd2\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002\u3053\u308c\u306f\u3001GPU \u3068 CPU \u3067\u30c7\u30a3\u30fc\u30d7 \u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u69cb\u7bc9\u3068\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u53ef\u80fd\u306b\u3059\u308b Python \u30d9\u30fc\u30b9\u306e\u79d1\u5b66\u8a08\u7b97\u30d1\u30c3\u30b1\u30fc\u30b8\u3067\u3059\u3002<\/p>\n\n\n\n<p>PyTorch \u306b\u306f\u6b21\u306e\u7279\u5fb4\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u52d5\u7684\u8a08\u7b97\u30b0\u30e9\u30d5: PyTorch \u306f\u3001\u52d5\u7684\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u4f7f\u7528\u3057\u307e\u3059, \u3053\u308c\u306f\u3001\u9759\u7684\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u4f7f\u7528\u3059\u308b\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u306f\u7570\u306a\u308a\u307e\u3059. \u3088\u308a\u9ad8\u3044\u67d4\u8edf\u6027\u3068\u53ef\u8aad\u6027\u3092\u63d0\u4f9b\u3067\u304d\u308b\u305f\u3081\u3001\u30e6\u30fc\u30b6\u30fc\u306f Python \u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3088\u308a\u76f4\u611f\u7684\u306b\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059.<\/li>\n\n\n\n<li>\u52b9\u7387\u7684\u306a GPU \u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30b7\u30e7\u30f3: PyTorch \u306e\u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u306f\u3001GPU \u3067\u52b9\u7387\u7684\u306b\u9ad8\u901f\u5316\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u63a8\u8ad6\u306b\u5927\u304d\u306a\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5e45\u5e83\u3044\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3: PyTorch \u306f\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0\u306e\u7814\u7a76\u3068\u5fdc\u7528\u306e\u305f\u3081\u306e\u91cd\u8981\u306a\u30c4\u30fc\u30eb\u306b\u306a\u308a\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc \u30d3\u30b8\u30e7\u30f3\u3001\u81ea\u7136\u8a00\u8a9e\u51e6\u7406\u3001\u97f3\u58f0\u8a8d\u8b58\u306a\u3069\u306e\u5206\u91ce\u3067\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u8c4a\u5bcc\u306a\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0: PyTorch \u306b\u306f\u3001TorchVision\u3001TorchText \u306a\u3069\u306e\u8c4a\u5bcc\u306a\u62e1\u5f35\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3059\u308b\u5de8\u5927\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u3042\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u6df1\u5c64\u5b66\u7fd2\u30bf\u30b9\u30af\u3092\u3088\u308a\u4fbf\u5229\u306b\u5b8c\u4e86\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u7fd2\u5f97\u3057\u3084\u3059\u3044: PyTorch \u306e\u69cb\u6587\u306f\u30b7\u30f3\u30d7\u30eb\u3067\u7406\u89e3\u3057\u3084\u3059\u304f\u3001\u4f7f\u3044\u3084\u3059\u304f\u3001\u7279\u306b Python \u8a00\u8a9e\u306b\u4e00\u5b9a\u306e\u57fa\u790e\u304c\u3042\u308b\u30e6\u30fc\u30b6\u30fc\u306b\u3068\u3063\u3066\u306f\u7c21\u5358\u3067\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4e00\u822c\u306b\u3001PyTorch \u306f\u5f37\u529b\u3067\u4f7f\u3044\u3084\u3059\u304f\u3001\u30ea\u30c3\u30c1\u306a\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u306e\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0\u306e\u4e3b\u6d41\u306e\u7814\u7a76\u304a\u3088\u3073\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e 1 \u3064\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>1 \/ 2<\/p>\n\n\n\n<p>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u8a2d\u5b9a\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u69cb\u6210\u306b\u306f\u3001\u6b21\u306e\u624b\u9806\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Python \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb: PyTorch \u306f Python \u30d9\u30fc\u30b9\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308b\u305f\u3081\u3001\u6700\u521d\u306b Python \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u306f\u3001Python \u306e\u516c\u5f0f Web \u30b5\u30a4\u30c8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3059\u308b\u304b\u3001\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0 \u30b7\u30b9\u30c6\u30e0\u306b\u4ed8\u5c5e\u306e\u30d1\u30c3\u30b1\u30fc\u30b8 \u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>PyTorch \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb: PyTorch \u306f pip \u3092\u4ecb\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u3001\u30bf\u30fc\u30df\u30ca\u30eb\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059: \u30b3\u30fc\u30c9\u306e\u30b3\u30d4\u30fc<code>pip install torch torchvision&nbsp;<\/code>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u3001PyTorch \u306f\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0 \u30b7\u30b9\u30c6\u30e0\u3068\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u74b0\u5883\u3092\u81ea\u52d5\u7684\u306b\u691c\u51fa\u3057\u3001\u5bfe\u5fdc\u3059\u308b\u30d7\u30ea\u30b3\u30f3\u30d1\u30a4\u30eb\u6e08\u307f\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u30c6\u30b9\u30c8: \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5b8c\u4e86\u3057\u305f\u3089\u3001Python \u30bf\u30fc\u30df\u30ca\u30eb\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3057\u3066\u3001PyTorch \u304c\u6b63\u5e38\u306b\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u304b\u3069\u3046\u304b\u3092\u30c6\u30b9\u30c8\u3067\u304d\u307e\u3059: goCopy code PyTorch \u306e<code>import torch print(torch.__version__)&nbsp;<\/code>\u30d0\u30fc\u30b8\u30e7\u30f3\u756a\u53f7\u304c\u51fa\u529b\u3055\u308c\u305f\u5834\u5408\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u6210\u529f\u3057\u305f\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>GPU \u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30b7\u30e7\u30f3 (\u30aa\u30d7\u30b7\u30e7\u30f3): \u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u306b NVIDIA GPU \u304c\u642d\u8f09\u3055\u308c\u3066\u304a\u308a\u3001GPU \u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001CUDA \u3068 cuDNN \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306f\u3001NVIDIA \u306e\u516c\u5f0f Web \u30b5\u30a4\u30c8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u304c\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u30d7\u30ed\u30bb\u30b9\u306f\u8907\u96d1\u3067\u3042\u308a\u3001\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u5f93\u3063\u3066\u64cd\u4f5c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>PyTorch \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u69cb\u6210\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3067\u306f\u3001\u6b21\u306e\u554f\u984c\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0 \u30b7\u30b9\u30c6\u30e0: PyTorch \u306f Windows\u3001Linux\u3001macOS \u306a\u3069\u306e\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0 \u30b7\u30b9\u30c6\u30e0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u3055\u307e\u3056\u307e\u306a\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0 \u30b7\u30b9\u30c6\u30e0\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb \u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>Python \u30d0\u30fc\u30b8\u30e7\u30f3: PyTorch \u306f Python 3.6 \u4ee5\u964d\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002\u6b63\u3057\u3044 Python \u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d1\u30c3\u30b1\u30fc\u30b8 \u30de\u30cd\u30fc\u30b8\u30e3\u30fc: pip \u3084 conda \u306a\u3069\u306e\u30d1\u30c3\u30b1\u30fc\u30b8 \u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3067\u304d\u307e\u3059\u3002\u81ea\u5206\u306e\u7fd2\u6163\u306b\u5fdc\u3058\u3066\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>CUDA \u30d0\u30fc\u30b8\u30e7\u30f3: GPU \u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5834\u5408\u306f\u3001\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b PyTorch \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5f93\u3063\u3066\u9069\u5207\u306a CUDA \u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305d\u3046\u3057\u306a\u3044\u3068\u3001\u975e\u4e92\u63db\u6027\u306e\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4e00\u822c\u306b\u3001PyTorch \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u69cb\u6210\u306f\u3001\u72ec\u81ea\u306e\u30aa\u30da\u30ec\u30fc\u30c6\u30a3\u30f3\u30b0 \u30b7\u30b9\u30c6\u30e0\u3001\u30cf\u30fc\u30c9\u30a6\u30a7\u30a2\u74b0\u5883\u3001\u304a\u3088\u3073\u4f7f\u7528\u8981\u4ef6\u306b\u5f93\u3063\u3066\u9078\u629e\u3057\u3066\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059.\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u6ce8\u610f\u6df1\u304f\u8aad\u307f\u3001\u6307\u793a\u306b\u53b3\u5bc6\u306b\u5f93\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u304c\u4ed6\u306e\u6df1\u5c64\u5b66\u7fd2\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u3069\u306e\u3088\u3046\u306b\u6bd4\u8f03\u3055\u308c\u308b\u304b\u3092\u8a73\u7d30\u306b\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u4ed6\u306e\u6df1\u5c64\u5b66\u7fd2\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u6bd4\u8f03\u3057\u3066\u3001PyTorch \u306b\u306f\u6b21\u306e\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u52d5\u7684\u8a08\u7b97\u30b0\u30e9\u30d5: PyTorch \u306f\u52d5\u7684\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u67d4\u8edf\u6027\u3068\u53ef\u8aad\u6027\u304c\u5411\u4e0a\u3057\u3001\u30e6\u30fc\u30b6\u30fc\u306f Python \u30b3\u30fc\u30c9\u3092\u4f7f\u7528\u3057\u3066\u3088\u308a\u76f4\u611f\u7684\u306b\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u5bfe\u7167\u7684\u306b\u3001TensorFlow \u306a\u3069\u306e\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u5b9f\u884c\u524d\u306b\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u9759\u7684\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u4f7f\u7528\u3057\u307e\u3059\u304c\u3001\u3053\u308c\u306f PyTorch \u307b\u3069\u67d4\u8edf\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/li>\n\n\n\n<li>Pythonic: PyTorch \u306e\u69cb\u6587\u306f\u3001\u7279\u306b Python \u8a00\u8a9e\u306b\u4e00\u5b9a\u306e\u57fa\u790e\u304c\u3042\u308b\u30e6\u30fc\u30b6\u30fc\u306b\u3068\u3063\u3066\u3001\u30b7\u30f3\u30d7\u30eb\u3067\u7406\u89e3\u3057\u3084\u3059\u304f\u3001\u4f7f\u3044\u3084\u3059\u3044\u3082\u306e\u3067\u3059\u3002\u5bfe\u7167\u7684\u306b\u3001TensorFlow \u306a\u3069\u306e\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306f\u3001\u5b66\u7fd2\u304c\u96e3\u3057\u3044\u9759\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u3068\u3088\u308a\u8907\u96d1\u306a\u6587\u6cd5\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u8fc5\u901f\u306a\u53cd\u5fa9\u3068\u5b9f\u9a13: PyTorch \u306e\u67d4\u8edf\u6027\u3068\u52d5\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u306b\u3088\u308a\u3001\u8fc5\u901f\u306a\u53cd\u5fa9\u3068\u5b9f\u9a13\u304c\u306f\u308b\u304b\u306b\u7c21\u5358\u306b\u306a\u308a\u307e\u3059\u3002\u5bfe\u7167\u7684\u306b\u3001\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u5b9f\u884c\u524d\u306b\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u53cd\u5fa9\u3068\u5b9f\u9a13\u306e\u901f\u5ea6\u306f\u6bd4\u8f03\u7684\u9045\u3044\u3067\u3059\u3002<\/li>\n\n\n\n<li>\u8aad\u307f\u3084\u3059\u3055\u3068\u30c7\u30d0\u30c3\u30b0\u3057\u3084\u3059\u3055: PyTorch \u306e\u52d5\u7684\u8a08\u7b97\u30b0\u30e9\u30d5\u306b\u3088\u308a\u3001\u30b3\u30fc\u30c9\u304c\u8aad\u307f\u3084\u3059\u304f\u306a\u308a\u3001\u30c7\u30d0\u30c3\u30b0\u304c\u5bb9\u6613\u306b\u306a\u308a\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306f\u3001PyTorch \u306e\u30c7\u30d0\u30c3\u30b0 \u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u30d0\u30b0\u3084\u554f\u984c\u3092\u3088\u308a\u8fc5\u901f\u306b\u898b\u3064\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0: PyTorch \u306b\u306f\u3001TorchVision\u3001TorchText \u306a\u3069\u306e\u8c4a\u5bcc\u306a\u62e1\u5f35\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3059\u308b\u5de8\u5927\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u3042\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u6df1\u5c64\u5b66\u7fd2\u30bf\u30b9\u30af\u3092\u3088\u308a\u4fbf\u5229\u306b\u5b8c\u4e86\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002\u6bd4\u8f03\u3059\u308b\u3068\u3001\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u306f\u6bd4\u8f03\u7684\u5c0f\u3055\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u52b9\u7387\u7684\u306a GPU \u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30b7\u30e7\u30f3: PyTorch \u306e\u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u306f\u3001GPU \u3067\u52b9\u7387\u7684\u306b\u9ad8\u901f\u5316\u3067\u304d\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u63a8\u8ad6\u306b\u5927\u304d\u306a\u5229\u70b9\u304c\u3042\u308a\u307e\u3059\u3002\u5bfe\u7167\u7684\u306b\u3001\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e GPU \u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3088\u308a\u8907\u96d1\u306a\u69cb\u6210\u3068\u8abf\u6574\u304c\u5fc5\u8981\u306b\u306a\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4e00\u822c\u7684\u306b\u3001PyTorch \u306e\u52d5\u7684\u8a08\u7b97\u30b0\u30e9\u30d5\u3001Pythonic \u69cb\u6587\u3001\u9ad8\u901f\u306a\u53cd\u5fa9\u3068\u5b9f\u9a13\u3001\u53ef\u8aad\u6027\u3068\u30c7\u30d0\u30c3\u30b0\u3001\u5de8\u5927\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u3001\u304a\u3088\u3073\u52b9\u7387\u7684\u306a GPU \u30a2\u30af\u30bb\u30e9\u30ec\u30fc\u30b7\u30e7\u30f3\u306b\u3088\u308a\u3001\u6df1\u5c64\u5b66\u7fd2\u306e\u7814\u7a76\u3068\u5fdc\u7528\u306e\u4e3b\u6d41\u3068\u306a\u3063\u3066\u3044\u308b\u30d5\u30ec\u30fc\u30e0\u306e 1 \u3064\u3067\u3059\u3002\u540c\u6642\u306b\u3001\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u3082\u72ec\u81ea\u306e\u5229\u70b9\u304c\u3042\u308a\u3001\u7279\u5b9a\u306e\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u3066\u9078\u629e\u3057\u3066\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u30c6\u30f3\u30bd\u30eb\u3092\u4f5c\u6210\u3059\u308b\u305f\u3081\u306e PyTorch \u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u3068\u57fa\u672c\u7684\u306a\u6570\u5b66\u7684\u6f14\u7b97\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u306e\u30c6\u30f3\u30bd\u30eb\u306f\u3001NumPy \u306e\u914d\u5217\u306b\u4f3c\u305f\u591a\u6b21\u5143\u914d\u5217\u3067\u3059\u3002Tensor \u306f\u3001\u8db3\u3057\u7b97\u3001\u5f15\u304d\u7b97\u3001\u639b\u3051\u7b97\u3001\u5272\u308a\u7b97\u3001\u884c\u5217\u306e\u639b\u3051\u7b97\u3001\u7dda\u5f62\u4ee3\u6570\u6f14\u7b97\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u6570\u5b66\u6f14\u7b97\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u6df1\u5c64\u5b66\u7fd2\u306e\u8a08\u7b97\u306e\u57fa\u790e\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30c6\u30f3\u30bd\u30eb\u306e\u4f5c\u6210: PyTorch \u306f torch.tensor() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002\u30c6\u30f3\u30bd\u30eb\u3092\u4f5c\u6210\u3059\u308b\u3044\u304f\u3064\u304b\u306e\u65b9\u6cd5\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Python \u30ea\u30b9\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u3092\u4f5c\u6210\u3059\u308b: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) print(x)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[1, 2], [3, 4]])<\/code><\/li>\n\n\n\n<li>NumPy \u914d\u5217\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u3092\u4f5c\u6210\u3059\u308b: luaCopy \u30b3\u30fc\u30c9<code>import numpy as np import torch x = np.array([[1, 2], [3, 4]]) y = torch.tensor(x) print(y)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[1, 2], [3, 4]])<\/code><\/li>\n\n\n\n<li>torch.zeros() \u304a\u3088\u3073 torch.ones() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u3092\u4f5c\u6210\u3057\u307e\u3059: scss\u30b3\u30fc\u30c9<code>import torch x = torch.zeros((2, 3)) y = torch.ones((3, 4)) print(x) print(y)&nbsp;<\/code>\u51fa\u529b\u306e\u30b3\u30d4\u30fc: lua\u30b3\u30fc\u30c9\u306e\u30b3\u30d4\u30fc<code>tensor([[0., 0., 0.], [0., 0., 0.]]) tensor([[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]])<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u57fa\u672c\u7684\u306a\u6570\u5b66\u6f14\u7b97: PyTorch \u306e\u30c6\u30f3\u30bd\u30eb\u306f\u3001\u52a0\u7b97\u3001\u6e1b\u7b97\u3001\u4e57\u7b97\u3068\u9664\u7b97\u3001\u884c\u5217\u4e57\u7b97\u3001\u7dda\u5f62\u4ee3\u6570\u6f14\u7b97\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u57fa\u672c\u7684\u306a\u6570\u5b66\u6f14\u7b97\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u57fa\u672c\u7684\u306a\u6570\u5b66\u6f14\u7b97\u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c6\u30f3\u30bd\u30eb\u52a0\u7b97: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = torch.tensor([[2, 2], [2, 2]]) z = x + y print(z)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[3, 4], [5, 6]])<\/code><\/li>\n\n\n\n<li>\u30c6\u30f3\u30bd\u30eb\u4e57\u7b97: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = torch.tensor([[2], [2]]) z = x.mm(y) print(z)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[ 6], [14]])<\/code><\/li>\n\n\n\n<li>\u30c6\u30f3\u30bd\u30eb\u8ee2\u7f6e: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) z = x.t() print(z)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[1, 3], [2, 4]])<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306f\u3001PyTorch \u3067\u306e\u30c6\u30f3\u30bd\u30eb\u306e\u4f5c\u6210\u3068\u57fa\u672c\u7684\u306a\u6570\u5b66\u6f14\u7b97\u306e\u4f8b\u3067\u3059. PyTorch \u306f\u3001\u5e73\u65b9\u3001\u5e73\u65b9\u6839\u3001\u6307\u6570\u3001\u5bfe\u6570\u306a\u3069\u3001\u3088\u308a\u591a\u304f\u306e\u6570\u5b66\u6f14\u7b97\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059. \u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u3068\u57fa\u672c\u7684\u306a\u6570\u5b66\u7684\u6f14\u7b97\u306e\u5f62\u72b6\u3068\u6b21\u5143\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u306e\u30c6\u30f3\u30bd\u30eb\u306f\u3001\u5f62\u72b6\u3068\u6b21\u5143\u306e 2 \u3064\u306e\u91cd\u8981\u306a\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u6301\u3064\u591a\u6b21\u5143\u914d\u5217\u3067\u3059\u3002shape \u306f\u3001\u5404\u6b21\u5143\u306e\u30c6\u30f3\u30bd\u30eb\u306e\u30b5\u30a4\u30ba\u3092\u8868\u3059\u6574\u6570\u306e\u30bf\u30d7\u30eb\u3067\u3059\u3002\u3053\u3053\u3067\u3001dimension \u306f\u30c6\u30f3\u30bd\u30eb\u306e\u8ef8\u306e\u6570\u3067\u3059\u3002\u30c6\u30f3\u30bd\u30eb\u306e\u5f62\u72b6\u3068\u6b21\u5143\u306f\u3001\u6df1\u5c64\u5b66\u7fd2\u30bf\u30b9\u30af\u306b\u3068\u3063\u3066\u975e\u5e38\u306b\u91cd\u8981\u3067\u3042\u308a\u3001\u5165\u529b\u30c7\u30fc\u30bf\u3068\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u5f62\u72b6\u3068\u6b21\u5143\u3092\u8a18\u8ff0\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30c6\u30f3\u30bd\u30eb\u306e\u5f62\u72b6: \u30c6\u30f3\u30bd\u30eb\u306e\u5f62\u72b6\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4f7f\u7528\u3057\u3066\u3001\u305d\u306e\u5f62\u72b6\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u30c6\u30f3\u30bd\u30eb\u306e\u5f62\u72b6\u3092\u53d6\u5f97\u3059\u308b\u3044\u304f\u3064\u304b\u306e\u65b9\u6cd5\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>shape \u5c5e\u6027\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u5f62\u72b6\u3092\u53d6\u5f97\u3057\u307e\u3059: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) print(x.shape)&nbsp;<\/code>\u51fa\u529b: cssCopy \u30b3\u30fc\u30c9<code>torch.Size([2, 2])<\/code><\/li>\n\n\n\n<li>size() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u5f62\u72b6\u3092\u53d6\u5f97\u3057\u307e\u3059: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) print(x.size())&nbsp;<\/code>\u51fa\u529b: cssCopy \u30b3\u30fc\u30c9<code>torch.Size([2, 2])<\/code><\/li>\n\n\n\n<li>numpy() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u5f62\u72b6\u3092\u53d6\u5f97: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) print(x.numpy().shape)&nbsp;<\/code>\u51fa\u529b: scssCopy \u30b3\u30fc\u30c9<code>(2, 2)<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u30c6\u30f3\u30bd\u30eb\u306e\u6b21\u5143: \u30c6\u30f3\u30bd\u30eb\u306e ndim \u5c5e\u6027\u3092\u4f7f\u7528\u3057\u3066\u3001\u305d\u306e\u6b21\u5143\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u30c6\u30f3\u30bd\u30eb\u6b21\u5143\u3092\u53d6\u5f97\u3059\u308b\u3044\u304f\u3064\u304b\u306e\u65b9\u6cd5\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>ndim \u5c5e\u6027\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u6b21\u5143\u3092\u53d6\u5f97\u3057\u307e\u3059: lua\u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) print(x.ndim)&nbsp;<\/code>\u51fa\u529b\u306e\u30b3\u30d4\u30fc: \u30b3\u30fc\u30c9\u306e\u30b3\u30d4\u30fc<code>2<\/code><\/li>\n\n\n\n<li>dim() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u6b21\u5143\u3092\u53d6\u5f97\u3057\u307e\u3059: lua\u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) print(x.dim())&nbsp;<\/code>\u51fa\u529b\u306e\u30b3\u30d4\u30fc: \u30b3\u30fc\u30c9\u306e\u30b3\u30d4\u30fc<code>2<\/code><\/li>\n\n\n\n<li>shape \u5c5e\u6027\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u6b21\u5143\u3092\u53d6\u5f97\u3057\u307e\u3059: lua\u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) print(len(x.shape))&nbsp;<\/code>\u51fa\u529b\u306e\u30b3\u30d4\u30fc: \u30b3\u30fc\u30c9\u306e\u30b3\u30d4\u30fc<code>2<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u57fa\u672c\u7684\u306a\u6570\u5b66\u7684\u64cd\u4f5c\u306b\u304a\u3051\u308b\u5f62\u72b6\u3068\u6b21\u5143: PyTorch \u306e\u57fa\u672c\u7684\u306a\u6570\u5b66\u7684\u64cd\u4f5c\u3067\u306f\u3001\u5f62\u72b6\u3068\u6b21\u5143\u3082\u975e\u5e38\u306b\u91cd\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u57fa\u672c\u7684\u306a\u6570\u5b66\u6f14\u7b97\u306b\u304a\u3051\u308b\u5f62\u72b6\u3068\u5bf8\u6cd5\u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Tensor \u52a0\u7b97: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = torch.tensor([[2, 2], [2, 2]]) z = x + y print(z.shape)&nbsp;<\/code>\u51fa\u529b: cssCopy \u30b3\u30fc\u30c9<code>torch.Size([2, 2])<\/code><\/li>\n\n\n\n<li>\u30c6\u30f3\u30bd\u30eb\u4e57\u7b97: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = torch.tensor([[2], [2]]) z = x.mm(y) print(z.shape)&nbsp;<\/code>\u51fa\u529b: cssCopy \u30b3\u30fc\u30c9<code>torch.Size([2, 1])<\/code><\/li>\n\n\n\n<li><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30c6\u30f3\u30bd\u30eb\u8ee2\u7f6e: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) z = x.t() print(z.shape)&nbsp;<\/code>\u51fa\u529b: cssCopy \u30b3\u30fc\u30c9<code>torch.Size([2, 2])<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u52a0\u7b97\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u4e57\u7b97\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u8ee2\u7f6e\u306a\u3069\u306e\u64cd\u4f5c\u306f\u3059\u3079\u3066\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u5f62\u72b6\u3068\u6b21\u5143\u3092\u5909\u66f4\u3057\u307e\u3059\u3002\u6df1\u5c64\u5b66\u7fd2\u30bf\u30b9\u30af\u3067\u306f\u3001\u6b63\u78ba\u3067\u52b9\u7387\u7684\u306a\u8a08\u7b97\u3092\u884c\u3046\u305f\u3081\u306b\u3001\u30c7\u30fc\u30bf\u3068\u30e2\u30c7\u30eb\u306e\u5f62\u72b6\u3068\u6b21\u5143\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u6570\u5b66\u7684\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u57fa\u672c\u7684\u306a\u6570\u5b66\u7684\u6f14\u7b97\u3092\u5b9f\u884c\u3059\u308b\u5834\u5408\u3001\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u524d\u306b\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u5f62\u72b6\u3068\u6b21\u5143\u304c\u7279\u5b9a\u306e\u6761\u4ef6\u3092\u6e80\u305f\u3059\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305f\u3068\u3048\u3070\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u4e57\u7b97\u3067\u306f\u30012 \u3064\u306e\u30c6\u30f3\u30bd\u30eb\u306e\u6700\u5f8c\u306e\u6b21\u5143\u304c\u540c\u3058\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u3001\u4e57\u7b97\u6f14\u7b97\u306f\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u6570\u5b66\u7684\u64cd\u4f5c\u3092\u884c\u3046\u3068\u304d\u306f\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u5f62\u72b6\u3068\u6b21\u5143\u3092\u6ce8\u610f\u6df1\u304f\u78ba\u8a8d\u3057\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u5909\u63db\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u30c6\u30f3\u30bd\u30eb\u64cd\u4f5c\u3068\u57fa\u672c\u7684\u306a\u6570\u5b66\u7684\u64cd\u4f5c\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4f5c\u6210\u3068\u30b9\u30e9\u30a4\u30b9\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u306e\u30c6\u30f3\u30bd\u30eb (\u30c6\u30f3\u30bd\u30eb) \u306f\u3001\u30c6\u30f3\u30bd\u30eb\u5185\u306e\u7279\u5b9a\u306e\u8981\u7d20\u307e\u305f\u306f\u30b5\u30d6\u30bb\u30c3\u30c8\u3092\u53d6\u5f97\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4f5c\u6210\u304a\u3088\u3073\u30b9\u30e9\u30a4\u30b9\u64cd\u4f5c\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u4e00\u822c\u7684\u306a\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4f5c\u6210\u304a\u3088\u3073\u30b9\u30e9\u30a4\u30b9\u64cd\u4f5c\u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4ed8\u3051: \u30c6\u30f3\u30bd\u30eb\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4ed8\u3051\u64cd\u4f5c\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c6\u30f3\u30bd\u30eb\u5185\u306e\u7279\u5b9a\u306e\u8981\u7d20\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u64cd\u4f5c\u3067\u306f\u89d2\u62ec\u5f27 [] \u3092\u4f7f\u7528\u3057\u3001\u89d2\u62ec\u5f27\u5185\u306e\u8981\u7d20\u306e\u4f4d\u7f6e\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u7d22\u5f15\u4ed8\u3051\u64cd\u4f5c\u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c6\u30f3\u30bd\u30eb\u306e\u8981\u7d20\u3092\u53d6\u5f97: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = x[1, 0] print(y)&nbsp;<\/code>\u51fa\u529b: scssCopy \u30b3\u30fc\u30c9<code>tensor(3)<\/code><\/li>\n\n\n\n<li>\u30c6\u30f3\u30bd\u30eb\u3067\u884c\u307e\u305f\u306f\u5217\u3092\u53d6\u5f97\u3059\u308b: lua\u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = x[0, :] z = x[:, 1] print(y) print(z)&nbsp;<\/code>\u51fa\u529b\u306e\u30b3\u30d4\u30fc: scss\u30b3\u30fc\u30c9\u306e\u30b3\u30d4\u30fc<code>tensor([1, 2]) tensor([2, 4])<\/code><\/li>\n\n\n\n<li>\u30d6\u30fc\u30ea\u30a2\u30f3 \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3001\u6761\u4ef6\u3092\u6e80\u305f\u3059\u30c6\u30f3\u30bd\u30eb\u5185\u306e\u8981\u7d20\u3092\u53d6\u5f97\u3057\u307e\u3059: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) mask = x &gt; 2 y = x[mask] print(y)&nbsp;<\/code>\u51fa\u529b: scssCopy \u30b3\u30fc\u30c9<code>tensor([3, 4])<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u30b9\u30e9\u30a4\u30b9: \u30c6\u30f3\u30bd\u30eb \u30b9\u30e9\u30a4\u30b9\u64cd\u4f5c\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u30b5\u30d6\u30bb\u30c3\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u3059\u3002\u30b9\u30e9\u30a4\u30b9\u64cd\u4f5c\u3067\u306f\u30b3\u30ed\u30f3: \u3092\u4f7f\u7528\u3057\u3001\u30b3\u30ed\u30f3\u306e\u524d\u5f8c\u306b\u30b9\u30e9\u30a4\u30b9\u306e\u958b\u59cb\u4f4d\u7f6e\u3068\u7d42\u4e86\u4f4d\u7f6e\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u30b9\u30e9\u30a4\u30b9\u64cd\u4f5c\u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c6\u30f3\u30bd\u30eb\u306e\u30b5\u30d6\u30bb\u30c3\u30c8\u3092\u53d6\u5f97: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = x[0:1, 0:1] print(y)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[1]])<\/code><\/li>\n\n\n\n<li>\u30c6\u30f3\u30bd\u30eb\u3067\u884c\u307e\u305f\u306f\u5217\u3092\u53d6\u5f97\u3059\u308b: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = x[0:1, :] z = x[:, 1:2] print(y) print(z)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[1, 2]]) tensor([[2], [4]])<\/code><\/li>\n\n\n\n<li>stride \u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u306e\u30b5\u30d6\u30bb\u30c3\u30c8\u3092\u53d6\u5f97\u3059\u308b: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = x[::2, ::2] print(y)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[1]])<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4f5c\u6210\u3068\u30b9\u30e9\u30a4\u30b9\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306f\u3001Python \u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4f5c\u6210\u3068\u30b9\u30e9\u30a4\u30b9\u306e\u898f\u5247\u306b\u5f93\u3046\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305f\u3068\u3048\u3070\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4ed8\u3051\u306f\u30b9\u30ab\u30e9\u30fc\u307e\u305f\u306f 1D \u30c6\u30f3\u30bd\u30eb\u3092\u8fd4\u3057\u3001\u30b9\u30e9\u30a4\u30b9\u306f\u30b5\u30d6\u30c6\u30f3\u30bd\u30eb\u3092\u8fd4\u3057\u307e\u3059\u3002\u540c\u6642\u306b\u3001\u30b9\u30e9\u30a4\u30b9\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306b\u3001step \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u9593\u9694\u3092\u6307\u5b9a\u3059\u308b\u304b\u3001start \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068 end \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u7701\u7565\u3067\u304d\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u6700\u521d\u304b\u3089\u6700\u5f8c\u307e\u3067\u3001\u307e\u305f\u306f\u6700\u521d\u304b\u3089\u6307\u5b9a\u3055\u308c\u305f\u4f4d\u7f6e\u307e\u3067\u3092\u610f\u5473\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u3068\u57fa\u672c\u7684\u306a\u6570\u5b66\u6f14\u7b97\u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u30c6\u30f3\u30bd\u30eb\u306f\u52a0\u7b97\u3001\u6e1b\u7b97\u3001\u4e57\u7b97\u3068\u9664\u7b97\u3001\u884c\u5217\u4e57\u7b97\u3001\u7dda\u5f62\u4ee3\u6570\u6f14\u7b97\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u57fa\u672c\u7684\u306a\u6570\u5b66\u6f14\u7b97\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u30c6\u30f3\u30bd\u30eb\u64cd\u4f5c\u306e\u3044\u304f\u3064\u304b\u306e\u4e00\u822c\u7684\u306a\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30c6\u30f3\u30bd\u30eb\u52a0\u7b97: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = torch.tensor([[2, 2], [2, 2]]) z = x + y print(z)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[3, 4], [5, 6]])<\/code><\/li>\n\n\n\n<li>\u30c6\u30f3\u30bd\u30eb\u4e57\u7b97: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = torch.tensor([[2], [2]]) z = x.mm(y) print(z)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[ 6], [14]])<\/code><\/li>\n\n\n\n<li>\u30c6\u30f3\u30bd\u30eb\u8ee2\u7f6e: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) z = x.t() print(z)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[1, 3], [2, 4]])<\/code><\/li>\n\n\n\n<li>\u30c6\u30f3\u30bd\u30eb\u4e8c\u4e57: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = x**2 print(y)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[ 1, 4], [ 9, 16]])<\/code><\/li>\n\n\n\n<li>\u30c6\u30f3\u30bd\u30eb\u7dcf\u548c: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = torch.sum(x) print(y)&nbsp;<\/code>\u51fa\u529b: scssCopy \u30b3\u30fc\u30c9<code>tensor(10)<\/code><\/li>\n\n\n\n<li>\u30c6\u30f3\u30bd\u30eb\u6b63\u898f\u5316: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) y = torch.nn.functional.normalize(x, p=2, dim=1) print(y)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[0.4472, 0.8944], [0.6, 0.8]])<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u30c6\u30f3\u30bd\u30eb\u52a0\u7b97\u3001\u30c6\u30f3\u30bd\u30eb\u4e57\u7b97\u3001\u30c6\u30f3\u30bd\u30eb\u8ee2\u7f6e\u3001\u30c6\u30f3\u30bd\u30eb 2 \u4e57\u3001\u30c6\u30f3\u30bd\u30eb\u548c\u3001\u30c6\u30f3\u30bd\u30eb\u6b63\u898f\u5316\u306a\u3069\u306e\u6f14\u7b97\u306f\u3001\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30bf\u30b9\u30af\u306e\u8a08\u7b97\u3067\u30c7\u30fc\u30bf\u51e6\u7406\u3068\u30e2\u30c7\u30eb\u306b\u4f7f\u7528\u3067\u304d\u308b\u4e00\u822c\u7684\u306a\u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u30c6\u30f3\u30bd\u30eb\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u5834\u5408\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u5f62\u72b6\u3068\u6b21\u5143\u304c\u64cd\u4f5c\u8981\u4ef6\u3092\u6e80\u305f\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305f\u3068\u3048\u3070\u3001\u30c6\u30f3\u30bd\u30eb\u4e57\u7b97\u3092\u5b9f\u884c\u3059\u308b\u5834\u5408\u30012 \u3064\u306e\u30c6\u30f3\u30bd\u30eb\u306e\u6700\u5f8c\u306e\u6b21\u5143\u306f\u540c\u3058\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u305d\u3046\u3067\u306a\u3044\u5834\u5408\u3001\u4e57\u7b97\u64cd\u4f5c\u306f\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002\u540c\u6642\u306b\u3001\u30c6\u30f3\u30bd\u30eb\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306f\u3001float \u307e\u305f\u306f double \u30c7\u30fc\u30bf\u578b\u306e\u4f7f\u7528\u3001CPU \u307e\u305f\u306f GPU \u30c7\u30d0\u30a4\u30b9\u306e\u4f7f\u7528\u306a\u3069\u3001\u30c7\u30fc\u30bf\u578b\u3068\u30c7\u30d0\u30a4\u30b9\u3082\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044 PyTorch \u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u3068\u57fa\u672c\u7684\u306a\u6570\u5b66\u6f14\u7b97 \u7dda\u5f62\u4ee3\u6570\u6f14\u7b97<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u7dda\u5f62\u4ee3\u6570\u6f14\u7b97\u306f\u6df1\u5c64\u5b66\u7fd2\u306b\u304a\u3051\u308b\u91cd\u8981\u306a\u6f14\u7b97\u306e 1 \u3064\u3067\u3059\u3002\u7dda\u5f62\u4ee3\u6570\u64cd\u4f5c\u306f\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3001\u6700\u9069\u5316\u3001\u8a55\u4fa1\u306a\u3069\u306e\u30bf\u30b9\u30af\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u3044\u304f\u3064\u304b\u306e\u4e00\u822c\u7684\u306a\u7dda\u5f62\u4ee3\u6570\u64cd\u4f5c\u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u884c\u5217\u306e\u4e57\u7b97: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = torch.tensor([[2], [2]]) z = x.mm(y) print(z)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[ 6], [14]])<\/code><\/li>\n\n\n\n<li>\u884c\u5217\u53cd\u8ee2: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) y = torch.inverse(x) print(y)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[-2.0000, 1.0000], [ 1.5000, -0.5000]])<\/code><\/li>\n\n\n\n<li>\u56fa\u6709\u5024\u5206\u89e3: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) y, z = torch.eig(x, eigenvectors=True) print(y) print(z)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[ 0.3723, 0.0000], [ 5.6277, 0.0000]]) tensor([[ 0.8246, -0.4163], [ 0.5658, 0.9094]])<\/code><\/li>\n\n\n\n<li>\u7279\u7570\u5024\u5206\u89e3: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]], dtype=torch.float) u, s, v = torch.svd(x) print(u) print(s) print(v)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[-0.4046, -0.9145], [-0.9145, 0.4046]]) tensor([5.4649, 0.3650]) tensor([[-0.5760, -0.8174], [ 0.8174, -0.5760]])<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u884c\u5217\u306e\u4e57\u7b97\u3001\u9006\u884c\u5217\u3001\u56fa\u6709\u5024\u5206\u89e3\u3001\u7279\u7570\u5024\u5206\u89e3\u306a\u3069\u306e\u6f14\u7b97\u304c\u4e00\u822c\u7684\u306a\u7dda\u5f62\u4ee3\u6570\u6f14\u7b97\u3067\u3059\u3002\u3053\u308c\u3089\u306e\u64cd\u4f5c\u306f\u3001\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30bf\u30b9\u30af\u3067\u306e\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u6700\u9069\u5316\u3001\u304a\u3088\u3073\u7d50\u679c\u306e\u8a55\u4fa1\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u7dda\u5f62\u4ee3\u6570\u64cd\u4f5c\u3092\u5b9f\u884c\u3059\u308b\u5834\u5408\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u5f62\u72b6\u3068\u6b21\u5143\u304c\u8981\u4ef6\u3092\u6e80\u305f\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305f\u3068\u3048\u3070\u3001\u884c\u5217\u306e\u4e57\u7b97\u3092\u884c\u3046\u5834\u5408\u30012 \u3064\u306e\u30c6\u30f3\u30bd\u30eb\u306e\u6700\u5f8c\u306e\u6b21\u5143\u306f\u540c\u3058\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u305d\u3046\u3067\u306a\u3051\u308c\u3070\u3001\u4e57\u7b97\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002\u540c\u6642\u306b\u3001\u7dda\u5f62\u4ee3\u6570\u6f14\u7b97\u3092\u5b9f\u884c\u3059\u308b\u5834\u5408\u3001float \u307e\u305f\u306f double \u30c7\u30fc\u30bf\u578b\u306e\u4f7f\u7528\u3001CPU \u307e\u305f\u306f GPU \u30c7\u30d0\u30a4\u30b9\u306e\u4f7f\u7528\u306a\u3069\u3001\u30c7\u30fc\u30bf\u578b\u3068\u30c7\u30d0\u30a4\u30b9\u3082\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u3068\u57fa\u672c\u7684\u306a\u6570\u5b66\u7684\u6f14\u7b97\u306e\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8\u306f\u975e\u5e38\u306b\u91cd\u8981\u306a\u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u3067\u3042\u308a\u3001\u6570\u5b66\u6f14\u7b97\u3067\u7570\u306a\u308b\u5f62\u72b6\u306e\u30c6\u30f3\u30bd\u30eb\u3092\u9069\u5fdc\u3055\u305b\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30e1\u30ab\u30cb\u30ba\u30e0\u306b\u3088\u308a\u3001\u660e\u793a\u7684\u306a\u30c6\u30f3\u30bd\u30eb\u5f62\u72b6\u5909\u63db\u3092\u5fc5\u8981\u3068\u305b\u305a\u306b\u3001\u3055\u307e\u3056\u307e\u306a\u5f62\u72b6\u306e\u30c6\u30f3\u30bd\u30eb\u306b\u5bfe\u3059\u308b\u6570\u5b66\u7684\u64cd\u4f5c\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306b\u3001\u4e00\u822c\u7684\u306a\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30e1\u30ab\u30cb\u30ba\u30e0\u306e\u4f8b\u3092\u3044\u304f\u3064\u304b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>2\u6b21\u5143\u30c6\u30f3\u30bd\u30eb\u30681\u6b21\u5143\u30c6\u30f3\u30bd\u30eb\u306e\u52a0\u7b97\uff1alua\u30b3\u30d4\u30fc\u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[1, 2], [3, 4]]) y = torch.tensor([1, 2]) z = x + y print(z)&nbsp;<\/code>\u51fa\u529b\uff1alua\u30b3\u30d4\u30fc\u30b3\u30fc\u30c9<code>tensor([[2, 4], [4, 6]])<\/code><\/li>\n\n\n\n<li>3D \u30c6\u30f3\u30bd\u30eb\u3068 2D \u30c6\u30f3\u30bd\u30eb\u306e\u4e57\u7b97: luaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) y = torch.tensor([[1, 2], [3, 4]]) z = x.mm(y) print(z)&nbsp;<\/code>\u51fa\u529b: luaCopy \u30b3\u30fc\u30c9<code>tensor([[[ 7, 10], [15, 22]], [[19, 22], [43, 50]]])<\/code><\/li>\n\n\n\n<li>1 \u6b21\u5143\u30c6\u30f3\u30bd\u30eb\u3068\u30b9\u30ab\u30e9\u30fc\u306e\u4e57\u7b97: javaCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([1, 2, 3]) y = 2 z = x * y print(z)&nbsp;<\/code>\u51fa\u529b: scssCopy \u30b3\u30fc\u30c9<code>tensor([2, 4, 6])<\/code><\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30e1\u30ab\u30cb\u30ba\u30e0\u306b\u3088\u308a\u30012D \u30c6\u30f3\u30bd\u30eb\u3068 1D \u30c6\u30f3\u30bd\u30eb\u306e\u52a0\u7b97\u30013D \u30c6\u30f3\u30bd\u30eb\u3068 2D \u30c6\u30f3\u30bd\u30eb\u306e\u4e57\u7b97\u30011D \u30c6\u30f3\u30bd\u30eb\u3068\u30b9\u30ab\u30e9\u30fc Multiply \u306e\u4e57\u7b97\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u5f62\u72b6\u306e\u30c6\u30f3\u30bd\u30eb\u306b\u5bfe\u3059\u308b\u6570\u5b66\u7684\u64cd\u4f5c\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30e1\u30ab\u30cb\u30ba\u30e0\u306f\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u6b21\u5143\u3092\u4ed6\u306e\u30c6\u30f3\u30bd\u30eb\u306e\u6b21\u5143\u3068\u4e00\u81f4\u3059\u308b\u3088\u3046\u306b\u81ea\u52d5\u7684\u306b\u62e1\u5f35\u3057\u3001\u30c6\u30f3\u30bd\u30eb\u304c\u6570\u5b66\u6f14\u7b97\u306b\u9069\u5408\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30e1\u30ab\u30cb\u30ba\u30e0\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306f\u3001\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30e1\u30ab\u30cb\u30ba\u30e0\u306e\u30eb\u30fc\u30eb\u306b\u5f93\u3046\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u305f\u3068\u3048\u3070\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u6b21\u5143\u306f\u3001\u6570\u5b66\u6f14\u7b97\u306e\u6b63\u78ba\u3055\u3068\u52b9\u7387\u3092\u78ba\u4fdd\u3059\u308b\u305f\u3081\u306b\u7279\u5b9a\u306e\u30eb\u30fc\u30eb\u306b\u6e96\u62e0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch\u306e\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u8a08\u7b97\u30b0\u30e9\u30d5\u3068\u81ea\u52d5\u5c0e\u51fa\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u6559\u3048\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u306f\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0\u306b\u304a\u3051\u308b\u91cd\u8981\u306a\u64cd\u4f5c\u306e 1 \u3064\u3067\u3042\u308a\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3084\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u6700\u9069\u5316\u306a\u3069\u306e\u30bf\u30b9\u30af\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306b\u3001\u81ea\u52d5\u5fae\u5206\u3068\u6700\u9069\u5316\u306e\u4e00\u822c\u7684\u306a\u4f8b\u3092\u3044\u304f\u3064\u304b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u8a08\u7b97\u30b0\u30e9\u30d5: PyTorch \u3067\u306f\u3001\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u306e\u57fa\u790e\u306f\u8a08\u7b97\u30b0\u30e9\u30d5 (Computation Graph) \u3067\u3059\u3002\u8a08\u7b97\u30b0\u30e9\u30d5\u306f\u3001\u30e2\u30c7\u30eb\u306e\u8a08\u7b97\u3092\u8a18\u8ff0\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u30b0\u30e9\u30d5\u69cb\u9020\u3067\u3042\u308a\u3001\u30ce\u30fc\u30c9\u306f\u30c6\u30f3\u30bd\u30eb\u3092\u8868\u3057\u3001\u30a8\u30c3\u30b8\u306f\u30c6\u30f3\u30bd\u30eb\u9593\u306e\u8a08\u7b97\u95a2\u4fc2\u3092\u8868\u3057\u307e\u3059\u3002\u8a08\u7b97\u30b0\u30e9\u30d5\u306e\u69cb\u7bc9\u306f\u3001PyTorch \u3067 autograd \u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u3067\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002pythonCopy \u30b3\u30fc\u30c9\u306e\u51fa\u529b<code>import torch x = torch.tensor([1, 2], dtype=torch.float, requires_grad=True) y = torch.tensor([2, 2], dtype=torch.float, requires_grad=True) z = x + y w = z.sum() print(w)&nbsp;<\/code>: scssCopy \u30b3\u30fc\u30c9<code>tensor(6., grad_fn=&lt;SumBackward0&gt;)&nbsp;<\/code>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u5358\u7d14\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002x \u3068 y \u306f 2 \u3064\u306e\u30c6\u30f3\u30bd\u30eb\u3001z \u306f\u305d\u308c\u3089\u306e\u5408\u8a08\u3001w \u306f z \u306e\u5408\u8a08\u3067\u3059\u3002requires_grad=True \u3092\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u8a08\u7b97\u30b0\u30e9\u30d5\u5185\u306e\u30ce\u30fc\u30c9\u304c\u81ea\u52d5\u6d3e\u751f\u3092\u30b5\u30dd\u30fc\u30c8\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u81ea\u52d5\u5c0e\u51fa: PyTorch \u3067\u306f\u3001\u81ea\u52d5\u5c0e\u51fa\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u306e\u5c0e\u95a2\u6570\u3092\u8a08\u7b97\u3067\u304d\u307e\u3059\u3002\u8a08\u7b97\u30b0\u30e9\u30d5\u3067\u306f\u3001\u5404\u30c6\u30f3\u30bd\u30eb \u30ce\u30fc\u30c9\u306b\u306f grad_fn \u5c5e\u6027\u304c\u3042\u308a\u3001\u30c6\u30f3\u30bd\u30eb\u3092\u8a08\u7b97\u3059\u308b\u95a2\u6570\u3001\u3064\u307e\u308a\u5c0e\u95a2\u6570\u306e\u8a08\u7b97\u95a2\u6570\u3092\u6307\u3057\u307e\u3059\u3002\u30c6\u30f3\u30bd\u30eb\u306e\u5c0e\u95a2\u6570\u8a08\u7b97\u306f\u3001backward() \u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u3067\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002pythonCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([1, 2], dtype=torch.float, requires_grad=True) y = torch.tensor([2, 2], dtype=torch.float, requires_grad=True) z = x + y w = z.sum() w.backward() print(x.grad) print(y.grad)&nbsp;<\/code>\u51fa\u529b: scssCopy \u30b3\u30fc\u30c9<code>tensor([1., 1.]) tensor([1., 1.])&nbsp;<\/code>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001backward() \u95a2\u6570\u304c\u547c\u3073\u51fa\u3055\u308c\u3066\u30c6\u30f3\u30bd\u30eb\u306e\u5c0e\u95a2\u6570\u304c\u8a08\u7b97\u3055\u308c\u3001\u5bfe\u5fdc\u3059\u308b\u5c0e\u95a2\u6570\u306e\u5024\u304c x.grad \u3068 y.grad \u304b\u3089\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc: PyTorch \u3067\u306f\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc (Optimizer) \u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6700\u9069\u5316\u3067\u304d\u307e\u3059\u3002\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306f\u3001\u78ba\u7387\u7684\u52fe\u914d\u964d\u4e0b (SGD)\u3001Adam \u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u6700\u9069\u5316\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3092\u5b9f\u88c5\u3059\u308b\u30af\u30e9\u30b9\u3067\u3059\u3002\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u3001\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3001\u640d\u5931\u95a2\u6570\u3001\u304a\u3088\u3073\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002scssCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([1, 2], dtype=torch.float, requires_grad=True) y = torch.tensor([2, 2], dtype=torch.float, requires_grad=True) z = x + y w = z.sum() optimizer = torch.optim.SGD([x, y], lr=0.01) optimizer.zero_grad() w.backward() optimizer.step() print(x) print(y)&nbsp;<\/code>\u306e\u51fa\u529b: scssCopy \u30b3\u30fc\u30c9<code>tensor([0.9800, 1.9800], requires_grad=True) tensor([1.9800, 1.9800], requires_grad=True) ``<\/code><\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u52fe\u914d\u8a08\u7b97\u306e\u505c\u6b62: PyTorch \u3067\u306f\u3001requires_grad=False \u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u52fe\u914d\u8a08\u7b97\u3092\u505c\u6b62\u3067\u304d\u307e\u3059\u3002\u505c\u6b62\u3057\u305f\u52fe\u914d\u8a08\u7b97\u306f\u3001\u30e2\u30c7\u30eb\u306e\u51cd\u7d50\u3084\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u5171\u6709\u306a\u3069\u306e\u30bf\u30b9\u30af\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002pythonCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([1, 2], dtype=torch.float, requires_grad=True) y = torch.tensor([2, 2], dtype=torch.float) z = x + y with torch.no_grad(): w = z.sum() print(w.requires_grad)&nbsp;<\/code>\u51fa\u529b: graphqlCopy \u30b3\u30fc\u30c9<code>False&nbsp;<\/code>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001 with torch.no_grad() \u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8 \u30d6\u30ed\u30c3\u30af\u3092\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u52fe\u914d\u8a08\u7b97\u304c\u505c\u6b62\u3055\u308c\u308b\u305f\u3081\u3001w \u306f\u81ea\u52d5\u5c0e\u51fa\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u306a\u304f\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u52d5\u7684\u30b0\u30e9\u30d5\u3068\u9759\u7684\u30b0\u30e9\u30d5: PyTorch \u306f\u52d5\u7684\u30b0\u30e9\u30d5\u3068\u9759\u7684\u30b0\u30e9\u30d5\u306e 2 \u7a2e\u985e\u306e\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002\u52d5\u7684\u30b0\u30e9\u30d5\u3068\u306f\u3001\u5b9f\u884c\u6642\u306b\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u3092\u6307\u3057\u3001\u3053\u306e\u65b9\u6cd5\u306f\u67d4\u8edf\u6027\u304c\u9ad8\u304f\u3001\u52d5\u7684\u753b\u50cf\u3084\u81ea\u7136\u8a00\u8a9e\u51e6\u7406\u306a\u3069\u306e\u8907\u96d1\u306a\u30bf\u30b9\u30af\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u3002\u9759\u7684\u30b0\u30e9\u30d5\u3068\u306f\u3001\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u69cb\u7bc9\u3059\u308b\u3053\u3068\u3092\u6307\u3057\u307e\u3059. \u3053\u306e\u65b9\u6cd5\u306f\u3088\u308a\u52b9\u7387\u7684\u3067\u3042\u308a\u3001\u8a08\u7b97\u30b0\u30e9\u30d5\u304c\u9759\u7684\u306a\u307e\u307e\u3067\u3042\u308b\u30bf\u30b9\u30af\u306b\u9069\u3057\u3066\u3044\u307e\u3059.&nbsp;PyTorch \u3067\u306f\u3001\u52d5\u7684\u30b0\u30e9\u30d5\u3092\u4f7f\u7528\u3057\u3066\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u4f5c\u6210\u3057\u305f\u308a\u3001TorchScript \u3092\u4f7f\u7528\u3057\u3066\u9759\u7684\u30b0\u30e9\u30d5\u3092\u4f5c\u6210\u3059\u308b\u306a\u3069\u3001\u9759\u7684\u30b0\u30e9\u30d5\u3092\u4f7f\u7528\u3057\u305f\u308a\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4e0a\u8a18\u306f\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u306e\u3044\u304f\u3064\u304b\u306e\u4e00\u822c\u7684\u306a\u4f8b\u3067\u3059. PyTorch \u306e\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u306e\u6a5f\u80fd\u306f\u975e\u5e38\u306b\u5f37\u529b\u3067\u67d4\u8edf\u3067\u3042\u308a\u3001\u3055\u307e\u3056\u307e\u306a\u6df1\u5c64\u5b66\u7fd2\u30bf\u30b9\u30af\u306e\u30cb\u30fc\u30ba\u3092\u6e80\u305f\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059.&nbsp;\u540c\u6642\u306b\u3001\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u306e\u6b63\u78ba\u3055\u3068\u52b9\u7387\u306f\u3001\u8a08\u7b97\u30b0\u30e9\u30d5\u306e\u69cb\u7bc9\u3084\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u306e\u9078\u629e\u306a\u3069\u306e\u8981\u56e0\u306b\u4f9d\u5b58\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3089\u306e\u8981\u56e0\u306f\u3001\u5b9f\u969b\u306b\u306f\u7d99\u7d9a\u7684\u306b\u8abf\u67fb\u304a\u3088\u3073\u6700\u9069\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch\u306e\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u306e\u9006\u4f1d\u64ad\u3068\u52fe\u914d\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u306f\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0\u306b\u304a\u3051\u308b\u91cd\u8981\u306a\u64cd\u4f5c\u306e 1 \u3064\u3067\u3042\u308a\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3084\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u6700\u9069\u5316\u306a\u3069\u306e\u30bf\u30b9\u30af\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u30d0\u30c3\u30af\u30d7\u30ed\u30d1\u30b2\u30fc\u30b7\u30e7\u30f3\u3068\u52fe\u914d\u306f\u3001\u30e2\u30c7\u30eb\u306e\u52fe\u914d\u3092\u8a08\u7b97\u3057\u3001\u30e2\u30c7\u30eb\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u66f4\u65b0\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u308b\u3001\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u306e\u4e2d\u5fc3\u7684\u306a\u6982\u5ff5\u306e 1 \u3064\u3067\u3059\u3002\u9006\u4f1d\u64ad\u3068\u52fe\u914d\u8a08\u7b97\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30d0\u30c3\u30af\u30d7\u30ed\u30d1\u30b2\u30fc\u30b7\u30e7\u30f3: PyTorch \u3067\u306f\u3001\u30d0\u30c3\u30af\u30d7\u30ed\u30d1\u30b2\u30fc\u30b7\u30e7\u30f3\u306f\u30e2\u30c7\u30eb\u52fe\u914d\u3092\u8a08\u7b97\u3059\u308b\u4e00\u822c\u7684\u306a\u65b9\u6cd5\u3067\u3059\u3002\u30d0\u30c3\u30af\u30d7\u30ed\u30d1\u30b2\u30fc\u30b7\u30e7\u30f3\u306f\u3001\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306b\u5bfe\u3059\u308b\u640d\u5931\u95a2\u6570\u306e\u5c0e\u95a2\u6570\u3092\u8a08\u7b97\u3059\u308b\u3053\u3068\u306b\u3088\u3063\u3066\u30e2\u30c7\u30eb\u306e\u52fe\u914d\u60c5\u5831\u3092\u53d6\u5f97\u3057\u3001\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u6700\u9069\u5316\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30d0\u30c3\u30af\u30d7\u30ed\u30d1\u30b2\u30fc\u30b7\u30e7\u30f3\u306f\u3001backward() \u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u3067\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002pythonCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([1, 2], dtype=torch.float, requires_grad=True) y = torch.tensor([2, 2], dtype=torch.float, requires_grad=True) z = x + y w = z.sum() w.backward() print(x.grad) print(y.grad)&nbsp;<\/code>\u51fa\u529b: scssCopy \u30b3\u30fc\u30c9<code>tensor([1., 1.]) tensor([1., 1.])&nbsp;<\/code>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001tensor \u306e\u5c0e\u95a2\u6570\u306f backward() \u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306b\u3088\u3063\u3066\u8a08\u7b97\u3055\u308c\u3001\u5bfe\u5fdc\u3059\u308b\u5c0e\u95a2\u6570\u306e\u5024\u306f x.grad \u3068 y.grad \u3092\u901a\u3058\u3066\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u52fe\u914d\u8a08\u7b97: PyTorch \u3067\u306f\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u52fe\u914d\u306f grad() \u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u3067\u8a08\u7b97\u3067\u304d\u307e\u3059\u3002\u52fe\u914d\u8a08\u7b97\u306f\u3001\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u66f4\u65b0\u3084\u640d\u5931\u95a2\u6570\u306e\u6700\u9069\u5316\u306a\u3069\u306e\u30bf\u30b9\u30af\u3067\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002pythonCopy \u30b3\u30fc\u30c9<code>import torch x = torch.tensor([1, 2], dtype=torch.float, requires_grad=True) y = torch.tensor([2, 2], dtype=torch.float, requires_grad=True) z = x + y w = z.sum() grad = torch.autograd.grad(w, [x, y]) print(grad[0]) print(grad[1])&nbsp;<\/code>\u51fa\u529b: scssCopy \u30b3\u30fc\u30c9<code>tensor([1., 1.]) tensor([1., 1.])&nbsp;<\/code>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u30c6\u30f3\u30bd\u30eb x \u304a\u3088\u3073 y \u306e\u52fe\u914d\u306f grad() \u95a2\u6570\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306b\u3088\u3063\u3066\u8a08\u7b97\u3055\u308c\u3001\u5bfe\u5fdc\u3059\u308b\u52fe\u914d\u5024\u306f grad[0] \u304a\u3088\u3073 grad[1] \u3092\u901a\u3058\u3066\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u30d0\u30c3\u30af\u30d7\u30ed\u30d1\u30b2\u30fc\u30b7\u30e7\u30f3\u3068\u52fe\u914d\u8a08\u7b97\u3092\u5b9f\u884c\u3059\u308b\u3068\u304d\u306f\u3001\u30c6\u30f3\u30bd\u30eb\u306e requires_grad \u5c5e\u6027\u304c True \u3067\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u306f\u3001\u30ce\u30fc\u30c9\u306e requires_grad \u5c5e\u6027\u3092 True \u306b\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u540c\u6642\u306b\u3001\u52fe\u914d\u7206\u767a\u3084\u6d88\u5931\u306a\u3069\u306e\u554f\u984c\u3092\u56de\u907f\u3057\u3001\u9069\u5207\u306a\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u9078\u629e\u3059\u308b\u306a\u3069\u3001\u30d0\u30c3\u30af\u30d7\u30ed\u30d1\u30b2\u30fc\u30b7\u30e7\u30f3\u3068\u52fe\u914d\u8a08\u7b97\u306e\u6b63\u78ba\u6027\u3068\u52b9\u7387\u6027\u306b\u3082\u6ce8\u610f\u3092\u6255\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u306e\u5c0e\u5165\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306f\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u6700\u9069\u5316\u306e\u30b3\u30a2 \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e 1 \u3064\u3067\u3059. \u52fe\u914d\u8a08\u7b97\u3068\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u66f4\u65b0\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u6700\u9069\u5316\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002PyTorch \u306f\u3001SGD\u3001Adam\u3001RMSprop \u306a\u3069\u306e\u3055\u307e\u3056\u307e\u306a\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u4e00\u822c\u7684\u306a\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>SGD \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc: \u78ba\u7387\u7684\u52fe\u914d\u964d\u4e0b\u6cd5 (SGD) \u306f\u3001\u6df1\u5c64\u5b66\u7fd2\u3067\u6700\u3082\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u6700\u9069\u5316\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u306e 1 \u3064\u3067\u3042\u308a\u3001\u52fe\u914d\u964d\u4e0b\u6cd5\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u66f4\u65b0\u3059\u308b\u3053\u3068\u3092\u6838\u3068\u3057\u3066\u3044\u307e\u3059\u3002PyTorch \u3067\u306f\u3001torch.optim.SGD() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066 SGD \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u3001\u5b66\u7fd2\u7387\u3084\u305d\u306e\u4ed6\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002scssCopy \u30b3\u30fc\u30c9<code>import torch x = torch.randn(10, 5) y = torch.randn(10, 2) model = torch.nn.Linear(5, 2) criterion = torch.nn.MSELoss() optimizer = torch.optim.SGD(model.parameters(), lr=0.1) for epoch in range(100): y_pred = model(x) loss = criterion(y_pred, y) optimizer.zero_grad() loss.backward() optimizer.step() print('Epoch:', epoch, 'Loss:', loss.item())&nbsp;<\/code>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001SGD \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306f torch.optim.SGD() \u95a2\u6570\u306b\u3088\u3063\u3066\u4f5c\u6210\u3055\u308c\u3001\u5b66\u7fd2\u7387\u306f 0.1 \u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3059\u3002\u6b21\u306b\u3001\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30eb\u30fc\u30d7\u3067\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f7f\u7528\u3057\u3066\u52fe\u914d\u8a08\u7b97\u3068\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u66f4\u65b0\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>Adam \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc: Adam \u306f\u3001\u78ba\u7387\u7684\u52fe\u914d\u964d\u4e0b\u6cd5\u3068\u904b\u52d5\u91cf\u6700\u9069\u5316\u306e\u5229\u70b9\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u9069\u5fdc\u6700\u9069\u5316\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002PyTorch \u3067\u306f\u3001 torch.optim.Adam() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066 Adam \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u3001\u5b66\u7fd2\u7387\u3084\u305d\u306e\u4ed6\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002scssCopy \u30b3\u30fc\u30c9<code>import torch x = torch.randn(10, 5) y = torch.randn(10, 2) model = torch.nn.Linear(5, 2) criterion = torch.nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=0.1) for epoch in range(100): y_pred = model(x) loss = criterion(y_pred, y) optimizer.zero_grad() loss.backward() optimizer.step() print('Epoch:', epoch, 'Loss:', loss.item())&nbsp;<\/code>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001Adam \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u306f torch.optim.Adam() \u95a2\u6570\u306b\u3088\u3063\u3066\u4f5c\u6210\u3055\u308c\u3001\u5b66\u7fd2\u7387\u306f 0.1 \u306b\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u6b21\u306b\u3001\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30eb\u30fc\u30d7\u3067\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f7f\u7528\u3057\u3066\u52fe\u914d\u8a08\u7b97\u3068\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u66f4\u65b0\u304c\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u3092\u9078\u629e\u3059\u308b\u969b\u306b\u306f\u3001\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u3068\u30e2\u30c7\u30eb\u306b\u5f93\u3063\u3066\u3001\u5b66\u7fd2\u7387\u3001\u904b\u52d5\u91cf\u3001\u91cd\u307f\u6e1b\u8870\u306a\u3069\u306e\u9069\u5207\u306a\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u3068\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u540c\u6642\u306b\u3001\u52fe\u914d\u7206\u767a\u3084\u6d88\u5931\u306a\u3069\u306e\u554f\u984c\u3092\u56de\u907f\u3057\u305f\u308a\u3001\u9069\u5207\u306a\u5b66\u7fd2\u7387\u3084\u305d\u306e\u4ed6\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u9078\u629e\u3057\u305f\u308a\u3059\u308b\u306a\u3069\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306e\u6b63\u78ba\u6027\u3068\u52b9\u7387\u6027\u306b\u3082\u6ce8\u610f\u3092\u6255\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch\u306e\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u306e\u4e00\u822c\u7684\u306a\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306e\u4f7f\u3044\u65b9\u3068\u6bd4\u8f03\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u4e00\u822c\u7684\u306a\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306b\u306f SGD\u3001Adam\u3001RMSprop \u306a\u3069\u304c\u542b\u307e\u308c\u307e\u3059\u3002\u7570\u306a\u308b\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306b\u306f\u3001\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6700\u9069\u5316\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u306b\u304a\u3044\u3066\u7570\u306a\u308b\u9577\u6240\u3068\u77ed\u6240\u3001\u304a\u3088\u3073\u9069\u7528\u53ef\u80fd\u306a\u30b7\u30ca\u30ea\u30aa\u304c\u3042\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306e\u4f7f\u7528\u3068\u6bd4\u8f03\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>SGD \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc: SGD \u306f\u4e00\u822c\u7684\u306a\u6700\u9069\u5316\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3042\u308a\u3001\u305d\u306e\u6838\u3068\u306a\u308b\u8003\u3048\u65b9\u306f\u3001\u52fe\u914d\u964d\u4e0b\u6cd5\u306b\u3088\u3063\u3066\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u66f4\u65b0\u3059\u308b\u3053\u3068\u3067\u3059\u3002PyTorch \u3067\u306f\u3001torch.optim.SGD() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066 SGD \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u3001\u5b66\u7fd2\u7387\u3084\u305d\u306e\u4ed6\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002SGD \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306f\u5358\u7d14\u306a\u30e2\u30c7\u30eb\u3084\u5c0f\u3055\u306a\u30c7\u30fc\u30bf \u30bb\u30c3\u30c8\u306b\u9069\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u30c7\u30a3\u30fc\u30d7 \u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306a\u3069\u306e\u8907\u96d1\u306a\u30e2\u30c7\u30eb\u3092\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3059\u308b\u5834\u5408\u3001\u5c40\u6240\u6700\u9069\u89e3\u3084\u52fe\u914d\u6d88\u5931\u306a\u3069\u306e\u554f\u984c\u306b\u9665\u308a\u3084\u3059\u3044\u3067\u3059\u3002<\/li>\n\n\n\n<li>Adam \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc: Adam \u306f\u3001\u78ba\u7387\u7684\u52fe\u914d\u964d\u4e0b\u6cd5\u3068\u904b\u52d5\u91cf\u6700\u9069\u5316\u306e\u5229\u70b9\u3092\u7d44\u307f\u5408\u308f\u305b\u305f\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u9069\u5fdc\u6700\u9069\u5316\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3059\u3002PyTorch \u3067\u306f\u3001 torch.optim.Adam() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066 Adam \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u3001\u5b66\u7fd2\u7387\u3084\u305d\u306e\u4ed6\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002Adam \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306f\u3001\u30c7\u30a3\u30fc\u30d7 \u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306a\u3069\u306e\u8907\u96d1\u306a\u30e2\u30c7\u30eb\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u5c40\u6240\u6700\u9069\u89e3\u3084\u52fe\u914d\u6d88\u5931\u306a\u3069\u306e\u554f\u984c\u3092\u3059\u3070\u3084\u304f\u53ce\u675f\u3057\u3066\u56de\u907f\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>RMSprop \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc: RMSprop \u306f\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u9069\u5fdc\u6700\u9069\u5316\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u3067\u3042\u308a\u3001\u5b66\u7fd2\u7387\u3092\u52d5\u7684\u306b\u8abf\u6574\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u975e\u51f8\u6700\u9069\u5316\u554f\u984c\u3067\u306e\u30e2\u30c7\u30eb\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002PyTorch \u3067\u306f\u3001torch.optim.RMSprop() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066 RMSprop \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f5c\u6210\u3057\u3001\u5b66\u7fd2\u7387\u3084\u305d\u306e\u4ed6\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002RMSprop \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306f\u3001\u758e\u52fe\u914d\u306e\u554f\u984c\u3068\u975e\u51f8\u6700\u9069\u5316\u554f\u984c\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u30e2\u30c7\u30eb\u306e\u53ce\u675f\u901f\u5ea6\u3068\u4e00\u822c\u5316\u80fd\u529b\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u3084\u30e2\u30c7\u30eb\u306b\u5fdc\u3058\u3066\u3001\u5b66\u7fd2\u7387\u3001\u904b\u52d5\u91cf\u3001\u91cd\u307f\u6e1b\u8870\u306a\u3069\u306e\u9069\u5207\u306a\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u3068\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u6642\u306b\u3001\u52fe\u914d\u7206\u767a\u3084\u6d88\u5931\u306a\u3069\u306e\u554f\u984c\u3092\u56de\u907f\u3057\u305f\u308a\u3001\u9069\u5207\u306a\u5b66\u7fd2\u7387\u3084\u305d\u306e\u4ed6\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u9078\u629e\u3057\u305f\u308a\u3059\u308b\u306a\u3069\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306e\u6b63\u78ba\u6027\u3068\u52b9\u7387\u6027\u306b\u3082\u6ce8\u610f\u3092\u6255\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3055\u3089\u306b\u3001\u5b9f\u969b\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u901a\u5e38\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u3092\u6bd4\u8f03\u3057\u3066\u8abf\u6574\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u3058\u30bf\u30b9\u30af\u3067\u7570\u306a\u308b\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u6bd4\u8f03\u3059\u308b\u3053\u3068\u3067\u3001\u6700\u9069\u306a\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3068\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u7570\u306a\u308b\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f7f\u7528\u3057\u305f\u540c\u3058\u30bf\u30b9\u30af\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nfrom torch import nn\nfrom torch.utils.data import DataLoader\nfrom torchvision import datasets, transforms\n\ntransform = transforms.Compose([\n    transforms.ToTensor(),\n    transforms.Normalize((0.1307,), (0.3081,))\n])\n\ntrain_dataset = datasets.MNIST('.\/data', train=True, download=True, transform=transform)\ntrain_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)\n\nclass MLP(nn.Module):\n    def __init__(self):\n        super().__init__()\n        self.fc1 = nn.Linear(784, 256)\n        self.fc2\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>class MLP(nn.Module): def&nbsp;<strong>init<\/strong>&nbsp;(self): super().&nbsp;<strong>init<\/strong>&nbsp;() self.fc1 = nn.Linear(784, 256) self.fc2 = nn.Linear(256, 128) self.fc3 = nn.Linear(128, 10) self.relu = nn.ReLU()<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ruby\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>def forward(self, x):\n    x = x.view(-1, 784)\n    x = self.relu(self.fc1(x))\n    x = self.relu(self.fc2(x))\n    x = self.fc3(x)\n    return x\n<\/code><\/pre>\n\n\n\n<p>def train(\u30e2\u30c7\u30eb\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3001\u57fa\u6e96\u3001train_loader\u3001\u30c7\u30d0\u30a4\u30b9): batch_idx \u306e model.train()\u3001enumerate(train_loader) \u306e (\u30c7\u30fc\u30bf\u3001\u30bf\u30fc\u30b2\u30c3\u30c8): \u30c7\u30fc\u30bf\u3001\u30bf\u30fc\u30b2\u30c3\u30c8 = data.to(\u30c7\u30d0\u30a4\u30b9)\u3001target.to(\u30c7\u30d0\u30a4\u30b9) optimizer.zero_grad() \u51fa\u529b = \u30e2\u30c7\u30eb (\u30c7\u30fc\u30bf) \u640d\u5931 = \u57fa\u6e96 (\u51fa\u529b\u3001\u30bf\u30fc\u30b2\u30c3\u30c8) loss.backward() optimizer.step()<\/p>\n\n\n\n<p>def test(\u30e2\u30c7\u30eb\u3001\u57fa\u6e96\u3001test_loader\u3001\u30c7\u30d0\u30a4\u30b9): model.eval() test_loss = 0 \u6b63\u3057\u3044 = 0 with torch.no_grad(): for data, target in test_loader: data, target = data.to(device), target. to(device) output = model(data) test_loss += criteria(output, target).item() pred = output.argmax(dim=1, keepdim=True) correct += pred.eq(target.view_as(pred) .sum().item()<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>test_loss \/= len(test_loader.dataset)\naccuracy = 100. * correct \/ len(test_loader.dataset)\nprint('Test set: Average loss: {:.4f}, Accuracy: {}\/{} ({:.2f}%)'.format(\n    test_loss, correct, len(test_loader.dataset), accuracy))\n<\/code><\/pre>\n\n\n\n<p>device = torch.device(&#8220;cuda&#8221; if torch.cuda.is_available() else &#8220;cpu&#8221;) model = MLP().to(device) \u57fa\u6e96 = nn.CrossEntropyLoss() train_loader = DataLoader(train_dataset, batch_size=64, shuffle =True) test_loader = DataLoader(datasets.MNIST(&#8216;.\/data&#8217;, train=False, transform=transform), batch_size=1000, shuffle=True)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">SGD \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f7f\u7528\u3059\u308b<\/h1>\n\n\n\n<p>optimizer = torch.optim.SGD(model.parameters(), lr=0.01) for epoch in range(10): train(\u30e2\u30c7\u30eb\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u3001\u57fa\u6e96\u3001train_loader\u3001\u30c7\u30d0\u30a4\u30b9) test(\u30e2\u30c7\u30eb\u3001\u57fa\u6e96\u3001test_loader\u3001\u30c7\u30d0\u30a4\u30b9)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Adam \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u306e\u4f7f\u7528<\/h1>\n\n\n\n<p>model = MLP().to(device) optimizer = torch.optim.Adam(model.parameters(), lr=0.001) for epoch in range(10): train(model, optimizer, criteria, train_loader, device) test(\u30e2\u30c7\u30eb\u3001\u57fa\u6e96\u3001test_loader\u3001\u30c7\u30d0\u30a4\u30b9)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">RMSprop \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f7f\u7528\u3059\u308b<\/h1>\n\n\n\n<p>model = MLP().to(device) optimizer = torch.optim.RMSprop(model.parameters(), lr=0.001) for epoch in range(10): train(model, optimizer, criteria, train_loader, device) test(\u30e2\u30c7\u30eb\u3001\u57fa\u6e96\u3001test_loader\u3001\u30c7\u30d0\u30a4\u30b9)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>\n\u5728\u4ee5\u4e0a\u793a\u4f8b\u4e2d\uff0c\u4f7f\u7528\u4e86\u4e09\u79cd\u4e0d\u540c\u7684\u4f18\u5316\u5668\uff08SGD\u3001Adam\u3001RMSprop\uff09\u5bf9\u540c\u4e00\u4efb\u52a1\uff08MNIST\u624b\u5199\u6570\u5b57\u8bc6\u522b\uff09\u8fdb\u884c\u4e86\u8bad\u7ec3\uff0c\u5e76\u6bd4\u8f83\u4e86\u5b83\u4eec\u7684\u8868\u73b0\u3002\u901a\u8fc7\u6bd4\u8f83\u4e0d\u540c\u4f18\u5316\u5668\u5728\u540c\u4e00\u4efb\u52a1\u4e0a\u7684\u8868\u73b0\uff0c\u53ef\u4ee5\u9009\u62e9\u6700\u5408\u9002\u7684\u4f18\u5316\u5668\u548c\u8d85\u53c2\u6570\u3002\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u304c\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u69cb\u7bc9\u3059\u308b\u65b9\u6cd5\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001torch.nn \u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u4e00\u9023\u306e\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30ec\u30a4\u30e4\u30fc\u3068\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u63d0\u4f9b\u3059\u308b\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002nn.Module \u30af\u30e9\u30b9\u3092\u7d99\u627f\u3057\u3066 forward() \u30e1\u30bd\u30c3\u30c9\u3092\u5b9f\u88c5\u3059\u308b\u3053\u3068\u3067\u3001\u72ec\u81ea\u306e\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u5358\u7d14\u306a\u5b8c\u5168\u306b\u63a5\u7d9a\u3055\u308c\u305f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u69cb\u7bc9\u3059\u308b\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nfrom torch import nn\n\nclass Net(nn.Module):\n    def __init__(self):\n        super().__init__()\n        self.fc1 = nn.Linear(784, 256)\n        self.fc2 = nn.Linear(256, 128)\n        self.fc3 = nn.Linear(128, 10)\n        self.relu = nn.ReLU()\n\n    def forward(self, x):\n        x = x.view(-1, 784)\n        x = self.relu(self.fc1(x))\n        x = self.relu(self.fc2(x))\n        x = self.fc3(x)\n        return x\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001Net \u3068\u3044\u3046\u540d\u524d\u306e\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u30013 \u3064\u306e\u5b8c\u5168\u306b\u63a5\u7d9a\u3055\u308c\u305f\u5c64\u3068 ReLU \u6d3b\u6027\u5316\u95a2\u6570\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\u521d\u671f\u5316\u30e1\u30bd\u30c3\u30c9 __init__() \u3067\u306f\u3001\u5165\u529b\u5c64 (784 \u6b21\u5143) \u3068 2 \u3064\u306e\u96a0\u308c\u5c64 (256 \u6b21\u5143\u3068 128 \u6b21\u5143) \u306e 3 \u3064\u306e\u5168\u7d50\u5408\u5c64\u304c nn.Linear() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u4f5c\u6210\u3055\u308c\u3001ReLU \u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\u540c\u6642\u306b\u6a5f\u80fd\u3057\u307e\u3059\u3002\u9806\u4f1d\u64ad\u30e1\u30bd\u30c3\u30c9 forward() \u3067\u306f\u3001\u5165\u529b\u304c\u6700\u521d\u306b\u6574\u5f62\u3055\u308c\u3001\u6b21\u306b 3 \u3064\u306e\u5168\u7d50\u5408\u5c64\u3068 ReLU \u6d3b\u6027\u5316\u95a2\u6570\u3092\u9806\u306b\u8a08\u7b97\u3057\u3001\u6700\u7d42\u7684\u306b\u51fa\u529b\u7d50\u679c\u304c\u5f97\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u6b21\u306e\u4f8b\u306e\u3088\u3046\u306b\u3001\u30e2\u30c7\u30eb\u3092\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3057\u3001\u8a08\u7b97\u306e\u305f\u3081\u306b\u5165\u529b\u30c7\u30fc\u30bf\u3092\u30e2\u30c7\u30eb\u306b\u6e21\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">makefile\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code># \u521b\u5efa\u795e\u7ecf\u7f51\u7edc\u6a21\u578b\u5b9e\u4f8b\nmodel = Net()\n\n# \u8f93\u5165\u6570\u636e\nx = torch.randn(64, 1, 28, 28)\n\n# \u8ba1\u7b97\u8f93\u51fa\u7ed3\u679c\ny = model(x)\n\n# \u8f93\u51fa\u7ed3\u679c\u5f62\u72b6\nprint(y.shape) # \u8f93\u51fa(64, 10)\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u307e\u305a\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 \u30e2\u30c7\u30eb\u3092\u4f5c\u6210\u3057\u3001\u5165\u529b\u30c7\u30fc\u30bf x (64 \u500b\u306e 1 \u30c1\u30e3\u30cd\u30eb\u300128\u00d728 \u30b5\u30a4\u30ba\u306e\u753b\u50cf) \u3092\u30e2\u30c7\u30eb\u306b\u6e21\u3057\u3066\u8a08\u7b97\u3057\u3001\u51fa\u529b\u7d50\u679c y \u3092\u53d6\u5f97\u3057\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001\u51fa\u529b\u5f62\u72b6\u306f (64, 10) \u3067\u3059\u3002\u3053\u308c\u306f\u300164 \u500b\u306e\u30b5\u30f3\u30d7\u30eb\u304c\u3042\u308a\u3001\u5404\u30b5\u30f3\u30d7\u30eb\u306b 10 \u500b\u306e\u51fa\u529b\u30d5\u30a3\u30fc\u30c1\u30e3\u304c\u3042\u308b\u3053\u3068\u3092\u610f\u5473\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>PyTorch \u306f\u3001\u5b8c\u5168\u306b\u63a5\u7d9a\u3055\u308c\u305f\u30ec\u30a4\u30e4\u30fc\u306b\u52a0\u3048\u3066\u3001\u7573\u307f\u8fbc\u307f\u30ec\u30a4\u30e4\u30fc\u3001\u30d7\u30fc\u30ea\u30f3\u30b0 \u30ec\u30a4\u30e4\u30fc\u3001\u30ea\u30ab\u30ec\u30f3\u30c8 \u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30ec\u30a4\u30e4\u30fc\u306a\u3069\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u3055\u307e\u3056\u307e\u306a\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30ec\u30a4\u30e4\u30fc\u3082\u63d0\u4f9b\u3057\u307e\u3059. \u7279\u5b9a\u306e\u30bf\u30b9\u30af\u3068\u30c7\u30fc\u30bf\u578b\u306b\u5fdc\u3058\u3066\u7570\u306a\u308b\u30ec\u30a4\u30e4\u30fc\u3092\u9078\u629e\u3057\u3066\u3001\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u69cb\u7bc9\u3067\u304d\u307e\u3059\u30e2\u30c7\u30eb\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch\u306e\u6d3b\u6027\u5316\u95a2\u6570\u3068\u640d\u5931\u95a2\u6570\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u6559\u3048\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u306f\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u3055\u307e\u3056\u307e\u306a\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3068\u640d\u5931\u95a2\u6570\u3092\u63d0\u4f9b\u3057\u3001\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u3068\u30e2\u30c7\u30eb\u306b\u5f93\u3063\u3066\u3001\u3055\u307e\u3056\u307e\u306a\u95a2\u6570\u3092\u9078\u629e\u3057\u3066\u8a08\u7b97\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6d3b\u6027\u5316\u95a2\u6570: \u6d3b\u6027\u5316\u95a2\u6570\u306f\u3001\u30e2\u30c7\u30eb\u306e\u8868\u73fe\u529b\u3068\u30d5\u30a3\u30c3\u30c6\u30a3\u30f3\u30b0\u80fd\u529b\u3092\u9ad8\u3081\u308b\u305f\u3081\u306b\u3001\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u306e\u975e\u7dda\u5f62\u5909\u63db\u3067\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001PyTorch \u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3067\u3059\u3002\n<ul class=\"wp-block-list\">\n<li>ReLU \u95a2\u6570 (nn.ReLU()): Rectified Linear Unit (Rectified Linear Unit)\u30010 \u672a\u6e80\u306e\u5165\u529b\u3092 0 \u306b\u8a2d\u5b9a\u3057\u30010 \u4ee5\u4e0a\u306e\u5165\u529b\u306f\u5909\u66f4\u3055\u308c\u307e\u305b\u3093\u3002<\/li>\n\n\n\n<li>\u30b7\u30b0\u30e2\u30a4\u30c9\u95a2\u6570 (nn.Sigmoid()): \u5165\u529b\u3092\u533a\u9593 [0,1] \u306b\u30de\u30c3\u30d7\u3057\u307e\u3059\u3002\u901a\u5e38\u3001\u30d0\u30a4\u30ca\u30ea\u5206\u985e\u30bf\u30b9\u30af\u306e\u51fa\u529b\u5c64\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>Tanh \u95a2\u6570 (nn.Tanh()): \u5165\u529b\u3092\u533a\u9593 [-1,1] \u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3059\u308b\u53cc\u66f2\u7dda\u6b63\u63a5\u95a2\u6570\u306f\u3001\u901a\u5e38\u3001\u591a\u5206\u985e\u30bf\u30b9\u30af\u306e\u51fa\u529b\u5c64\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>Softmax \u95a2\u6570 (nn.Softmax()): \u5165\u529b\u3092\u533a\u9593 [0,1] \u306b\u30de\u30c3\u30d4\u30f3\u30b0\u3057\u3001\u591a\u5206\u985e\u30bf\u30b9\u30af\u306e\u51fa\u529b\u5c64\u306e\u6b63\u898f\u5316\u51e6\u7406\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u640d\u5931\u95a2\u6570: \u640d\u5931\u95a2\u6570\u306f\u3001\u30e2\u30c7\u30eb\u51fa\u529b\u3068\u5b9f\u969b\u306e\u30e9\u30d9\u30eb\u306e\u5dee\u3092\u8a55\u4fa1\u3057\u3001\u5dee\u306b\u5fdc\u3058\u3066\u6700\u9069\u5316\u3059\u308b\u305f\u3081\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001PyTorch \u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u640d\u5931\u95a2\u6570\u3067\u3059\u3002\n<ul class=\"wp-block-list\">\n<li>\u4ea4\u5dee\u30a8\u30f3\u30c8\u30ed\u30d4\u30fc\u640d\u5931\u95a2\u6570 (nn.CrossEntropyLoss()): \u591a\u5206\u985e\u30bf\u30b9\u30af\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u51fa\u529b\u7d50\u679c\u3092\u5b9f\u969b\u306e\u30e9\u30d9\u30eb\u3068\u6bd4\u8f03\u3057\u3001\u4ea4\u5dee\u30a8\u30f3\u30c8\u30ed\u30d4\u30fc\u640d\u5931\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30d0\u30a4\u30ca\u30ea \u30af\u30ed\u30b9 \u30a8\u30f3\u30c8\u30ed\u30d4\u30fc\u640d\u5931\u95a2\u6570 (nn.BCELoss()): \u30d0\u30a4\u30ca\u30ea\u5206\u985e\u30bf\u30b9\u30af\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u51fa\u529b\u7d50\u679c\u3092\u5b9f\u969b\u306e\u30e9\u30d9\u30eb\u3068\u6bd4\u8f03\u3057\u3001\u30d0\u30a4\u30ca\u30ea \u30af\u30ed\u30b9 \u30a8\u30f3\u30c8\u30ed\u30d4\u30fc\u640d\u5931\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5e73\u5747\u4e8c\u4e57\u8aa4\u5dee\u640d\u5931\u95a2\u6570 (nn.MSELoss()): \u56de\u5e30\u30bf\u30b9\u30af\u306b\u9069\u3057\u3066\u304a\u308a\u3001\u51fa\u529b\u7d50\u679c\u3092\u5b9f\u969b\u306e\u30e9\u30d9\u30eb\u3068\u6bd4\u8f03\u3057\u3001\u5e73\u5747\u4e8c\u4e57\u8aa4\u5dee\u640d\u5931\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>KL \u30c0\u30a4\u30d0\u30fc\u30b8\u30a7\u30f3\u30b9\u640d\u5931\u95a2\u6570 (nn.KLDivLoss()): \u30e2\u30c7\u30eb\u51fa\u529b\u3068\u30bf\u30fc\u30b2\u30c3\u30c8\u78ba\u7387\u5206\u5e03\u306e\u9593\u306e KL \u30c0\u30a4\u30d0\u30fc\u30b8\u30a7\u30f3\u30b9\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u30e2\u30c7\u30eb \u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306e\u751f\u6210\u306b\u3088\u304f\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\u6d3b\u6027\u5316\u95a2\u6570\u3068\u640d\u5931\u95a2\u6570\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u901a\u5e38\u3001\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u3068\u30e2\u30c7\u30eb\u306b\u5fdc\u3058\u3066\u3001\u9069\u5207\u306a\u95a2\u6570\u3092\u9078\u629e\u3057\u3001\u9069\u5207\u306a\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u6642\u306b\u3001\u52fe\u914d\u7206\u767a\u3084\u6d88\u5931\u306a\u3069\u306e\u554f\u984c\u3092\u56de\u907f\u3057\u305f\u308a\u3001\u9069\u5207\u306a\u5b66\u7fd2\u7387\u3084\u305d\u306e\u4ed6\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u9078\u629e\u3057\u305f\u308a\u3059\u308b\u306a\u3069\u3001\u6d3b\u6027\u5316\u95a2\u6570\u3068\u640d\u5931\u95a2\u6570\u306e\u6b63\u78ba\u6027\u3068\u52b9\u7387\u6027\u306b\u3082\u6ce8\u610f\u3092\u6255\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u306e\u521d\u671f\u5316\u306e\u91cd\u307f\u3068\u30d0\u30a4\u30a2\u30b9\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3067\u306f\u3001\u91cd\u307f\u3068\u30d0\u30a4\u30a2\u30b9\u306e\u521d\u671f\u5316\u306f\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5927\u304d\u306a\u5f71\u97ff\u3092\u4e0e\u3048\u307e\u3059\u3002PyTorch \u306f\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u3055\u307e\u3056\u307e\u306a\u521d\u671f\u5316\u30e1\u30bd\u30c3\u30c9\u3092\u63d0\u4f9b\u3057\u3001\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u3068\u30e2\u30c7\u30eb\u306b\u5f93\u3063\u3066\u521d\u671f\u5316\u306e\u305f\u3081\u306b\u3055\u307e\u3056\u307e\u306a\u30e1\u30bd\u30c3\u30c9\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u91cd\u307f\u306e\u521d\u671f\u5316: \u91cd\u307f\u306e\u521d\u671f\u5316\u306b\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30e1\u30bd\u30c3\u30c9\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002\n<ul class=\"wp-block-list\">\n<li>\u5b9a\u6570\u306e\u521d\u671f\u5316 (nn.init.constant()): \u5b9a\u6570\u3092\u4f7f\u7528\u3057\u3066\u91cd\u307f\u3092\u521d\u671f\u5316\u3057\u307e\u3059.\u5b9a\u6570\u306f\u624b\u52d5\u3067\u8a2d\u5b9a\u3059\u308b\u304b\u3001\u30c7\u30fc\u30bf\u306e\u7279\u6027\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u5024\u3092\u9078\u629e\u3067\u304d\u307e\u3059.<\/li>\n\n\n\n<li>\u30e9\u30f3\u30c0\u30e0\u306a\u521d\u671f\u5316 (nn.init.normal() \u304a\u3088\u3073 nn.init.xavier_normal()): \u91cd\u307f\u306f\u30e9\u30f3\u30c0\u30e0\u306a\u5024\u3067\u521d\u671f\u5316\u3055\u308c\u3001\u30c7\u30fc\u30bf\u306e\u7279\u6027\u3068\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u69cb\u9020\u306b\u5f93\u3063\u3066\u521d\u671f\u5316\u306e\u305f\u3081\u306b\u7570\u306a\u308b\u5206\u5e03\u3068\u5206\u6563\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u4e2d\u3067\u3001nn.init.normal() \u306f\u521d\u671f\u5316\u306b\u6b63\u898f\u5206\u5e03\u3092\u4f7f\u7528\u3057\u3001nn.init.xavier_normal() \u306f\u521d\u671f\u5316\u306b\u6b63\u898f\u5206\u5e03\u3092\u4f7f\u7528\u3057\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u69cb\u9020\u306b\u5f93\u3063\u3066\u9069\u5207\u306a\u5206\u6563\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>He \u521d\u671f\u5316 (nn.init.kaiming_normal()): ReLU \u6d3b\u6027\u5316\u95a2\u6570\u306e\u91cd\u307f\u306e\u521d\u671f\u5316\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001\u521d\u671f\u5316\u306b\u6b63\u898f\u5206\u5e03\u3092\u4f7f\u7528\u3057\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u69cb\u9020\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u5206\u6563\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b9\u30d1\u30fc\u30b9\u521d\u671f\u5316 (nn.init.sparse()): \u91cd\u307f\u306e\u521d\u671f\u5316\u306b\u30b9\u30d1\u30fc\u30b9 \u30de\u30c8\u30ea\u30c3\u30af\u30b9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u901a\u5e38\u3001\u8a00\u8a9e\u30e2\u30c7\u30eb\u306a\u3069\u306e\u30b9\u30d1\u30fc\u30b9 \u30c7\u30fc\u30bf\u306e\u51e6\u7406\u304c\u5fc5\u8981\u306a\u30bf\u30b9\u30af\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u30d0\u30a4\u30a2\u30b9\u306e\u521d\u671f\u5316: \u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30d0\u30a4\u30a2\u30b9\u306e\u521d\u671f\u5316\u65b9\u6cd5\u306f\u6b21\u306e\u3068\u304a\u308a\u3067\u3059\u3002\n<ul class=\"wp-block-list\">\n<li>\u5b9a\u6570\u306e\u521d\u671f\u5316 (nn.init.constant()): \u5b9a\u6570\u3092\u4f7f\u7528\u3057\u3066\u30d0\u30a4\u30a2\u30b9\u3092\u521d\u671f\u5316\u3057\u307e\u3059. \u5b9a\u6570\u306f\u624b\u52d5\u3067\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3082, \u30c7\u30fc\u30bf\u306e\u7279\u6027\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u5024\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059.<\/li>\n\n\n\n<li>\u30bc\u30ed\u521d\u671f\u5316 (nn.init.zeros()): \u30d0\u30a4\u30a2\u30b9\u3092 0 \u3067\u521d\u671f\u5316\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30e9\u30f3\u30c0\u30e0\u306a\u521d\u671f\u5316 (nn.init.normal() \u304a\u3088\u3073 nn.init.xavier_normal()): \u30e9\u30f3\u30c0\u30e0\u306a\u5024\u3092\u4f7f\u7528\u3057\u3066\u30d0\u30a4\u30a2\u30b9\u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u306e\u7279\u6027\u3068\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u69cb\u9020\u306b\u5fdc\u3058\u3066\u3001\u521d\u671f\u5316\u306b\u3055\u307e\u3056\u307e\u306a\u5206\u5e03\u3068\u5206\u6563\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u4e2d\u3067\u3001nn.init.normal() \u306f\u521d\u671f\u5316\u306b\u6b63\u898f\u5206\u5e03\u3092\u4f7f\u7528\u3057\u3001nn.init.xavier_normal() \u306f\u521d\u671f\u5316\u306b\u6b63\u898f\u5206\u5e03\u3092\u4f7f\u7528\u3057\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u69cb\u9020\u306b\u5f93\u3063\u3066\u9069\u5207\u306a\u5206\u6563\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>\u521d\u671f\u5316\u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u901a\u5e38\u3001\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u3084\u30e2\u30c7\u30eb\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u30e1\u30bd\u30c3\u30c9\u3092\u9078\u629e\u3057\u3001\u9069\u5207\u306a\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u6642\u306b, \u52fe\u914d\u7206\u767a\u3084\u6d88\u5931\u306a\u3069\u306e\u554f\u984c\u3092\u56de\u907f\u3059\u308b\u306a\u3069, \u521d\u671f\u5316\u65b9\u6cd5\u306e\u6b63\u78ba\u6027\u3068\u52b9\u7387\u6027\u306b\u3082\u6ce8\u610f\u3092\u6255\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059. \u9069\u5207\u306a\u91cd\u307f\u3068\u30d0\u30a4\u30a2\u30b9\u306e\u521d\u671f\u5316\u65b9\u6cd5\u3092\u9078\u629e\u3059\u308b\u3068, \u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u9ad8\u901f\u5316\u3057, \u30e2\u30c7\u30eb\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059. .<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u691c\u8a3c\u306e\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u6df1\u5c64\u5b66\u7fd2\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u30d7\u30ed\u30bb\u30b9\u3067\u306f\u3001\u901a\u5e38\u3001\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u30bb\u30c3\u30c8\u3001\u691c\u8a3c\u30bb\u30c3\u30c8\u3001\u30c6\u30b9\u30c8\u30bb\u30c3\u30c8\u306e 3 \u3064\u306e\u90e8\u5206\u306b\u5206\u5272\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059.\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u30bb\u30c3\u30c8\u306f\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u66f4\u65b0\u306b\u4f7f\u7528\u3055\u308c\u3001\u691c\u8a3c\u30bb\u30c3\u30c8\u306f\u6b21\u306e\u76ee\u7684\u3067\u4f7f\u7528\u3055\u308c\u307e\u3059.\u30e2\u30c7\u30eb\u306e\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u3068\u30e2\u30c7\u30eb\u306e\u9078\u629e. \u30c6\u30b9\u30c8 \u30bb\u30c3\u30c8\u306f\u3001\u30e2\u30c7\u30eb\u306e\u6700\u7d42\u7684\u306a\u8a55\u4fa1\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9 \u30c6\u30b9\u30c8\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001torch.utils.data \u30e2\u30b8\u30e5\u30fc\u30eb\u304a\u3088\u3073 torchvision.datasets \u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8 \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u30ed\u30fc\u30c9\u304a\u3088\u3073\u51e6\u7406\u3067\u304d\u307e\u3059\u3002\u305d\u306e\u4e2d\u3067\u3001torch.utils.data \u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3068\u30c7\u30fc\u30bf \u30ed\u30fc\u30c0\u30fc\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3067\u304d\u308b Dataset \u3068 DataLoader \u306e 2 \u3064\u306e\u30af\u30e9\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059. torchvision.datasets \u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u76f4\u63a5\u30ed\u30fc\u30c9\u3057\u3066\u4f7f\u7528\u3067\u304d\u308b\u8907\u6570\u306e\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8 \u30af\u30e9\u30b9\u3092\u63d0\u4f9b\u3057\u307e\u3059.&nbsp;torchvision.datasets \u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u30ed\u30fc\u30c9\u3059\u308b\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nfrom torchvision import datasets, transforms\n\n# \u5b9a\u4e49\u6570\u636e\u9884\u5904\u7406\u65b9\u6cd5\ntransform = transforms.Compose([\n    transforms.ToTensor(),\n    transforms.Normalize((0.5,), (0.5,))\n])\n\n# \u52a0\u8f7d\u8bad\u7ec3\u96c6\u548c\u9a8c\u8bc1\u96c6\u6570\u636e\ntrainset = datasets.MNIST('data\/', train=True, download=True, transform=transform)\nvalset = datasets.MNIST('data\/', train=False, download=True, transform=transform)\n\n# \u521b\u5efa\u6570\u636e\u52a0\u8f7d\u5668\ntrainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True)\nvalloader = torch.utils.data.DataLoader(valset, batch_size=64, shuffle=False)\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u5909\u63db\u5909\u6570\u304c\u6700\u521d\u306b\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u306b\u306f\u30012 \u3064\u306e\u524d\u51e6\u7406\u30e1\u30bd\u30c3\u30c9\u304c\u542b\u307e\u308c\u307e\u3059\u3002ToTensor() \u30e1\u30bd\u30c3\u30c9\u306f\u3001\u753b\u50cf\u30c7\u30fc\u30bf\u3092\u30c6\u30f3\u30bd\u30eb \u30c7\u30fc\u30bf\u306b\u5909\u63db\u3057\u3001\u305d\u308c\u3092\u7bc4\u56f2 [0,1] \u306b\u6b63\u898f\u5316\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u306e\u5e73\u5747\u5024\u304c 0.5\u3001\u5206\u6563\u304c 0.5 \u306b\u306a\u308b\u3088\u3046\u306b\u30c7\u30fc\u30bf\u3092\u8abf\u6574\u3057\u307e\u3059\u3002\u6b21\u306b\u3001datasets.MNIST() \u30e1\u30bd\u30c3\u30c9\u3092\u4f7f\u7528\u3057\u3066\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30bb\u30c3\u30c8\u3068\u691c\u8a3c\u30bb\u30c3\u30c8\u306e\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u307f\u3001\u524d\u51e6\u7406\u306e\u305f\u3081\u306b\u5909\u63db\u5909\u6570\u3092\u305d\u308c\u3089\u306b\u6e21\u3057\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001DataLoader \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066 2 \u3064\u306e\u30c7\u30fc\u30bf \u30ed\u30fc\u30c0\u30fc\u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\u3053\u308c\u3089\u306f\u3001\u305d\u308c\u305e\u308c\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30bb\u30c3\u30c8\u3068\u691c\u8a3c\u30bb\u30c3\u30c8\u306e\u30c7\u30fc\u30bf\u306e\u30d0\u30c3\u30c1\u8aad\u307f\u8fbc\u307f\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306b\u30c7\u30fc\u30bf \u30ed\u30fc\u30c0\u30fc\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u3001\u901a\u5e38\u3001\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306e\u53cd\u5fa9\u3054\u3068\u306b\u30c7\u30fc\u30bf \u30bb\u30c3\u30c8\u3092\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u7528\u306e\u30d0\u30c3\u30c1\u306b\u5206\u5272\u3057\u3001\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30d7\u30ed\u30bb\u30b9\u306e\u640d\u5931\u5024\u3068\u7cbe\u5ea6\u3092\u8a18\u9332\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u6642\u306b\u3001\u691c\u8a3c\u30bb\u30c3\u30c8\u3067\u30e2\u30c7\u30eb\u3092\u30c6\u30b9\u30c8\u3059\u308b\u3068\u304d\u306f\u3001\u30c7\u30fc\u30bf \u30ed\u30fc\u30c0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u691c\u8a3c\u30bb\u30c3\u30c8\u3092\u30d0\u30c3\u30c1\u3067\u8aad\u307f\u8fbc\u307f\u3001\u30c6\u30b9\u30c8 \u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u640d\u5931\u3068\u7cbe\u5ea6\u306e\u6307\u6a19\u3092\u8a18\u9332\u3059\u308b\u3053\u3068\u3082\u5fc5\u8981\u3067\u3059\u3002\u8a18\u9332\u3055\u308c\u305f\u6307\u6a19\u3068\u30e2\u30c7\u30eb\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5fdc\u3058\u3066\u3001\u30e2\u30c7\u30eb\u306e\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u3068\u30e2\u30c7\u30eb\u306e\u9078\u629e\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u8981\u3059\u308b\u306b\u3001PyTorch \u306f\u67d4\u8edf\u3067\u4fbf\u5229\u306a\u30c7\u30fc\u30bf\u306e\u8aad\u307f\u8fbc\u307f\u3068\u51e6\u7406\u65b9\u6cd5\u3092\u63d0\u4f9b\u3057\u3001\u7279\u5b9a\u306e\u30bf\u30b9\u30af\u3068\u30c7\u30fc\u30bf \u30bb\u30c3\u30c8\u306b\u5f93\u3063\u3066\u3001\u8aad\u307f\u8fbc\u307f\u3068\u5206\u5272\u306b\u9069\u5207\u306a\u65b9\u6cd5\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002\u540c\u6642\u306b\u3001\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u5408\u7406\u7684\u306b\u5206\u5272\u3057\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u691c\u8a3c\u306e\u6307\u6a19\u3092\u8a18\u9332\u3059\u308b\u3053\u3068\u3067\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u9ad8\u901f\u5316\u3057\u3001\u30e2\u30c7\u30eb\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u691c\u8a3c\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u691c\u8a3c\u306f\u901a\u5e38\u3001\u6b21\u306e\u624b\u9806\u306b\u5206\u3051\u3089\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3059\u308b: \u307e\u305a\u3001\u30e2\u30c7\u30eb \u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3001\u30e2\u30c7\u30eb\u306e\u69cb\u9020\u3068\u305d\u306e\u4e2d\u306e\u9806\u4f1d\u64ad\u30e1\u30bd\u30c3\u30c9\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30e2\u30c7\u30eb\u69cb\u9020\u3092\u5b9a\u7fa9\u3059\u308b\u3068\u304d\u3001\u5168\u7d50\u5408\u5c64 (nn.Linear())\u3001\u7573\u307f\u8fbc\u307f\u5c64 (nn.Conv2d())\u3001\u30d7\u30fc\u30ea\u30f3\u30b0\u5c64 (nn.MaxPool2d) \u306a\u3069\u3001nn.Module \u30af\u30e9\u30b9\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u8907\u6570\u306e\u5c64\u3068\u95a2\u6570\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 ())\u3001\u6d3b\u6027\u5316\u95a2\u6570 (nn.ReLU()) \u306a\u3069&nbsp;\u9806\u4f1d\u64ad\u6cd5\u3092\u5b9a\u7fa9\u3059\u308b\u5834\u5408\u3001\u30e2\u30c7\u30eb\u306e\u5165\u529b\u304b\u3089\u51fa\u529b\u307e\u3067\u306e\u8a08\u7b97\u30d7\u30ed\u30bb\u30b9\u3092\u5b9f\u88c5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u640d\u5931\u95a2\u6570\u3068\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u3092\u5b9a\u7fa9\u3059\u308b: \u6b21\u306b\u3001\u640d\u5931\u95a2\u6570\u3068\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u640d\u5931\u95a2\u6570\u306f\u3001\u30e2\u30c7\u30eb\u306e\u51fa\u529b\u3068\u5b9f\u969b\u306e\u30e9\u30d9\u30eb\u306e\u5dee\u3092\u8a55\u4fa1\u3057\u3001\u5dee\u306b\u5fdc\u3058\u3066\u6700\u9069\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u640d\u5931\u95a2\u6570\u306b\u306f\u3001\u4ea4\u5dee\u30a8\u30f3\u30c8\u30ed\u30d4\u30fc\u640d\u5931\u95a2\u6570 (nn.CrossEntropyLoss())\u3001\u5e73\u5747\u4e8c\u4e57\u8aa4\u5dee\u640d\u5931\u95a2\u6570 (nn.MSELoss()) \u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306f\u3001\u30e2\u30c7\u30eb\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u66f4\u65b0\u3057\u3001\u640d\u5931\u95a2\u6570\u3092\u6700\u5c0f\u5316\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u306b\u306f\u3001\u78ba\u7387\u7684\u52fe\u914d\u964d\u4e0b\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6 (torch.optim.SGD())\u3001Adam \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6 (torch.optim.Adam()) \u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30e2\u30c7\u30eb\u3092\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3059\u308b: \u6b21\u306b\u3001\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30bb\u30c3\u30c8 \u30c7\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u3092\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3057\u307e\u3059\u3002\u5404\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u53cd\u5fa9\u3067\u306f\u3001\u30c7\u30fc\u30bf\u306e\u30d0\u30c3\u30c1\u3092\u30e2\u30c7\u30eb\u306b\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u30e2\u30c7\u30eb\u51fa\u529b\u3068\u771f\u306e\u30e9\u30d9\u30eb\u306e\u9593\u306e\u640d\u5931\u304c\u8a08\u7b97\u3055\u308c\u307e\u3059\u3002\u6b21\u306b\u3001\u640d\u5931\u5024\u306b\u57fa\u3065\u3044\u3066\u52fe\u914d\u304c\u8a08\u7b97\u3055\u308c\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u66f4\u65b0\u3055\u308c\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001\u5404\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u53cd\u5fa9\u306e\u640d\u5931\u5024\u3084\u7cbe\u5ea6\u306a\u3069\u306e\u6307\u6a19\u304c\u8a18\u9332\u3055\u308c\u3001\u8996\u899a\u5316\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30e2\u30c7\u30eb\u3092\u691c\u8a3c\u3059\u308b: \u5404\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u53cd\u5fa9\u306e\u5f8c\u3001\u691c\u8a3c\u30bb\u30c3\u30c8 \u30c7\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u3092\u30c6\u30b9\u30c8\u3057\u3001\u30e2\u30c7\u30eb\u306e\u640d\u5931\u5024\u3068\u7cbe\u5ea6\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u6307\u6a19\u3092\u8a18\u9332\u3057\u307e\u3059\u3002\u8a18\u9332\u3055\u308c\u305f\u6307\u6a19\u3068\u30e2\u30c7\u30eb\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u306b\u5fdc\u3058\u3066\u3001\u30e2\u30c7\u30eb\u306e\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u3068\u30e2\u30c7\u30eb\u306e\u9078\u629e\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c6\u30b9\u30c8 \u30e2\u30c7\u30eb: \u6700\u5f8c\u306b\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u304c\u5b8c\u4e86\u3057\u305f\u5f8c\u3001\u30c6\u30b9\u30c8 \u30bb\u30c3\u30c8 \u30c7\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u306e\u6700\u7d42\u7684\u306a\u8a55\u4fa1\u3068\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9 \u30c6\u30b9\u30c8\u3092\u5b9f\u884c\u3067\u304d\u3001\u30e2\u30c7\u30eb\u306e\u640d\u5931\u5024\u3084\u7cbe\u5ea6\u306a\u3069\u306e\u6307\u6a19\u3092\u8a18\u9332\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4ee5\u4e0b\u306f\u3001\u5358\u7d14\u306a\u5b8c\u5168\u306b\u63a5\u7d9a\u3055\u308c\u305f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u304a\u3088\u3073\u691c\u8a3c\u3059\u308b\u305f\u3081\u306e\u30b5\u30f3\u30d7\u30eb \u30b3\u30fc\u30c9\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torch.nn as nn\nimport torch.optim as optim\nfrom torchvision import datasets, transforms\n\n# \u5b9a\u4e49\u6a21\u578b\u7c7b\nclass Net(nn.Module):\n    def __init__(self):\n        super(Net, self).__init__()\n        self.fc1 = nn.Linear(784, 512)\n        self.fc2 = nn.Linear(512, 256)\n        self.fc3 = nn.Linear(256, 10)\n\n    def forward(self, x):\n        x = x.view(-1, 784)\n        x = nn.functional.relu(self.fc1(x))\n        x = nn.functional.relu(self.fc2(x))\n        x = self.fc3(x)\n        return nn\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u95a2\u6570\u3092\u5b9a\u7fa9\u3059\u308b<\/h1>\n\n\n\n<p>def train(\u30e2\u30c7\u30eb\u3001\u30c7\u30d0\u30a4\u30b9\u3001train_loader\u3001optimizer\u3001\u57fa\u6e96\u3001\u30a8\u30dd\u30c3\u30af): model.train() train_loss = 0 correct = 0 for batch_idx, (data, target) in enumerate(train_loader): data, target = data.to(device \uff09\u3001target.to\uff08\u30c7\u30d0\u30a4\u30b9\uff09optimizer.zero_grad\uff08\uff09\u51fa\u529b=\u30e2\u30c7\u30eb\uff08\u30c7\u30fc\u30bf\uff09\u640d\u5931=\u57fa\u6e96\uff08\u51fa\u529b\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\uff09\u640d\u5931.backward\uff08\uff09optimizer.step\uff08\uff09train_loss + = loss.item\uff08\uff09* data.size\uff08 0) pred = output.argmax(dim=1, keepdim=True) \u6b63\u3057\u3044 += pred.eq(target.view_as(pred)).sum().item() train_loss \/= len(train_loader.dataset)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">css\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>print('Train Epoch: {} \\tLoss: {:.6f} \\tAcc: {:.6f}'.format(\n    epoch, train_loss, correct \/ len(train_loader.dataset)))\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u691c\u8a3c\u95a2\u6570\u3092\u5b9a\u7fa9\u3059\u308b<\/h1>\n\n\n\n<p>def val(\u30e2\u30c7\u30eb\u3001\u30c7\u30d0\u30a4\u30b9\u3001val_loader\u3001\u57fa\u6e96): model.eval() val_loss = 0 correct = 0 with torch.no_grad(): for data, target in val_loader: data, target = data.to(device), target. to(\u30c7\u30d0\u30a4\u30b9) output = model(data) val_loss += criteria(output, target).item() * data.size(0) pred = output.argmax(dim=1, keepdim=True) correct += pred.eq (target.view_as(pred)).sum().item() val_loss \/= len(val_loader.dataset)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">lua\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>print('Val set: Average loss: {:.4f}, Accuracy: {}\/{} ({:.6f}%)\\n'.format(\n    val_loss, correct, len(val_loader.dataset),\n    100. * correct \/ len(val_loader.dataset)))\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u8aad\u307f\u8fbc\u3080<\/h1>\n\n\n\n<p>transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))]) trainset = datasets.MNIST(&#8216;data\/&#8217;, train=True, download=True, transform=\u5909\u63db) valset = datasets.MNIST(&#8216;data\/&#8217;, train=False, download=True, transform=transform) train_loader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True) val_loader = torch.utils .data.DataLoader(valset\u3001batch_size=64\u3001shuffle=False)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u30e2\u30c7\u30eb\u3001\u640d\u5931\u95a2\u6570\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u5b9a\u7fa9\u3059\u308b<\/h1>\n\n\n\n<p>\u30c7\u30d0\u30a4\u30b9 = torch.device(\u300ccuda\u300d\u306a\u3089 torch.cuda.is_available() \u3067\u306a\u3051\u308c\u3070\u300ccpu\u300d) \u30e2\u30c7\u30eb = Net().to(\u30c7\u30d0\u30a4\u30b9) \u57fa\u6e96 = nn.CrossEntropyLoss() \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6 = optim.Adam(model.parameters() \u3001lr=0.001)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb<\/h1>\n\n\n\n<p>for epoch in range(1, 11): train(\u30e2\u30c7\u30eb\u3001\u30c7\u30d0\u30a4\u30b9\u3001train_loader\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3001\u57fa\u6e96\u3001\u30a8\u30dd\u30c3\u30af) val(\u30e2\u30c7\u30eb\u3001\u30c7\u30d0\u30a4\u30b9\u3001val_loader\u3001\u57fa\u6e96)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u30c6\u30b9\u30c8\u30e2\u30c7\u30eb<\/h1>\n\n\n\n<p>test_loss = 0 \u6b63\u3057\u3044 = 0 torch.no_grad(): \u30c7\u30fc\u30bf\u306e\u5834\u5408\u3001val_loader \u306e\u30bf\u30fc\u30b2\u30c3\u30c8: \u30c7\u30fc\u30bf\u3001\u30bf\u30fc\u30b2\u30c3\u30c8 = data.to(\u30c7\u30d0\u30a4\u30b9)\u3001target.to(\u30c7\u30d0\u30a4\u30b9) \u51fa\u529b = \u30e2\u30c7\u30eb(\u30c7\u30fc\u30bf) test_loss += \u57fa\u6e96(\u51fa\u529b\u3001 target).item() * data.size(0) pred = output.argmax(dim=1, keepdim=True) \u6b63\u3057\u3044 += pred.eq(target.view_as(pred)).sum().item() test_loss \/= len(val_loader.dataset)<\/p>\n\n\n\n<p>print(&#8216;\\n\u30c6\u30b9\u30c8 \u30bb\u30c3\u30c8: \u5e73\u5747\u640d\u5931: {:.4f}\u3001\u7cbe\u5ea6: {}\/{} ({:.6f}%)\\n&#8217;.format( test_loss, correct, len(val_loader.dataset), 100. * \u6b63\u3057\u3044 \/ len(val_loader.dataset)))<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>\n\u5728\u4ee5\u4e0a\u793a\u4f8b\u4e2d\uff0c\u9996\u5148\u5b9a\u4e49\u4e86\u4e00\u4e2a\u5168\u8fde\u63a5\u795e\u7ecf\u7f51\u7edc\u6a21\u578b\u7c7bNet\uff0c\u5e76\u5728\u5176\u4e2d\u5b9a\u4e49\u4e86\u4e09\u4e2a\u5168\u8fde\u63a5\u5c42\u3002\u7136\u540e\uff0c\u5b9a\u4e49\u4e86train()\u51fd\u6570\u548c\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u3068\u6700\u9069\u5316\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u8abf\u6574\u3068\u6700\u9069\u5316\u306f\u3001\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306e\u975e\u5e38\u306b\u91cd\u8981\u306a\u90e8\u5206\u3067\u3042\u308a\u3001\u901a\u5e38\u306f\u6b21\u306e\u624b\u9806\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u9069\u5207\u306a\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u9078\u629e\u3059\u308b: \u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u30e2\u30c7\u30eb\u5185\u306e\u4e00\u90e8\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3067\u3042\u308a\u3001\u30e2\u30c7\u30eb\u306e\u91cd\u307f\u3084\u30d0\u30a4\u30a2\u30b9\u3068\u306f\u7570\u306a\u308a\u3001\u624b\u52d5\u3067\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u306b\u306f\u3001\u5b66\u7fd2\u7387\u3001\u30d0\u30c3\u30c1 \u30b5\u30a4\u30ba\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6 \u30bf\u30a4\u30d7\u3001\u6b63\u5247\u5316\u4fc2\u6570\u306a\u3069\u304c\u3042\u308a\u307e\u3059\u3002\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u9078\u629e\u3059\u308b\u3068\u304d\u306f\u3001\u7279\u5b9a\u306e\u554f\u984c\u3068\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306b\u5f93\u3063\u3066\u8abf\u6574\u304a\u3088\u3073\u6700\u9069\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u691c\u7d22\u7a7a\u9593\u3092\u5b9a\u7fa9\u3059\u308b: \u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u8abf\u6574\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u306f\u3001\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u691c\u7d22\u7a7a\u9593\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u7a7a\u9593\u306e\u63a2\u7d22\u306b\u306f\u3001\u901a\u5e38\u3001\u30b0\u30ea\u30c3\u30c9\u63a2\u7d22\u3001\u30e9\u30f3\u30c0\u30e0\u63a2\u7d22\u3001\u30d9\u30a4\u30b8\u30a2\u30f3\u6700\u9069\u5316\u306a\u3069\u306e\u65b9\u6cd5\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u304a\u3088\u3073\u691c\u8a3c\u30e2\u30c7\u30eb: \u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u7a7a\u9593\u3092\u691c\u7d22\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u3067\u306f\u3001\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30bb\u30c3\u30c8\u304a\u3088\u3073\u691c\u8a3c\u30bb\u30c3\u30c8 \u30c7\u30fc\u30bf\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u3092\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u304a\u3088\u3073\u691c\u8a3c\u3057\u3001\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u304a\u3088\u3073\u691c\u8a3c\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u640d\u5931\u5024\u3001\u7cbe\u5ea6\u3001\u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u6307\u6a19\u3092\u8a18\u9332\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u8a18\u9332\u3055\u308c\u305f\u30e1\u30c8\u30ea\u30af\u30b9\u306b\u57fa\u3065\u3044\u3066\u3001\u30e2\u30c7\u30eb\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u8a55\u4fa1\u3057\u3001\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u6700\u9069\u306a\u7d44\u307f\u5408\u308f\u305b\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u6700\u9069\u306a\u7d44\u307f\u5408\u308f\u305b\u3092\u9078\u629e\u3059\u308b: \u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u691c\u8a3c\u306e\u904e\u7a0b\u3067\u3001\u30e2\u30c7\u30eb\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u8a55\u4fa1\u3059\u308b\u305f\u3081\u306b\u3044\u304f\u3064\u304b\u306e\u6307\u6a19\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059. \u4e00\u822c\u7684\u306a\u6307\u6a19\u306b\u306f\u3001\u7cbe\u5ea6\u7387\u3001F1 \u5024\u3001ROC \u66f2\u7dda\u3001AUC \u5024\u306a\u3069\u304c\u3042\u308a\u307e\u3059.&nbsp;\u30e1\u30c8\u30ea\u30af\u30b9\u306e\u7d50\u679c\u306b\u57fa\u3065\u3044\u3066\u3001\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u6700\u9069\u306a\u7d44\u307f\u5408\u308f\u305b\u3092\u9078\u629e\u3057\u3001\u6700\u7d42\u7684\u306a\u30e2\u30c7\u30eb \u30c6\u30b9\u30c8\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>PyTorch \u3067\u306f\u3001optuna \u3084 Ray Tune \u306a\u3069\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u6700\u9069\u5316\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3057\u3066\u3001\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u7a7a\u9593\u3092\u81ea\u52d5\u7684\u306b\u691c\u7d22\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001optuna \u3092\u4f7f\u7528\u3057\u305f\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u691c\u7d22\u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import optuna\nimport torch\nimport torch.nn as nn\nimport torch.optim as optim\nfrom torchvision import datasets, transforms\n\n# \u5b9a\u4e49\u6a21\u578b\u7c7b\nclass Net(nn.Module):\n    def __init__(self, dropout_rate):\n        super(Net, self).__init__()\n        self.fc1 = nn.Linear(784, 512)\n        self.fc2 = nn.Linear(512, 256)\n        self.fc3 = nn.Linear(256, 10)\n        self.dropout_rate = dropout_rate\n\n    def forward(self, x):\n        x = x.view(-1, 784)\n        x = nn.functional.relu(self.fc1(x))\n        x = nn.functional.dropout(x, p=self.dropout_rate, training=self.training)\n        x = nn.functional.relu(self.fc2(x))\n        x = nn.functional.dropout(x, p=self.dropout_rate, training=self.training)\n        x = self.fc3(x)\n        return x\n\n# \u5b9a\u4e49\u76ee\u6807\u51fd\u6570\ndef objective(trial):\n    # \u5b9a\u4e49\u8d85\u53c2\u6570\u7a7a\u95f4\n    dropout_rate = trial.suggest_uniform('dropout_rate', 0, 0.5)\n    learning_rate = trial.suggest_loguniform('learning_rate', 1e-5, 1e-1)\n    batch_size = trial.suggest_categorical('batch_size', [32, 64, 128])\n\n    # \u52a0\u8f7d\u6570\u636e\u96c6\n    transform = transforms.Compose([transforms.ToTensor(),\n                                    transforms.Normalize((0.5,), (0.5,))])\n    trainset = datasets.MNIST('data\/', train=True,\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>download=True, transform=transform) valset = datasets.MNIST(&#8216;data\/&#8217;, train=False, download=True, transform=transform) train_loader = torch.utils.data.DataLoader(trainset, batch_size=batch_size, shuffle=True ) val_loader = torch.utils.data.DataLoader(valset, batch_size=batch_size, shuffle=False)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code># \u5b9a\u4e49\u6a21\u578b\u3001\u635f\u5931\u51fd\u6570\u548c\u4f18\u5316\u5668\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\nmodel = Net(dropout_rate).to(device)\ncriterion = nn.CrossEntropyLoss()\noptimizer = optim.Adam(model.parameters(), lr=learning_rate)\n\n# \u8bad\u7ec3\u6a21\u578b\nfor epoch in range(10):\n    model.train()\n    for batch_idx, (data, target) in enumerate(train_loader):\n        data, target = data.to(device), target.to(device)\n        optimizer.zero_grad()\n        output = model(data)\n        loss = criterion(output, target)\n        loss.backward()\n        optimizer.step()\n\n    # \u9a8c\u8bc1\u6a21\u578b\n    model.eval()\n    val_loss = 0\n    correct = 0\n    with torch.no_grad():\n        for data, target in val_loader:\n            data, target = data.to(device), target.to(device)\n            output = model(data)\n            val_loss += criterion(output, target).item() * data.size(0)\n            pred = output.argmax(dim=1, keepdim=True)\n            correct += pred.eq(target.view_as(pred)).sum().item()\n    val_loss \/= len(val_loader.dataset)\n\n    trial.report(val_loss, epoch)\n\n    if trial.should_prune():\n        raise optuna.structs.TrialPruned()\n\nreturn val_loss\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">optuna \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3057\u3001\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u691c\u7d22\u3092\u5b9f\u884c\u3059\u308b<\/h1>\n\n\n\n<p>study = optuna.create_study(direction=&#8217;minimize&#8217;) study.optimize(objective, n_trials=100)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u6700\u9069\u306a\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u7d44\u307f\u5408\u308f\u305b\u3068\u30c6\u30b9\u30c8\u7d50\u679c\u3092\u51fa\u529b\u3059\u308b<\/h1>\n\n\n\n<p>print(&#8216;\u30d9\u30b9\u30c8\u8a66\u884c: \u30b9\u30b3\u30a2 {:.4f}, params {}&#8217;.format(study.best_value, study.best_params)) best_dropout_rate = study.best_params[&#8216;dropout_rate&#8217;] best_learning_rate = study.best_params[&#8216;learning_rate&#8217;] best_batch_size = study.best_params[&#8216;batch_size&#8217;]<\/p>\n\n\n\n<p>testset = datasets.MNIST(&#8216;data\/&#8217;, train=False, download=True, transform=transform) test_loader = torch.utils.data.DataLoader(testset, batch_size=best_batch_size, shuffle=False)<\/p>\n\n\n\n<p>\u30c7\u30d0\u30a4\u30b9 = torch.device(\u300ccuda\u300d\u306a\u3089 torch.cuda.is_available() \u3067\u306a\u3051\u308c\u3070\u300ccpu\u300d) \u30e2\u30c7\u30eb = Net(best_dropout_rate).to(device) \u57fa\u6e96 = nn.CrossEntropyLoss() \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6 = optim.Adam(model.parameters( ), lr=\u6700\u9ad8\u306e\u5b66\u7fd2\u7387)<\/p>\n\n\n\n<p>batch_idx \u306e model.train()\u3001enumerate(train_loader) \u306e (\u30c7\u30fc\u30bf\u3001\u30bf\u30fc\u30b2\u30c3\u30c8): \u30c7\u30fc\u30bf\u3001\u30bf\u30fc\u30b2\u30c3\u30c8 = data.to(\u30c7\u30d0\u30a4\u30b9)\u3001target.to(\u30c7\u30d0\u30a4\u30b9) optimizer.zero_grad() \u51fa\u529b = \u30e2\u30c7\u30eb (\u30c7\u30fc\u30bf) \u640d\u5931 = \u57fa\u6e96(\u51fa\u529b\u3001\u30bf\u30fc\u30b2\u30c3\u30c8) loss.backward() optimizer.step()<\/p>\n\n\n\n<p>model.eval() test_loss = 0 correct = 0 with torch.no_grad(): \u30c7\u30fc\u30bf\u7528\u3001test_loader \u306e\u30bf\u30fc\u30b2\u30c3\u30c8: \u30c7\u30fc\u30bf\u3001\u30bf\u30fc\u30b2\u30c3\u30c8 = data.to(\u30c7\u30d0\u30a4\u30b9)\u3001target.to(\u30c7\u30d0\u30a4\u30b9) \u51fa\u529b = \u30e2\u30c7\u30eb(\u30c7\u30fc\u30bf) test_loss + = criteria(output, target).item() * data.size(0) pred = output.argmax(dim=1, keepdim=True) \u6b63\u3057\u3044 += pred.eq(target.view_as(pred)).sum() .item() test_loss \/= len(\u30c6\u30b9\u30c8\u30ed\u30fc\u30c0\u30fc.\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8)<\/p>\n\n\n\n<p>print(&#8216;\\n\u30c6\u30b9\u30c8 \u30bb\u30c3\u30c8: \u5e73\u5747\u640d\u5931: {:.4f}\u3001\u7cbe\u5ea6: {}\/{} ({:.6f}%)\\n&#8217;.format( test_loss, correct, len(test_loader.dataset), 100. * \u6b63\u3057\u3044 \/ len(test_loader.dataset)))<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>\n\u5728\u4ee5\u4e0a\u793a\u4f8b\u4e2d\uff0c\u4f7f\u7528optuna\u5bf9\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u691c\u7d22\u7528\u306e MNIST \u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3002\u6700\u521d\u306b\u3001\u76ee\u7684\u95a2\u6570 object() \u304c\u5b9a\u7fa9\u3055\u308c\u3001\u305d\u3053\u3067\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u691c\u7d22\u7a7a\u9593\u304c\u5b9a\u7fa9\u3055\u308c\u3001\u3053\u306e\u7a7a\u9593\u5185\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u691c\u8a3c\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u5404\u30a8\u30dd\u30c3\u30af\u306e\u7d42\u308f\u308a\u306b\u3001\u691c\u8a3c\u30bb\u30c3\u30c8\u306e\u640d\u5931\u5024\u304c\u8a18\u9332\u3055\u308c\u3001\u30e2\u30c7\u30eb\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u8a55\u4fa1\u3055\u308c\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001\u691c\u8a3c\u30bb\u30c3\u30c8\u306e\u640d\u5931\u5024\u304c\u76ee\u7684\u95a2\u6570\u306e\u7d50\u679c\u3068\u3057\u3066\u8fd4\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u691c\u7d22\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u3001create_study() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066 optuna \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3057\u3001optimize() \u95a2\u6570\u3092\u547c\u3073\u51fa\u3057\u3066\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u691c\u7d22\u3092\u5b9f\u884c\u3057\u3001n_trials \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092 100 \u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\u3053\u308c\u306f\u3001\u6700\u5927 100 \u500b\u306e\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u691c\u7d22\u3092\u610f\u5473\u3057\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001\u6700\u9069\u306a\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u7d44\u307f\u5408\u308f\u305b\u3068\u30c6\u30b9\u30c8\u7d50\u679c\u304c\u51fa\u529b\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u691c\u8a3c\u306e\u904e\u7a0b\u3067\u3001\u30aa\u30fc\u30d0\u30fc\u30d5\u30a3\u30c3\u30c6\u30a3\u30f3\u30b0\u3092\u907f\u3051\u308b\u305f\u3081\u306b\u65e9\u671f\u505c\u6b62\u304c\u4f7f\u7528\u3055\u308c\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u691c\u8a3c\u30bb\u30c3\u30c8\u306e\u640d\u5931\u5024\u304c\u7279\u5b9a\u306e\u30a8\u30dd\u30c3\u30af\u3067\u6e1b\u5c11\u3057\u3066\u3044\u306a\u3044\u3053\u3068\u304c\u5224\u660e\u3057\u305f\u5834\u5408\u3001\u30a8\u30dd\u30c3\u30af\u306e\u7d42\u4e86\u5f8c\u306b\u30eb\u30fc\u30d7\u3092\u76f4\u63a5\u7d42\u4e86\u3057\u3066\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30ea\u30bd\u30fc\u30b9\u3092\u7bc0\u7d04\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3064\u307e\u308a\u3001\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u8abf\u6574\u3068\u6700\u9069\u5316\u306f\u3001\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306e\u975e\u5e38\u306b\u91cd\u8981\u306a\u90e8\u5206\u3067\u3042\u308a\u3001\u7279\u5b9a\u306e\u554f\u984c\u3084\u30c7\u30fc\u30bf \u30bb\u30c3\u30c8\u306b\u5fdc\u3058\u3066\u8abf\u6574\u304a\u3088\u3073\u6700\u9069\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002PyTorch \u3067\u306f\u3001\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u6700\u9069\u5316\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u7528\u3057\u3066\u30cf\u30a4\u30d1\u30fc\u30d1\u30e9\u30e1\u30fc\u30bf\u7a7a\u9593\u3092\u81ea\u52d5\u7684\u306b\u691c\u7d22\u3067\u304d\u307e\u3059\u304c\u3001\u540c\u6642\u306b\u30aa\u30fc\u30d0\u30fc\u30d5\u30a3\u30c3\u30c6\u30a3\u30f3\u30b0\u3084\u65e9\u671f\u505c\u6b62\u306a\u3069\u306e\u554f\u984c\u306b\u6ce8\u610f\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch Fully Connected Neural Network (FCNN) \u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u5b8c\u5168\u63a5\u7d9a\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af (FCNN) \u306f\u3001\u57fa\u672c\u7684\u306a\u30d5\u30a3\u30fc\u30c9\u30d5\u30a9\u30ef\u30fc\u30c9 \u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u6df1\u5c64\u5b66\u7fd2\u3067\u6700\u3082\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e 1 \u3064\u3067\u3059\u3002\u3053\u308c\u306f\u8907\u6570\u306e\u5168\u7d50\u5408\u5c64\u3067\u69cb\u6210\u3055\u308c\u3001\u5404\u5168\u7d50\u5408\u5c64\u306e\u3059\u3079\u3066\u306e\u30cb\u30e5\u30fc\u30ed\u30f3\u306f\u524d\u306e\u5c64\u306e\u3059\u3079\u3066\u306e\u30cb\u30e5\u30fc\u30ed\u30f3\u306b\u63a5\u7d9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001torch.nn \u30e2\u30b8\u30e5\u30fc\u30eb\u306e Linear \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3001\u5b8c\u5168\u306b\u63a5\u7d9a\u3055\u308c\u305f\u30ec\u30a4\u30e4\u30fc\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u7c21\u5358\u306a FCNN \u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torch.nn as nn\n\nclass FCNN(nn.Module):\n    def __init__(self):\n        super(FCNN, self).__init__()\n        self.fc1 = nn.Linear(784, 256)\n        self.fc2 = nn.Linear(256, 128)\n        self.fc3 = nn.Linear(128, 10)\n\n    def forward(self, x):\n        x = x.view(-1, 784)\n        x = nn.functional.relu(self.fc1(x))\n        x = nn.functional.relu(self.fc2(x))\n        x = self.fc3(x)\n        return x\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u30013 \u3064\u306e\u5168\u7d50\u5408\u5c64\u3092\u6301\u3064 FCNN \u30e2\u30c7\u30eb\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u521d\u671f\u5316\u95a2\u6570 __init__() \u3067\u306f\u3001\u5165\u529b\u5c64 (\u5165\u529b\u30b5\u30a4\u30ba\u306f 784\u3001\u51fa\u529b\u30b5\u30a4\u30ba\u306f 256)\u3001\u96a0\u308c\u5c64 (\u5165\u529b\u30b5\u30a4\u30ba\u306f 256\u3001\u51fa\u529b\u30b5\u30a4\u30ba\u306f 128) \u306e 3 \u3064\u306e\u5168\u7d50\u5408\u5c64\u304c nn.Linear \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002 ) \u304a\u3088\u3073\u51fa\u529b\u5c64 (\u5165\u529b\u30b5\u30a4\u30ba 128\u3001\u51fa\u529b\u30b5\u30a4\u30ba 10)\u3002<\/p>\n\n\n\n<p>forward() \u95a2\u6570\u3067\u306f\u3001\u5165\u529b\u30c7\u30fc\u30bf x \u306f\u6700\u521d\u306b 2 \u6b21\u5143\u30c6\u30f3\u30bd\u30eb\u306b\u5909\u63db\u3055\u308c\u3001\u6b21\u306b 3 \u3064\u306e\u5168\u7d50\u5408\u5c64\u3092\u9806\u756a\u306b\u901a\u904e\u3057\u307e\u3059\u3002\u3053\u306e\u5c64\u3067\u306f\u3001\u5165\u529b\u5c64\u3068\u96a0\u308c\u5c64\u306e\u4e21\u65b9\u304c ReLU \u6d3b\u6027\u5316\u95a2\u6570\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u6700\u7d42\u51fa\u529b\u5c64\u306f\u30a2\u30af\u30c6\u30a3\u30d9\u30fc\u30b7\u30e7\u30f3\u95a2\u6570\u3092\u4f7f\u7528\u305b\u305a\u3001\u5143\u306e\u30b9\u30b3\u30a2\u5024\u3092\u305d\u306e\u307e\u307e\u51fa\u529b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u4e0a\u3067\u5b9a\u7fa9\u3057\u305f FCNN \u30e2\u30c7\u30eb\u3092\u5206\u985e\u30bf\u30b9\u30af\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u7279\u5b9a\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u3064\u3044\u3066\u306f\u3001\u524d\u306e\u7ae0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002FCNN \u30e2\u30c7\u30eb\u306b\u52a0\u3048\u3066\u3001PyTorch \u306f\u3001\u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af (\u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001CNN)\u3001\u518d\u5e30\u578b\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af (\u518d\u5e30\u578b\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001RNN) \u306a\u3069\u3001\u4ed6\u306e\u30bf\u30a4\u30d7\u306e\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u9069\u5207\u306a\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002\u7279\u5b9a\u306e\u554f\u984c\u3068\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30e2\u30c7\u30eb\u306b\u5fdc\u3058\u305f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch Convolutional Neural Network (CNN) \u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af (CNN) \u306f\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3067\u3042\u308a\u3001\u753b\u50cf\u51e6\u7406\u3068\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc \u30d3\u30b8\u30e7\u30f3\u3067\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5b8c\u5168\u306b\u63a5\u7d9a\u3055\u308c\u305f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3068\u306f\u7570\u306a\u308a\u3001CNN \u306f\u7573\u307f\u8fbc\u307f\u5c64\u3084\u30d7\u30fc\u30ea\u30f3\u30b0\u5c64\u306a\u3069\u306e\u7279\u5225\u306a\u5c64\u3092\u4ecb\u3057\u3066\u753b\u50cf\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3057\u3001\u753b\u50cf\u306e\u52b9\u7387\u7684\u306a\u51e6\u7406\u3068\u7279\u5fb4\u62bd\u51fa\u3092\u5b9f\u73fe\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001conv2d \u3084 MaxPool2d \u306a\u3069\u306e\u30af\u30e9\u30b9\u3092 torch.nn \u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u4f7f\u7528\u3057\u3066\u3001\u7573\u307f\u8fbc\u307f\u5c64\u3001\u30d7\u30fc\u30ea\u30f3\u30b0\u5c64\u306a\u3069\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u7c21\u5358\u306a CNN \u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torch.nn as nn\n\nclass CNN(nn.Module):\n    def __init__(self):\n        super(CNN, self).__init__()\n        self.conv1 = nn.Conv2d(1, 32, kernel_size=5, padding=2)\n        self.conv2 = nn.Conv2d(32, 64, kernel_size=5, padding=2)\n        self.pool = nn.MaxPool2d(kernel_size=2, stride=2)\n        self.fc1 = nn.Linear(64*7*7, 1024)\n        self.fc2 = nn.Linear(1024, 10)\n\n    def forward(self, x):\n        x = self.pool(nn.functional.relu(self.conv1(x)))\n        x = self.pool(nn.functional.relu(self.conv2(x)))\n        x = x.view(-1, 64*7*7)\n        x = nn.functional.relu(self.fc1(x))\n        x = self.fc2(x)\n        return x\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u30012 \u3064\u306e\u7573\u307f\u8fbc\u307f\u5c64\u30012 \u3064\u306e\u30d7\u30fc\u30ea\u30f3\u30b0\u5c64\u3001\u304a\u3088\u3073 2 \u3064\u306e\u5168\u7d50\u5408\u5c64\u3092\u6301\u3064 CNN \u30e2\u30c7\u30eb\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u521d\u671f\u5316\u95a2\u6570 __init__() \u3067\u306f\u3001\u6700\u521d\u306e\u7573\u307f\u8fbc\u307f\u5c64\u3067\u3042\u308b nn.Conv2d \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066 2 \u3064\u306e\u7573\u307f\u8fbc\u307f\u5c64\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059 (\u5165\u529b\u30c1\u30e3\u30cd\u30eb\u306e\u6570\u306f 1\u3001\u51fa\u529b\u30c1\u30e3\u30cd\u30eb\u306e\u6570\u306f 32\u3001\u7573\u307f\u8fbc\u307f\u30ab\u30fc\u30cd\u30eb \u30b5\u30a4\u30ba\u306f 5 \u3067\u3059)\u3002 \u00d7 5\u3001\u5883\u754c\u30d1\u30c7\u30a3\u30f3\u30b0\u306f 2) \u304a\u3088\u3073 2 \u756a\u76ee\u306e\u7573\u307f\u8fbc\u307f\u5c64 (\u5165\u529b\u30c1\u30e3\u30cd\u30eb\u6570\u306f 32\u3001\u51fa\u529b\u30c1\u30e3\u30cd\u30eb\u6570\u306f 64\u3001\u7573\u307f\u8fbc\u307f\u30ab\u30fc\u30cd\u30eb \u30b5\u30a4\u30ba\u306f 5\u00d75\u3001\u5883\u754c\u30d1\u30c7\u30a3\u30f3\u30b0\u306f 2)\u3002<\/p>\n\n\n\n<p>\u6700\u5927\u30d7\u30fc\u30ea\u30f3\u30b0 \u30ec\u30a4\u30e4\u30fc\u306f\u3001\u30d7\u30fc\u30ea\u30f3\u30b0 \u30ab\u30fc\u30cd\u30eb \u30b5\u30a4\u30ba\u304c 2\u00d72 \u3067\u30b9\u30c8\u30e9\u30a4\u30c9\u304c 2 \u306e nn.MaxPool2d \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u6700\u5f8c\u306b\u30012 \u3064\u306e\u5168\u7d50\u5408\u5c64\u304c\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u5165\u529b\u30b5\u30a4\u30ba\u304c 64\u00d77\u00d77 \u3067\u51fa\u529b\u30b5\u30a4\u30ba\u304c 1024 \u306e\u5168\u7d50\u5408\u5c64\u3068\u3001\u5165\u529b\u30b5\u30a4\u30ba\u304c 1024 \u3067\u51fa\u529b\u30b5\u30a4\u30ba\u304c 10 \u306e\u5168\u7d50\u5408\u5c64\u3067\u3059\u3002<\/p>\n\n\n\n<p>forward() \u95a2\u6570\u3067\u306f\u3001\u6700\u521d\u306b\u6700\u521d\u306e\u7573\u307f\u8fbc\u307f\u5c64\u3068\u6700\u5927\u30d7\u30fc\u30ea\u30f3\u30b0\u5c64\u3092\u901a\u904e\u3057\u3001\u6b21\u306b 2 \u756a\u76ee\u306e\u7573\u307f\u8fbc\u307f\u5c64\u3068\u6700\u5927\u30d7\u30fc\u30ea\u30f3\u30b0\u5c64\u3092\u901a\u904e\u3057\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001\u7279\u5fb4\u30de\u30c3\u30d7\u306f 1 \u6b21\u5143\u30d9\u30af\u30c8\u30eb\u306b\u62e1\u5f35\u3055\u308c\u3001\u51fa\u529b\u7d50\u679c\u306f 2 \u3064\u306e\u5b8c\u5168\u306b\u63a5\u7d9a\u3055\u308c\u305f\u30ec\u30a4\u30e4\u30fc\u3092\u901a\u3058\u3066\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u4e0a\u3067\u5b9a\u7fa9\u3057\u305f CNN \u30e2\u30c7\u30eb\u3092\u753b\u50cf\u5206\u985e\u30bf\u30b9\u30af\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u7279\u5b9a\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u3064\u3044\u3066\u306f\u3001\u524d\u306e\u7ae0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002CNN \u30e2\u30c7\u30eb\u306b\u52a0\u3048\u3066\u3001PyTorch \u306f\u30d5\u30eb\u63a5\u7d9a\u306a\u3069\u306e\u4ed6\u306e\u30bf\u30a4\u30d7\u306e\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch Recurrent Neural Network (RNN) \u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30ea\u30ab\u30ec\u30f3\u30c8 \u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af (RNN) \u306f\u3001\u30c6\u30ad\u30b9\u30c8\u3084\u97f3\u58f0\u306a\u3069\u306e\u30b7\u30fc\u30b1\u30f3\u30b9 \u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3067\u304d\u308b\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3067\u3059\u3002\u5b8c\u5168\u306b\u63a5\u7d9a\u3055\u308c\u305f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3084\u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3068\u306f\u7570\u306a\u308a\u3001RNN \u306f\u5faa\u74b0\u69cb\u9020\u3092\u4f7f\u7528\u3057\u3066\u30b7\u30fc\u30b1\u30f3\u30b9 \u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3057\u3001\u30e1\u30e2\u30ea\u6a5f\u80fd\u3092\u6301\u3061\u3001\u60c5\u5831\u3092\u9001\u4fe1\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001RNN\u3001LSTM\u3001GRU\u3001\u304a\u3088\u3073 torch.nn \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4ed6\u306e\u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3001\u518d\u5e30\u578b\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u5358\u7d14\u306a RNN \u306e\u4f8b\u3067\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torch.nn as nn\n\nclass RNN(nn.Module):\n    def __init__(self):\n        super(RNN, self).__init__()\n        self.rnn = nn.RNN(input_size=28, hidden_size=128, num_layers=2, batch_first=True)\n        self.fc = nn.Linear(128, 10)\n\n    def forward(self, x):\n        h0 = torch.zeros(2, x.size(0), 128)\n        out, _ = self.rnn(x, h0)\n        out = self.fc(out[:, -1, :])\n        return out\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u30011 \u3064\u306e RNN \u5c64\u3068 1 \u3064\u306e\u5168\u7d50\u5408\u5c64\u3092\u542b\u3080 RNN \u30e2\u30c7\u30eb\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u521d\u671f\u5316\u95a2\u6570 __init__() \u3067\u306f\u3001nn.RNN \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066 RNN \u5c64\u304c\u5b9a\u7fa9\u3055\u308c\u3001\u5165\u529b\u30b5\u30a4\u30ba\u306f 28\u3001\u96a0\u308c\u72b6\u614b\u306e\u30b5\u30a4\u30ba\u306f 128\u3001\u5c64\u306e\u6570\u306f 2\u3001batch_first \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f True \u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002\u5165\u529b\u30c7\u30fc\u30bf\u306e\u30d0\u30c3\u30c1\u6b21\u5143\u306f\u6700\u521d\u306e\u6b21\u5143\u306b\u3042\u308a\u307e\u3059\u3002\u51fa\u529b\u30b5\u30a4\u30ba\u304c 10 \u306e\u5168\u7d50\u5408\u5c64\u306f\u3001nn.Linear \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>forward() \u95a2\u6570\u3067\u306f\u3001\u6700\u521d\u306b torch.zeros() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b5\u30a4\u30ba (2, batch_size, 128) \u306e\u30c6\u30f3\u30bd\u30eb\u3092 RNN \u30ec\u30a4\u30e4\u30fc\u306e\u521d\u671f\u96a0\u308c\u72b6\u614b h0 \u3068\u3057\u3066\u4f5c\u6210\u3057\u307e\u3059\u3002\u6b21\u306b\u3001\u5165\u529b\u30c7\u30fc\u30bf x \u3068\u96a0\u308c\u72b6\u614b h0 \u304c\u9806\u4f1d\u64ad\u306e\u305f\u3081\u306b RNN \u5c64\u306b\u6e21\u3055\u308c\u3001RNN \u5c64\u304b\u3089\u306e\u51fa\u529b\u304c\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001out[:, -1, :] \u3092\u4f7f\u7528\u3057\u3066\u3001\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u6700\u5f8c\u306b\u3042\u308b\u5404\u30b5\u30f3\u30d7\u30eb\u306e\u96a0\u308c\u72b6\u614b\u3092\u53d6\u308a\u51fa\u3057\u3001\u5168\u7d50\u5408\u5c64\u3092\u901a\u904e\u3057\u3066\u51fa\u529b\u7d50\u679c\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u4e0a\u3067\u5b9a\u7fa9\u3057\u305f RNN \u30e2\u30c7\u30eb\u3092\u30b7\u30fc\u30b1\u30f3\u30b9 \u30c7\u30fc\u30bf\u51e6\u7406\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u7279\u5b9a\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u3064\u3044\u3066\u306f\u3001\u524d\u306e\u7ae0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002RNN \u30e2\u30c7\u30eb\u306b\u52a0\u3048\u3066\u3001PyTorch \u306f LSTM\u3001GRU \u306a\u3069\u306e\u4ed6\u306e\u30bf\u30a4\u30d7\u306e\u5faa\u74b0\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3082\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u7279\u5b9a\u306e\u554f\u984c\u3068\u30c7\u30fc\u30bf \u30bb\u30c3\u30c8\u306b\u5f93\u3063\u3066\u9069\u5207\u306a\u5faa\u74b0\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u9078\u629e\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch Long Short Term Memory Network (LSTM) \u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u9577\u77ed\u671f\u8a18\u61b6 (LSTM) \u306f\u3001\u30c6\u30ad\u30b9\u30c8\u3001\u97f3\u58f0\u306a\u3069\u306e\u9577\u3044\u30b7\u30fc\u30b1\u30f3\u30b9 \u30c7\u30fc\u30bf\u3092\u52b9\u679c\u7684\u306b\u51e6\u7406\u3067\u304d\u308b\u3001\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u308b\u518d\u5e30\u578b\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3067\u3059\u3002\u6a19\u6e96\u306e RNN \u30e2\u30c7\u30eb\u3068\u306f\u7570\u306a\u308a\u3001LSTM \u306f\u5404\u30bf\u30a4\u30e0 \u30b9\u30c6\u30c3\u30d7\u3067 3 \u3064\u306e\u30b2\u30fc\u30c8 (\u5165\u529b\u30b2\u30fc\u30c8\u3001\u5fd8\u5374\u30b2\u30fc\u30c8\u3001\u51fa\u529b\u30b2\u30fc\u30c8) \u3092\u4f7f\u7528\u3057\u3066\u60c5\u5831\u306e\u6d41\u308c\u3092\u5236\u5fa1\u3057\u3001\u6a19\u6e96 RNN \u306e\u52fe\u914d\u6d88\u5931\u3068\u52fe\u914d\u7206\u767a\u306e\u554f\u984c\u3092\u89e3\u6c7a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001LSTM \u30e2\u30c7\u30eb\u306f torch.nn \u30e2\u30b8\u30e5\u30fc\u30eb\u306e LSTM \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u7c21\u5358\u306a LSTM \u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torch.nn as nn\n\nclass LSTM(nn.Module):\n    def __init__(self):\n        super(LSTM, self).__init__()\n        self.lstm = nn.LSTM(input_size=28, hidden_size=128, num_layers=2, batch_first=True)\n        self.fc = nn.Linear(128, 10)\n\n    def forward(self, x):\n        h0 = torch.zeros(2, x.size(0), 128)\n        c0 = torch.zeros(2, x.size(0), 128)\n        out, _ = self.lstm(x, (h0, c0))\n        out = self.fc(out[:, -1, :])\n        return out\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u30011 \u3064\u306e LSTM \u5c64\u3068 1 \u3064\u306e\u5168\u7d50\u5408\u5c64\u3067\u69cb\u6210\u3055\u308c\u308b LSTM \u30e2\u30c7\u30eb\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u521d\u671f\u5316\u95a2\u6570 __init__() \u3067\u306f\u3001nn.LSTM \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066 LSTM \u5c64\u304c\u5b9a\u7fa9\u3055\u308c\u3001\u5165\u529b\u30b5\u30a4\u30ba\u306f 28\u3001\u96a0\u308c\u72b6\u614b\u306e\u30b5\u30a4\u30ba\u306f 128\u3001\u5c64\u306e\u6570\u306f 2\u3001batch_first \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f True \u3067\u3042\u308b\u3053\u3068\u3092\u793a\u3057\u307e\u3059\u3002\u5165\u529b\u30c7\u30fc\u30bf\u306e\u30d0\u30c3\u30c1\u6b21\u5143\u306f\u6700\u521d\u306e\u6b21\u5143\u306b\u3042\u308a\u307e\u3059\u3002\u51fa\u529b\u30b5\u30a4\u30ba\u304c 10 \u306e\u5168\u7d50\u5408\u5c64\u306f\u3001nn.Linear \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>forward() \u95a2\u6570\u3067\u306f\u3001\u6700\u521d\u306b torch.zeros() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u3001\u30b5\u30a4\u30ba (2, batch_size, 128) \u306e\u30c6\u30f3\u30bd\u30eb\u3092 LSTM \u30ec\u30a4\u30e4\u30fc\u306e\u521d\u671f\u96a0\u308c\u72b6\u614b h0 \u304a\u3088\u3073\u521d\u671f\u30bb\u30eb\u72b6\u614b c0 \u3068\u3057\u3066\u4f5c\u6210\u3057\u307e\u3059\u3002\u6b21\u306b\u3001\u5165\u529b\u30c7\u30fc\u30bf x\u3001\u96a0\u308c\u72b6\u614b h0\u3001\u304a\u3088\u3073\u30bb\u30eb\u72b6\u614b c0 \u304c\u9806\u4f1d\u64ad\u306e\u305f\u3081\u306b LSTM \u5c64\u306b\u6e21\u3055\u308c\u3001LSTM \u5c64\u304b\u3089\u306e\u51fa\u529b\u304c\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001out[:, -1, :] \u3092\u4f7f\u7528\u3057\u3066\u3001\u30b7\u30fc\u30b1\u30f3\u30b9\u306e\u6700\u5f8c\u306b\u3042\u308b\u5404\u30b5\u30f3\u30d7\u30eb\u306e\u96a0\u308c\u72b6\u614b\u3092\u53d6\u308a\u51fa\u3057\u3001\u5168\u7d50\u5408\u5c64\u3092\u901a\u904e\u3057\u3066\u51fa\u529b\u7d50\u679c\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u4e0a\u3067\u5b9a\u7fa9\u3055\u308c\u305f LSTM \u30e2\u30c7\u30eb\u306f\u3001\u9577\u3044\u30b7\u30fc\u30b1\u30f3\u30b9 \u30c7\u30fc\u30bf\u51e6\u7406\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u7279\u5b9a\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u3064\u3044\u3066\u306f\u3001\u524d\u306e\u7ae0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch Transformer \u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Transformer \u306f\u3001\u81ea\u7136\u8a00\u8a9e\u51e6\u7406\u306e\u5206\u91ce\u3067\u4e00\u822c\u7684\u306b\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3067\u3042\u308a\u3001Google \u306b\u3088\u3063\u3066\u63d0\u6848\u3055\u308c\u3001\u6a5f\u68b0\u7ffb\u8a33\u30bf\u30b9\u30af\u306b\u9069\u7528\u3055\u308c\u307e\u3057\u305f\u3002\u5f93\u6765\u306e\u5de1\u56de\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3068\u306f\u7570\u306a\u308a\u3001Transformer \u306f\u81ea\u5df1\u30a2\u30c6\u30f3\u30b7\u30e7\u30f3 \u30e1\u30ab\u30cb\u30ba\u30e0 (Self-Attention) \u3092\u4f7f\u7528\u3057\u3066\u5165\u529b\u30b7\u30fc\u30b1\u30f3\u30b9\u3092\u51e6\u7406\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u5f93\u6765\u306e\u5de1\u56de\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u306e\u9806\u6b21\u51e6\u7406\u306e\u6b20\u9665\u304c\u56de\u907f\u3055\u308c\u3001\u4e26\u5217\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u304c\u5927\u5e45\u306b\u5411\u4e0a\u3057\u307e\u3059\u3002\u30e2\u30c7\u30eb\u3002<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001torch.nn \u30e2\u30b8\u30e5\u30fc\u30eb\u306e Transformer \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066 Transformer \u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002\u7c21\u5358\u306a Transformer \u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torch.nn as nn\nimport torch.nn.functional as F\nfrom torch.nn import TransformerEncoder, TransformerEncoderLayer\n\nclass TransformerModel(nn.Module):\n    def __init__(self, ntoken, ninp, nhead, nhid, nlayers, dropout=0.5):\n        super(TransformerModel, self).__init__()\n        self.model_type = 'Transformer'\n        self.pos_encoder = PositionalEncoding(ninp, dropout)\n        encoder_layers = TransformerEncoderLayer(ninp, nhead, nhid, dropout)\n        self.transformer_encoder = TransformerEncoder(encoder_layers, nlayers)\n        self.encoder = nn.Embedding(ntoken, ninp)\n        self.ninp = ninp\n        self.decoder = nn.Linear(ninp, ntoken)\n\n        self.init_weights()\n\n    def init_weights(self):\n        initrange = 0.1\n        self.encoder.weight.data.uniform_(-initrange, initrange)\n        self.decoder.bias.data.zero_()\n        self.decoder.weight.data.uniform_(-initrange, initrange)\n\n    def forward(self, src, src_mask):\n        src = self.encoder(src) * math.sqrt(self.ninp)\n        src = self.pos_encoder(src)\n        output = self.transformer_encoder(src, src_mask)\n        output = self.decoder(output)\n        return F.log_softmax(output, dim=-1)\n\n\nclass PositionalEncoding(nn.Module):\n\n    def __init__(self, d_model, dropout=0.1, max_len=5000):\n        super(PositionalEncoding, self).__init__()\n        self.dropout = nn.Dropout(p=dropout)\n\n        pe = torch.zeros(max_len, d_model)\n        position = torch.arange(0, max_len, dtype=torch.float).unsqueeze(1)\n        div_term = torch.exp(torch.arange(0, d_model, 2).float() * (-math.log(10000.0) \/ d_model))\n        pe[:, 0::2] = torch.sin(position * div_term)\n        pe[:, 1::2] = torch.cos(position * div_term)\n        pe = pe.unsqueeze(0).transpose(0, 1)\n        self.register_buffer('pe', pe)\n\n    def forward(self, x):\n        x = x + self.pe[:x.size(0), :]\n        return self.dropout(x)\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001TransformerEncoder \u30ec\u30a4\u30e4\u30fc\u3068\u7dda\u5f62\u30ec\u30a4\u30e4\u30fc\u3092\u542b\u3080 Transformer \u30e2\u30c7\u30eb\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u521d\u671f\u5316\u95a2\u6570 __init__() \u3067\u306f\u3001\u8a9e\u5f59\u30b5\u30a4\u30ba ntoken\u3001\u57cb\u3081\u8fbc\u307f\u6b21\u5143 ninp\u3001\u30d8\u30c3\u30c9\u6570 nhead\u3001\u96a0\u308c\u5c64\u30b5\u30a4\u30ba nhid\u3001\u5c64\u6570 nlayers \u306a\u3069\u3001\u30e2\u30c7\u30eb\u5185\u306e\u3044\u304f\u3064\u304b\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u5165\u529b\u306e\u4f4d\u7f6e\u3092\u30a8\u30f3\u30b3\u30fc\u30c9\u3059\u308b\u305f\u3081\u306b PositionalEncoding \u30af\u30e9\u30b9\u304c\u4f7f\u7528\u3055\u308c\u3001TransformerEncoder \u30ec\u30a4\u30e4\u30fc\u3068\u7dda\u5f62\u30ec\u30a4\u30e4\u30fc\u304c\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002\u3053\u3053\u3067\u3001TransformerEncoder \u30ec\u30a4\u30e4\u30fc\u306f\u8907\u6570\u306e TransformerEncoderLayers \u3067\u69cb\u6210\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>forward() \u95a2\u6570\u3067\u306f\u3001\u5165\u529b\u304c\u6700\u521d\u3067\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u57cb\u3081\u8fbc\u307f\u64cd\u4f5c\u306f\u3001PositionalEncoding \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3001\u5165\u529b\u3092\u4f4d\u7f6e\u30a8\u30f3\u30b3\u30fc\u30c9\u3057\u307e\u3059\u3002\u6b21\u306b\u3001\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u5165\u529b\u3068\u5165\u529b\u30de\u30b9\u30af\u304c TransformerEncoder \u30ec\u30a4\u30e4\u30fc\u306b\u6e21\u3055\u308c\u3066\u9806\u65b9\u5411\u306b\u4f1d\u642c\u3055\u308c\u3001TransformerEncoder \u30ec\u30a4\u30e4\u30fc\u306e\u51fa\u529b\u304c\u53d6\u5f97\u3055\u308c\u307e\u3059\u3002\u6700\u5f8c\u306b\u3001\u7dda\u5f62\u5c64\u3068 log_softmax \u6d3b\u6027\u5316\u95a2\u6570\u3092\u4ecb\u3057\u3066\u51fa\u529b\u3092\u6e21\u3057\u3001\u30e2\u30c7\u30eb\u306e\u51fa\u529b\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001PositionalEncoding \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u5165\u529b\u3092\u4f4d\u7f6e\u7684\u306b\u30a8\u30f3\u30b3\u30fc\u30c9\u3057\u3066\u3044\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002Transformer \u30e2\u30c7\u30eb\u306b\u306f\u30eb\u30fc\u30d7\u69cb\u9020\u3084\u7573\u307f\u8fbc\u307f\u69cb\u9020\u304c\u306a\u3044\u305f\u3081\u3001\u30e2\u30c7\u30eb\u304c\u5165\u529b\u5185\u306e\u3055\u307e\u3056\u307e\u306a\u4f4d\u7f6e\u60c5\u5831\u3092\u533a\u5225\u3057\u3066\u51e6\u7406\u3067\u304d\u308b\u3088\u3046\u306b\u3001\u5165\u529b\u4f4d\u7f6e\u60c5\u5831\u3092\u30a8\u30f3\u30b3\u30fc\u30c9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002PositionalEncoding \u30af\u30e9\u30b9\u306e\u5b9f\u88c5\u65b9\u6cd5\u306f\u8ad6\u6587\u300cAttention is All You Need\u300d\u306e\u65b9\u6cd5\u3001\u3064\u307e\u308a\u3001\u4f4d\u7f6e\u60c5\u5831\u3092\u6b63\u5f26\u95a2\u6570\u3068\u4f59\u5f26\u95a2\u6570\u306e\u5024\u306e\u30bb\u30c3\u30c8\u306b\u30a8\u30f3\u30b3\u30fc\u30c9\u3057\u3001\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u305f\u4f4d\u7f6e\u60c5\u5831\u3092\u5165\u529b\u30c6\u30f3\u30bd\u30eb\u306b\u8ffd\u52a0\u3059\u308b\u65b9\u6cd5\u3092\u63a1\u7528\u3057\u3066\u3044\u307e\u3059\u3002 .<\/p>\n\n\n\n<p>PyTorch \u3067\u306f\u3001\u4e0a\u3067\u5b9a\u7fa9\u3057\u305f Transformer \u30e2\u30c7\u30eb\u3092\u81ea\u7136\u8a00\u8a9e\u51e6\u7406\u30bf\u30b9\u30af\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u7279\u5b9a\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u3064\u3044\u3066\u306f\u3001\u524d\u306e\u7ae0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u6df1\u5c64\u5b66\u7fd2\u306e\u5fdc\u7528\u4f8b \u753b\u50cf\u5206\u985e\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u6559\u3048\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u753b\u50cf\u5206\u985e\u306f\u3001\u6df1\u5c64\u5b66\u7fd2\u306b\u304a\u3051\u308b\u4e00\u822c\u7684\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e 1 \u3064\u3067\u3042\u308a\u3001\u6df1\u5c64\u5b66\u7fd2\u3092\u958b\u59cb\u3059\u308b\u305f\u3081\u306e\u4e00\u822c\u7684\u306a\u4f8b\u3067\u3059\u3002PyTorch \u3067\u306f\u3001torchvision \u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3068\u30e2\u30c7\u30eb\u3092\u3001\u753b\u50cf\u5206\u985e\u30bf\u30b9\u30af\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u7c21\u5358\u306a\u753b\u50cf\u5206\u985e\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torch.nn as nn\nimport torch.optim as optim\nimport torchvision\nimport torchvision.transforms as transforms\n\n# \u5b9a\u4e49\u6570\u636e\u9884\u5904\u7406\u65b9\u5f0f\ntransform = transforms.Compose(\n    [transforms.ToTensor(),\n     transforms.Normalize((0.5,), (0.5,))])\n\n# \u52a0\u8f7d\u6570\u636e\u96c6\ntrainset = torchvision.datasets.MNIST(root='.\/data', train=True,\n                                        download=True, transform=transform)\ntrainloader = torch.utils.data.DataLoader(trainset, batch_size=64,\n                                          shuffle=True, num_workers=2)\n\ntestset = torchvision.datasets.MNIST(root='.\/data', train=False,\n                                       download=True, transform=transform)\ntestloader = torch.utils.data.DataLoader(testset, batch_size=64,\n                                         shuffle=False, num_workers=2)\n\n# \u5b9a\u4e49\u6a21\u578b\nclass Net(nn.Module):\n    def __init__(self):\n        super(Net, self).__init__()\n        self.conv1 = nn.Conv2d(1, 6, 5)\n        self.pool = nn.MaxPool2d(2, 2)\n        self.conv2 = nn.Conv2d(6, 16, 5)\n        self.fc1 = nn.Linear(16 * 4 * 4, 120)\n        self.fc2 = nn.Linear(120, 84)\n        self.fc3 = nn.Linear(84, 10)\n\n    def forward(self, x):\n        x = self.pool(F.relu(self.conv1(x)))\n        x = self.pool(F.relu(self.conv2(x)))\n        x = x.view(-1, 16 * 4 * 4)\n        x = F.relu(self.fc1(x))\n        x = F.relu(self.fc2(x))\n        x = self.fc3(x)\n        return x\n\n# \u5b9a\u4e49\u635f\u5931\u51fd\u6570\u548c\u4f18\u5316\u5668\nnet = Net()\ncriterion = nn.CrossEntropyLoss()\noptimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)\n\n# \u8bad\u7ec3\u6a21\u578b\nfor epoch in range(10):\n    running_loss = 0.0\n    for i, data in enumerate(trainloader, 0):\n        inputs, labels = data\n        optimizer.zero_grad()\n        outputs = net(inputs)\n        loss = criterion(outputs, labels)\n        loss.backward()\n        optimizer.step()\n\n        running_loss += loss.item()\n        if i % 100 == 99:\n            print('[%d, %5d] loss: %.3f' %\n                  (epoch + 1, i + 1, running_loss \/ 100))\n            running_loss = 0.0\n\n# \u6d4b\u8bd5\u6a21\u578b\ncorrect = 0\ntotal = 0\nwith torch.no_grad():\n    for data in testloader:\n        images, labels = data\n        outputs = net(images)\n        _, predicted = torch.max(outputs.data, 1)\n        total += labels.size(0)\n        correct += (predicted == labels).sum().item()\n\nprint('Accuracy of the network on the 10000 test images: %d %%' % (\n    100 * correct \/ total))\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u3067\u306f\u3001\u30c7\u30fc\u30bf\u524d\u51e6\u7406\u30e1\u30bd\u30c3\u30c9 transform \u304c\u6700\u521d\u306b\u5b9a\u7fa9\u3055\u308c\u3001\u5165\u529b\u30c7\u30fc\u30bf\u3092\u6a19\u6e96\u5316\u3057\u3066\u30c6\u30f3\u30bd\u30eb\u306b\u5909\u63db\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u305d\u308c\u304b\u3089<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>torchvision.datasets \u30e2\u30b8\u30e5\u30fc\u30eb\u3067 MNIST \u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30bb\u30c3\u30c8\u3068\u30c6\u30b9\u30c8 \u30bb\u30c3\u30c8\u3092\u30ed\u30fc\u30c9\u3057\u3001torch.utils.data \u30e2\u30b8\u30e5\u30fc\u30eb\u3067 DataLoader \u3092\u4f7f\u7528\u3057\u3066\u3001\u5f8c\u7d9a\u306e\u30e2\u30c7\u30eb \u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u30c6\u30b9\u30c8\u7528\u306e\u30c7\u30fc\u30bf \u30a4\u30c6\u30ec\u30fc\u30bf trainloader \u3068 testloader \u3092\u69cb\u7bc9\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>2 \u3064\u306e\u7573\u307f\u8fbc\u307f\u5c64\u3068 3 \u3064\u306e\u5168\u7d50\u5408\u5c64\u3092\u542b\u3080\u5358\u7d14\u306a\u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb Net \u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30e2\u30c7\u30eb\u306e forward() \u95a2\u6570\u3067\u306f\u3001\u5165\u529b\u30c7\u30fc\u30bf\u306e\u7279\u5fb4\u60c5\u5831\u304c\u6700\u521d\u306b 2 \u3064\u306e\u7573\u307f\u8fbc\u307f\u5c64\u306b\u3088\u3063\u3066\u62bd\u51fa\u3055\u308c\u3001\u6b21\u306b\u7279\u5fb4\u60c5\u5831\u304c\u5168\u7d50\u5408\u5c64\u306b\u3088\u3063\u3066\u5206\u985e\u304a\u3088\u3073\u4e88\u6e2c\u3055\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6b21\u306b\u3001\u640d\u5931\u95a2\u6570\u3068\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u304c\u5b9a\u7fa9\u3055\u308c\u3001\u4ea4\u5dee\u30a8\u30f3\u30c8\u30ed\u30d4\u30fc\u640d\u5931\u95a2\u6570\u3068\u78ba\u7387\u7684\u52fe\u914d\u964d\u4e0b\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u304c\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30d7\u30ed\u30bb\u30b9\u3067\u306f\u3001\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30bb\u30c3\u30c8\u304c\u8d70\u67fb\u3055\u308c\u3001\u9806\u4f1d\u64ad\u3001\u8a08\u7b97\u640d\u5931\u3001\u9006\u4f1d\u64ad\u3001\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u66f4\u65b0\u306a\u3069\u306e\u64cd\u4f5c\u304c\u5404\u30d0\u30c3\u30c1\u306e\u30c7\u30fc\u30bf\u306b\u5bfe\u3057\u3066\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u540c\u6642\u306b\u3001\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30bb\u30c3\u30c8\u306e\u30e2\u30c7\u30eb\u306e\u640d\u5931\u5024\u3092\u8a18\u9332\u3057\u3001\u5404\u30a8\u30dd\u30c3\u30af\u306e\u7d42\u308f\u308a\u306b\u5e73\u5747\u640d\u5931\u5024\u3092\u51fa\u529b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6700\u5f8c\u306b\u3001\u30c6\u30b9\u30c8 \u30bb\u30c3\u30c8\u3092\u4f7f\u7528\u3057\u3066\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u6e08\u307f\u30e2\u30c7\u30eb\u3092\u30c6\u30b9\u30c8\u3057\u3001\u30e2\u30c7\u30eb\u306e\u5206\u985e\u7cbe\u5ea6\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002\u30c6\u30b9\u30c8\u4e2d\u3001\u30c6\u30b9\u30c8 \u30bb\u30c3\u30c8\u304c\u30c8\u30e9\u30d0\u30fc\u30b9\u3055\u308c\u3001\u5404\u30d0\u30c3\u30c1\u306e\u30c7\u30fc\u30bf\u304c\u9806\u4f1d\u64ad\u3055\u308c\u3001\u30e2\u30c7\u30eb\u306e\u51fa\u529b\u7d50\u679c\u304c\u53d6\u5f97\u3055\u308c\u3001\u5404\u30b5\u30f3\u30d7\u30eb\u306e\u4e88\u6e2c\u30ab\u30c6\u30b4\u30ea\u304c torch.max() \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u8a08\u7b97\u3055\u308c\u307e\u3059\u3002\u6b63\u3057\u3044\u30b5\u30f3\u30d7\u30eb\u6570\u3092\u7d71\u8a08\u7684\u306b\u4e88\u6e2c\u3057\u3001\u6700\u7d42\u7684\u306b\u30c6\u30b9\u30c8 \u30bb\u30c3\u30c8\u3067\u306e\u30e2\u30c7\u30eb\u306e\u5206\u985e\u7cbe\u5ea6\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4e0a\u8a18\u306e\u4f8b\u306e\u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u306f\u3001\u624b\u66f8\u304d\u306e\u6570\u5b57\u753b\u50cf\u5206\u985e\u306e\u30bf\u30b9\u30af\u306b\u306e\u307f\u9069\u3057\u3066\u3044\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u5b9f\u969b\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u30bf\u30b9\u30af\u3068\u30c7\u30fc\u30bf \u30bb\u30c3\u30c8\u306b\u5fdc\u3058\u3066\u3055\u307e\u3056\u307e\u306a\u30e2\u30c7\u30eb \u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u5bfe\u5fdc\u3059\u308b\u8abf\u6574\u3068\u6700\u9069\u5316\u3092\u884c\u3046\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u540c\u6642\u306b\u3001\u8ee2\u79fb\u5b66\u7fd2\u306a\u3069\u306e\u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3001\u65e2\u5b58\u306e\u4e8b\u524d\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u6e08\u307f\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3001\u9ad8\u6027\u80fd\u306e\u753b\u50cf\u5206\u985e\u30e2\u30c7\u30eb\u3092\u3088\u308a\u8fc5\u901f\u306b\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044 PyTorch \u6df1\u5c64\u5b66\u7fd2\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9 \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u691c\u51fa<\/p>\n\n\n\n<p>\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u691c\u51fa\u306f\u3001\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0\u306e\u3082\u3046 1 \u3064\u306e\u91cd\u8981\u306a\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002\u76ee\u7684\u306f\u3001\u753b\u50cf\u5185\u306e\u8907\u6570\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u4f4d\u7f6e\u3068\u30ab\u30c6\u30b4\u30ea\u3092\u7279\u5b9a\u3057\u3066\u8b58\u5225\u3059\u308b\u3053\u3068\u3067\u3059\u3002PyTorch \u3067\u306f\u3001torchvision \u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u691c\u51fa\u30c4\u30fc\u30eb\u30ad\u30c3\u30c8\u3092\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u691c\u51fa\u30bf\u30b9\u30af\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u7c21\u5358\u306a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u691c\u51fa\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torchvision\nimport torchvision.transforms as transforms\nimport torchvision.models as models\nimport torchvision.datasets as datasets\nimport torchvision.utils as utils\nimport torch.nn as nn\nimport torch.optim as optim\nfrom torch.autograd import Variable\nimport time\n\n# \u5b9a\u4e49\u6570\u636e\u9884\u5904\u7406\u65b9\u5f0f\ntransform_train = transforms.Compose([\n    transforms.Resize((224, 224)),\n    transforms.RandomHorizontalFlip(),\n    transforms.ToTensor(),\n    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])\n])\n\ntransform_test = transforms.Compose([\n    transforms.Resize((224, 224)),\n    transforms.ToTensor(),\n    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])\n])\n\n# \u52a0\u8f7d\u6570\u636e\u96c6\ntrainset = datasets.CocoDetection(root='.\/data\/coco\/train2017\/',\n                                  annFile='.\/data\/coco\/annotations\/instances_train2017.json',\n                                  transform=transform_train)\n\ntestset = datasets.CocoDetection(root='.\/data\/coco\/val2017\/',\n                                 annFile='.\/data\/coco\/annotations\/instances_val2017.json',\n                                 transform=transform_test)\n\ntrainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2)\ntestloader = torch.utils.data.DataLoader(testset, batch_size=4, shuffle=False, num_workers=2)\n\n# \u5b9a\u4e49\u6a21\u578b\nmodel = models.detection.fasterrcnn_resnet50_fpn(pretrained=True)\nnum_classes = 91  # 90\u4e2a\u7269\u4f53\u7c7b\u522b + \u80cc\u666f\u7c7b\u522b\nin_features = model.roi_heads.box_predictor.cls_score.in_features\nmodel.roi_heads.box_predictor = nn.Linear(in_features, num_classes)\n\n# \u5b9a\u4e49\u635f\u5931\u51fd\u6570\u548c\u4f18\u5316\u5668\nparams = [p for p in model.parameters() if p.requires_grad]\noptimizer = optim.SGD(params, lr=0.005, momentum=0.9, weight_decay=0.0005)\nlr_scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=3, gamma=0.1)\n\ndef train(model, data_loader, optimizer, criterion):\n    model.train()\n    running_loss = 0.0\n    for i, data in enumerate(data_loader, 0):\n        images, targets = data\n        images, targets = images.cuda(), [{k: v.cuda() for k, v in t.items()} for t in targets]\n\n        optimizer.zero_grad()\n\n        loss_dict = model(images, targets)\n        losses = sum(loss for loss in loss_dict.values())\n        loss_value = losses.item()\n\n        losses.backward()\n        optimizer.step()\n\n        running_loss += loss_value\n        if i % 100 == 99:\n            print('[%d, %5d] loss: %.3f' %\n                  (epoch + 1, i + 1, running_loss \/ 100))\n            running_loss = 0.0\n\ndef test(model, data_loader):\n    model.eval()\n    correct = 0\n    total = 0\n   \n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>torch.no_grad() \u3092\u4f7f\u7528: data_loader \u306e\u30c7\u30fc\u30bf\u306e\u5834\u5408: images\u3001targets = data images\u3001targets = images.cuda()\u3001[{k: v.cuda() for k\u3001v in t.items()} for t in\u30bf\u30fc\u30b2\u30c3\u30c8\u3011<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>        outputs = model(images)\n\n        for i, output in enumerate(outputs):\n            _, predicted = torch.max(output['scores'], 0)\n            total += targets[i]['labels'].shape[0]\n            correct += (predicted == targets[i]['labels']).sum().item()\n\naccuracy = 100 * correct \/ total\nprint('Accuracy of the network on the test images: %d %%' % accuracy)\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb<\/h1>\n\n\n\n<p>\u30c7\u30d0\u30a4\u30b9 = torch.device(&#8216;cuda&#8217;) \u3082\u3057 torch.cuda.is_available() \u3067\u306a\u3051\u308c\u3070 torch.device(&#8216;cpu&#8217;) model.to(device) \u57fa\u6e96 = nn.CrossEntropyLoss()<\/p>\n\n\n\n<p>num_epochs = 5 for epoch in range(num_epochs): train(model, trainloader, optimizer, criteria) test(model, testloader) lr_scheduler.step()<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Objectivec\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>\n\u5728\u4ee5\u4e0a\u793a\u4f8b\u4e2d\uff0c\u9996\u5148\u5b9a\u4e49\u4e86\u6570\u636e\u9884\u5904\u7406\u65b9\u5f0ftransform_train\u548ctransform_test\uff0c\u5206\u522b\u7528\u4e8e\u8bad\u7ec3\u96c6\u548c\u6d4b\u8bd5\u96c6\u7684\u6570\u636e\u9884\u5904\u7406\u3002\u7136\u540e\u4f7f\u7528torchvision.datasets\u6a21\u5757\u4e2d\u7684CocoDetection\u6570\u636e\u96c6\u52a0\u8f7d\u8bad\u7ec3\u96c6\u548c\u6d4b\u8bd5\u96c6\uff0c\u5e76\u4f7f\u7528torch.utils.data\u6a21\u5757\u4e2d\u7684DataLoader\u6765\u6784\u5efa\u6570\u636e\u8fed\u4ee3\u5668trainloader\u548ctestloader\uff0c\u7528\u4e8e\u540e\u7eed\u6a21\u578b\u7684\u8bad\u7ec3\u548c\u6d4b\u8bd5\u3002\n\n\u5b9a\u4e49\u4e86\u4e00\u4e2a Faster R-CNN \u6a21\u578b\uff0c\u5e76\u4f7f\u7528\u9884\u8bad\u7ec3\u7684 ResNet50 \u6a21\u578b\u4f5c\u4e3a backbone\u3002\u540c\u65f6\u5c06 Faster R-CNN \u6a21\u578b\u7684\u5206\u7c7b\u5668\u5934\u90e8\u4fee\u6539\u4e3a\u5bf9\u7269\u4f53\u7684\u5206\u7c7b\uff0c\u5176\u4e2d num_classes \u8868\u793a\u7269\u4f53\u7c7b\u522b\u6570\u3002\n\n\u63a5\u7740\uff0c\u5b9a\u4e49\u4e86\u635f\u5931\u51fd\u6570\u548c\u4f18\u5316\u5668\uff0c\u4f7f\u7528 SGD \u4f18\u5316\u5668\u8fdb\u884c\u6a21\u578b\u7684\u8bad\u7ec3\u3002\u5728\u8bad\u7ec3\u8fc7\u7a0b\u4e2d\uff0c\u5bf9\u8bad\u7ec3\u96c6\u8fdb\u884c\u904d\u5386\uff0c\u5bf9\u6bcf\u4e2abatch\u7684\u6570\u636e\u8fdb\u884c\u524d\u5411\u4f20\u64ad\u3001\u8ba1\u7b97\u635f\u5931\u3001\u53cd\u5411\u4f20\u64ad\u3001\u66f4\u65b0\u6a21\u578b\u53c2\u6570\u7b49\u64cd\u4f5c\u3002\u540c\u65f6\uff0c\u8bb0\u5f55\u6a21\u578b\u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u635f\u5931\u503c\uff0c\u5e76\u5728\u6bcf\u4e2aepoch\u7ed3\u675f\u65f6\u6253\u5370\u51fa\u5e73\u5747\u635f\u5931\u503c\u3002\u5728\u6bcf\u4e2a epoch \u7ed3\u675f\u65f6\uff0c\u8c03\u7528 test() \u51fd\u6570\u5728\u6d4b\u8bd5\u96c6\u4e0a\u6d4b\u8bd5\u6a21\u578b\u7684\u5206\u7c7b\u7cbe\u5ea6\u3002\n\n\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u4ee5\u4e0a\u793a\u4f8b\u4e2d\u7684 Faster R-CNN \u6a21\u578b\u4ec5\u9002\u7528\u4e8e COCO \u6570\u636e\u96c6\u4e0a\u7684\u7269\u4f53\u68c0\u6d4b\u4efb\u52a1\u3002\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\uff0c\u9700\u8981\u6839\u636e\u4e0d\u540c\u7684\u4efb\u52a1\u548c\u6570\u636e\u96c6\u9009\u62e9\u4e0d\u540c\u7684\u6a21\u578b\u67b6\u6784\uff0c\u5e76\u8fdb\u884c\u76f8\u5e94\u7684\u8c03\u6574\u548c\u4f18\u5316\u3002\u540c\u65f6\uff0c\u4e5f\u53ef\u4ee5\u91c7\u7528\u4e00\u4e9b\u66f4\u5148\u8fdb\u7684\u7269\u4f53\u68c0\u6d4b\u7b97\u6cd5\uff0c\u5982 YOLOv5\u3001EfficientDet \u7b49\u6765\u63d0\u9ad8\u68c0\u6d4b\u7cbe\u5ea6\u3002\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u6df1\u5c64\u5b66\u7fd2\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3 \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u306f\u3001\u30d4\u30af\u30bb\u30eb \u30ec\u30d9\u30eb\u306e\u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u753b\u50cf\u306e\u7406\u89e3\u306e\u305f\u3081\u306b\u3001\u753b\u50cf\u5185\u306e\u5404\u30d4\u30af\u30bb\u30eb\u306b\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af \u30e9\u30d9\u30eb\u3092\u5272\u308a\u5f53\u3066\u308b\u3053\u3068\u3092\u6307\u3057\u307e\u3059\u3002PyTorch \u3067\u306f\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u4e88\u6e2c\u306e\u305f\u3081\u306b torchvision \u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u3088\u3063\u3066\u63d0\u4f9b\u3055\u308c\u308b\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3 \u30c4\u30fc\u30eb\u30ad\u30c3\u30c8\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002\u7c21\u5358\u306a\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torchvision\nimport torchvision.transforms as transforms\nimport torchvision.models as models\nimport torch.nn as nn\nimport torch.optim as optim\nfrom torch.autograd import Variable\nimport time\n\n# \u5b9a\u4e49\u6570\u636e\u9884\u5904\u7406\u65b9\u5f0f\ntransform_train = transforms.Compose([\n    transforms.Resize((256, 256)),\n    transforms.RandomHorizontalFlip(),\n    transforms.ToTensor(),\n    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])\n])\n\ntransform_test = transforms.Compose([\n    transforms.Resize((256, 256)),\n    transforms.ToTensor(),\n    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])\n])\n\n# \u52a0\u8f7d\u6570\u636e\u96c6\ntrainset = torchvision.datasets.VOCSegmentation(root='.\/data', year='2012', image_set='train', download=True, transform=transform_train)\ntestset = torchvision.datasets.VOCSegmentation(root='.\/data', year='2012', image_set='val', download=True, transform=transform_test)\n\ntrainloader = torch.utils.data.DataLoader(trainset, batch_size=4, shuffle=True, num_workers=2)\ntestloader = torch.utils.data.DataLoader(testset, batch_size=4, shuffle=False, num_workers=2)\n\n# \u5b9a\u4e49\u6a21\u578b\nmodel = models.segmentation.fcn_resnet101(pretrained=True, progress=True)\nnum_classes = 21  # 20\u4e2a\u7269\u4f53\u7c7b\u522b + \u80cc\u666f\u7c7b\u522b\nin_features = model.classifier[-1].in_channels\nmodel.classifier[-1] = nn.Conv2d(in_features, num_classes, kernel_size=1)\n\n# \u5b9a\u4e49\u635f\u5931\u51fd\u6570\u548c\u4f18\u5316\u5668\nparams = [p for p in model.parameters() if p.requires_grad]\noptimizer = optim.SGD(params, lr=0.005, momentum=0.9, weight_decay=0.0005)\nlr_scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=3, gamma=0.1)\n\ncriterion = nn.CrossEntropyLoss()\n\n# \u5b9a\u4e49\u8bad\u7ec3\u51fd\u6570\u548c\u6d4b\u8bd5\u51fd\u6570\ndef train(model, data_loader, optimizer, criterion):\n    model.train()\n    running_loss = 0.0\n    for i, data in enumerate(data_loader, 0):\n        inputs, labels = data\n        inputs, labels = inputs.cuda(), labels.cuda()\n\n        optimizer.zero_grad()\n\n        outputs = model(inputs)\n        loss = criterion(outputs['out'], labels)\n\n        loss.backward()\n        optimizer.step()\n\n        running_loss += loss.item()\n        if i % 100 == 99:\n            print('[%d, %5d] loss: %.3f' %\n                  (epoch + 1, i + 1, running_loss \/ 100))\n            running_loss = 0.0\n\ndef test(model, data_loader):\n    model.eval()\n    correct = 0\n    total = 0\n    with torch.no_grad():\n        for data in data_loader:\n            images, labels = data\n            images, labels = images.cuda(), labels.cuda()\n\n            outputs = model(images)\n\n            _, predicted = torch\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>        max_scores, pred = torch.max(outputs['out'], dim=1)\n        total += labels.numel()\n        correct += (pred == labels).sum().item()\n\naccuracy = 100 * correct \/ total\nprint('Accuracy of the network on the test images: %d %%' % accuracy)\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb<\/h1>\n\n\n\n<p>device = torch.device(&#8216;cuda&#8217;) \u3082\u3057 torch.cuda.is_available() \u306a\u3089 torch.device(&#8216;cpu&#8217;) model.to(device)<\/p>\n\n\n\n<p>num_epochs = 5 for epoch in range(num_epochs): train(model, trainloader, optimizer, criteria) test(model, testloader) lr_scheduler.step()<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>\n\u5728\u4ee5\u4e0a\u793a\u4f8b\u4e2d\uff0c\u9996\u5148\u5b9a\u4e49\u4e86\u6570\u636e\u9884\u5904\u7406\u65b9\u5f0f transform_train \u548c transform_test\uff0c\u5206\u522b\u7528\u4e8e\u8bad\u7ec3\u96c6\u548c\u6d4b\u8bd5\u96c6\u7684\u6570\u636e\u9884\u5904\u7406\u3002\u7136\u540e\u4f7f\u7528 torchvision.datasets \u6a21\u5757\u4e2d\u7684 VOCSegmentation \u6570\u636e\u96c6\u52a0\u8f7d\u8bad\u7ec3\u96c6\u548c\u6d4b\u8bd5\u96c6\uff0c\u5e76\u4f7f\u7528 torch.utils.data \u6a21\u5757\u4e2d\u7684 DataLoader \u6765\u6784\u5efa\u6570\u636e\u8fed\u4ee3\u5668 trainloader \u548c testloader\uff0c\u7528\u4e8e\u540e\u7eed\u6a21\u578b\u7684\u8bad\u7ec3\u548c\u6d4b\u8bd5\u3002\n\n\u5b9a\u4e49\u4e86\u4e00\u4e2a FCN-ResNet101 \u6a21\u578b\uff0c\u5176\u4e2d num_classes \u8868\u793a\u7269\u4f53\u7c7b\u522b\u6570\uff0cin_features \u8868\u793a\u6a21\u578b\u8f93\u51fa\u7279\u5f81\u56fe\u7684\u901a\u9053\u6570\u3002\u5728\u6a21\u578b\u7684\u8bad\u7ec3\u4e2d\uff0c\u4f7f\u7528 CrossEntropyLoss \u4f5c\u4e3a\u635f\u5931\u51fd\u6570\uff0c\u4f7f\u7528 SGD \u4f18\u5316\u5668\u8fdb\u884c\u6a21\u578b\u7684\u8bad\u7ec3\u3002\u5728\u8bad\u7ec3\u8fc7\u7a0b\u4e2d\uff0c\u5bf9\u8bad\u7ec3\u96c6\u8fdb\u884c\u904d\u5386\uff0c\u5bf9\u6bcf\u4e2a batch \u7684\u6570\u636e\u8fdb\u884c\u524d\u5411\u4f20\u64ad\u3001\u8ba1\u7b97\u635f\u5931\u3001\u53cd\u5411\u4f20\u64ad\u3001\u66f4\u65b0\u6a21\u578b\u53c2\u6570\u7b49\u64cd\u4f5c\u3002\u540c\u65f6\uff0c\u8bb0\u5f55\u6a21\u578b\u5728\u8bad\u7ec3\u96c6\u4e0a\u7684\u635f\u5931\u503c\uff0c\u5e76\u5728\u6bcf\u4e2a epoch \u7ed3\u675f\u65f6\u6253\u5370\u51fa\u5e73\u5747\u635f\u5931\u503c\u3002\u5728\u6bcf\u4e2a epoch \u7ed3\u675f\u65f6\uff0c\u8c03\u7528 test() \u51fd\u6570\u5728\u6d4b\u8bd5\u96c6\u4e0a\u6d4b\u8bd5\u6a21\u578b\u7684\u5206\u5272\u7cbe\u5ea6\u3002\n\n\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u4ee5\u4e0a\u793a\u4f8b\u4e2d\u7684 FCN-ResNet101 \u6a21\u578b\u4ec5\u9002\u7528\u4e8e VOC \u6570\u636e\u96c6\u4e0a\u7684\u8bed\u4e49\u5206\u5272\u4efb\u52a1\u3002\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\uff0c\u9700\u8981\u6839\u636e\u4e0d\u540c\u7684\u4efb\u52a1\u548c\u6570\u636e\u96c6\u9009\u62e9\u4e0d\u540c\u7684\u6a21\u578b\u67b6\u6784\uff0c\u5e76\u8fdb\u884c\u76f8\u5e94\u7684\u8c03\u6574\u548c\u4f18\u5316\u3002\u540c\u65f6\uff0c\u4e5f\u53ef\u4ee5\u91c7\u7528\u4e00\u4e9b\u66f4\u5148\u8fdb\u7684\u8bed\u4e49\u5206\u5272\u7b97\u6cd5\uff0c\u5982 Deeplabv3+\u3001PSPNet \u7b49\u6765\u63d0\u9ad8\u5206\u5272\u7cbe\u5ea6\u3002\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u6df1\u5c64\u5b66\u7fd2\u306e\u5fdc\u7528\u4f8b \u6a5f\u68b0\u7ffb\u8a33\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u6559\u3048\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u6a5f\u68b0\u7ffb\u8a33\u3068\u306f\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u3001\u3042\u308b\u8a00\u8a9e\u304b\u3089\u5225\u306e\u8a00\u8a9e\u306b\u81ea\u52d5\u7684\u306b\u7ffb\u8a33\u3059\u308b\u3053\u3068\u3067\u3059\u3002PyTorch \u3067\u306f\u3001\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3066\u6a5f\u68b0\u7ffb\u8a33\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u30e2\u30c7\u30eb\u3067\u306f\u3001\u30a8\u30f3\u30b3\u30fc\u30c0\u30fc\u304c\u30bd\u30fc\u30b9\u8a00\u8a9e\u306e\u6587\u3092\u30d9\u30af\u30c8\u30eb\u306b\u30a8\u30f3\u30b3\u30fc\u30c9\u3057\u3001\u30c7\u30b3\u30fc\u30c0\u30fc\u304c\u30d9\u30af\u30bf\u30fc\u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u8a00\u8a9e\u306e\u6587\u306b\u30c7\u30b3\u30fc\u30c9\u3057\u307e\u3059\u3002\u7c21\u5358\u306a\u6a5f\u68b0\u7ffb\u8a33\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torch.nn as nn\nimport torch.optim as optim\nimport torch.nn.functional as F\nfrom torch.utils.data import Dataset, DataLoader\nfrom torch.nn.utils.rnn import pad_sequence\nimport numpy as np\nimport random\n\n# \u5b9a\u4e49\u8d85\u53c2\u6570\nSRC_VOCAB_SIZE = 10000\nTGT_VOCAB_SIZE = 10000\nEMBEDDING_SIZE = 256\nHIDDEN_SIZE = 512\nNUM_LAYERS = 2\nBATCH_SIZE = 64\nLEARNING_RATE = 1e-3\nNUM_EPOCHS = 10\nDEVICE = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n\n# \u5b9a\u4e49\u6570\u636e\u96c6\nclass TranslationDataset(Dataset):\n    def __init__(self, src_sentences, tgt_sentences):\n        self.src_sentences = src_sentences\n        self.tgt_sentences = tgt_sentences\n\n    def __len__(self):\n        return len(self.src_sentences)\n\n    def __getitem__(self, idx):\n        return self.src_sentences[idx], self.tgt_sentences[idx]\n\n# \u5b9a\u4e49\u6570\u636e\u9884\u5904\u7406\u65b9\u5f0f\ndef collate_fn(batch):\n    src_sentences, tgt_sentences = zip(*batch)\n    src_sentences = [torch.tensor(src_sentence) for src_sentence in src_sentences]\n    tgt_sentences = [torch.tensor(tgt_sentence) for tgt_sentence in tgt_sentences]\n\n    src_sentences = pad_sequence(src_sentences, padding_value=0)\n    tgt_sentences = pad_sequence(tgt_sentences, padding_value=0)\n\n    return src_sentences, tgt_sentences\n\n# \u52a0\u8f7d\u6570\u636e\u96c6\nsrc_sentences = np.load('.\/data\/src_sentences.npy')\ntgt_sentences = np.load('.\/data\/tgt_sentences.npy')\ntrain_size = int(0.8 * len(src_sentences))\n\ntrain_dataset = TranslationDataset(src_sentences[:train_size], tgt_sentences[:train_size])\nval_dataset = TranslationDataset(src_sentences[train_size:], tgt_sentences[train_size:])\n\ntrain_loader = DataLoader(train_dataset, batch_size=BATCH_SIZE, shuffle=True, collate_fn=collate_fn)\nval_loader = DataLoader(val_dataset, batch_size=BATCH_SIZE, shuffle=False, collate_fn=collate_fn)\n\n# \u5b9a\u4e49\u6a21\u578b\nclass Encoder(nn.Module):\n    def __init__(self, input_size, embedding_size, hidden_size, num_layers):\n        super(Encoder, self).__init__()\n        self.embedding = nn.Embedding(input_size, embedding_size)\n        self.gru = nn.GRU(embedding_size, hidden_size, num_layers=num_layers, bidirectional=True)\n\n    def forward(self, src_sentence):\n        embedded = self.embedding(src_sentence)\n        outputs, hidden = self.gru(embedded)\n        return outputs, hidden\n\nclass Decoder(nn.Module):\n    def __init__(self, output_size, embedding_size, hidden_size, num_layers):\n        super(Decoder, self).__init__()\n        self.embedding = nn.Embedding(output_size, embedding_size)\n        self.gru = nn.GRU(embedding_size, hidden_size, num_layers=num_layers)\n        self.out = nn.Linear(hidden_size, output_size)\n\n    def forward(self, input, hidden):\n        embedded = self.embedding(input.unsqueeze(0))\n        output,\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>    hidden = hidden.unsqueeze(0)\n    output, hidden = self.gru(embedded, hidden)\n    output = self.out(output.squeeze(0))\n    return output, hidden.squeeze(0)\n<\/code><\/pre>\n\n\n\n<p>class Seq2Seq(nn.Module): def&nbsp;<strong>init<\/strong>&nbsp;(self\u3001encoder\u3001decoder): super(Seq2Seq, self)\u3002<strong>init<\/strong>&nbsp;() self.encoder = \u30a8\u30f3\u30b3\u30fc\u30c0\u30fc self.decoder = \u30c7\u30b3\u30fc\u30c0\u30fc<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">lua\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>def forward(self, src_sentence, tgt_sentence, teacher_forcing_ratio=0.5):\n    batch_size = src_sentence.shape[1]\n    max_len = tgt_sentence.shape[0]\n    vocab_size = self.decoder.out.out_features\n\n    outputs = torch.zeros(max_len, batch_size, vocab_size).to(DEVICE)\n    encoder_outputs, hidden = self.encoder(src_sentence)\n\n    decoder_input = tgt_sentence[0, :]\n    for t in range(1, max_len):\n        output, hidden = self.decoder(decoder_input, hidden)\n        outputs[t] = output\n        teacher_force = random.random() &lt; teacher_forcing_ratio\n        top1 = output.argmax(1)\n        decoder_input = tgt_sentence[t] if teacher_force else top1\n\n    return outputs\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb<\/h1>\n\n\n\n<p>\u30a8\u30f3\u30b3\u30fc\u30c0\u30fc = \u30a8\u30f3\u30b3\u30fc\u30c0\u30fc(SRC_VOCAB_SIZE, EMBEDDING_SIZE, HIDDEN_SIZE, NUM_LAYERS) \u30c7\u30b3\u30fc\u30c0\u30fc = \u30c7\u30b3\u30fc\u30c0\u30fc(TGT_VOCAB_SIZE, EMBEDDING_SIZE, HIDDEN_SIZE, NUM_LAYERS) \u30e2\u30c7\u30eb = Seq2Seq(\u30a8\u30f3\u30b3\u30fc\u30c0\u30fc, \u30c7\u30b3\u30fc\u30c0\u30fc).to(DEVICE)<\/p>\n\n\n\n<p>\u57fa\u6e96 = nn.CrossEntropyLoss(ignore_index=0) \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc = optim.Adam(model.parameters(), lr=LEARNING_RATE) lr_scheduler = optim.lr_scheduler.StepLR(\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc, step_size=1, \u30ac\u30f3\u30de=0.1)<\/p>\n\n\n\n<p>def train(\u30e2\u30c7\u30eb\u3001\u30a4\u30c6\u30ec\u30fc\u30bf\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u3001\u57fa\u6e96): model.train() epoch_loss = 0<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>for i, (src_sentence, tgt_sentence) in enumerate(iterator):\n    src_sentence = src_sentence.to(DEVICE)\n    tgt_sentence = tgt_sentence.to(DEVICE)\n\n    optimizer.zero_grad()\n    output = model(src_sentence, tgt_sentence)\n    output = output[1:].view(-1, output.shape[-1])\n    tgt_sentence = tgt_sentence[1:].view(-1)\n    loss = criterion(output, tgt_sentence)\n    loss.backward()\n    optimizer.step()\n\n    epoch_loss += loss.item()\n\nreturn epoch_loss \/ len(iterator)\n<\/code><\/pre>\n\n\n\n<p>def evaluate(\u30e2\u30c7\u30eb\u3001\u53cd\u5fa9\u5b50\u3001\u57fa\u6e96): model.eval() epoch_loss = 0<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>with torch.no_grad():\n    for i, (src_sentence, tgt_sentence) in enumerate(iterator):\n        src_sentence = src_sentence.to(DEVICE)\n        tgt_sentence = tgt_sentence.to(DEVICE)\n\n        output = model(src_sentence, tgt_sentence, 0)\n        output = output[1:].view(-1, output.shape[-1])\n        tgt_sentence = tgt_sentence[1:].view(-1)\n        loss = criterion(output, tgt_sentence)\n\n        epoch_loss += loss.item()\n\nreturn epoch_loss \/ len(iterator)\n<\/code><\/pre>\n\n\n\n<p>\u7bc4\u56f2\u5185\u306e\u30a8\u30dd\u30c3\u30af (NUM_EPOCHS): train_loss = train(\u30e2\u30c7\u30eb\u3001train_loader\u3001optimizer\u3001\u57fa\u6e96) val_loss = evaluate(\u30e2\u30c7\u30eb\u3001val_loader\u3001\u57fa\u6e96) lr_scheduler.step()<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">css\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>print(f'Epoch: {epoch+1} | Train Loss: {train_loss:.3f} | Val Loss: {val_loss:.3f}')\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>\n\u5728\u4ee5\u4e0a\u793a\u4f8b\u4e2d\uff0c\u9996\u5148\u5b9a\u4e49\u4e86\u8d85\u53c2\u6570\uff0c\u5305\u62ec\u6e90\u8bed\u8a00\u548c\u76ee\u6807\u8bed\u8a00\u8bcd\u6c47\u8868\u5927\u5c0f\u3001\u5d4c\u5165\u5c42\u7ef4\u5ea6\u3001\u9690\u85cf\u5c42\u7ef4\u5ea6\u3001\u7f51\u7edc\u5c42\u6570\u3001\u6279\u6b21\u5927\u5c0f\u3001\u5b66\u4e60\u7387\u548c\u8fed\u4ee3\u6b21\u6570\u3002\u7136\u540e\u5b9a\u4e49\u4e86 TranslationDataset \u7c7b\uff0c\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044 PyTorch \u6df1\u5c64\u5b66\u7fd2\u306e\u5fdc\u7528\u4f8b \u97f3\u58f0\u8a8d\u8b58<\/p>\n\n\n\n<p>\u97f3\u58f0\u8a8d\u8b58\u3068\u306f\u3001\u4eba\u9593\u306e\u97f3\u58f0\u4fe1\u53f7\u3092\u6a5f\u68b0\u304c\u51e6\u7406\u3067\u304d\u308b\u30c6\u30ad\u30b9\u30c8\u307e\u305f\u306f\u305d\u306e\u4ed6\u306e\u5f62\u5f0f\u306b\u5909\u63db\u3059\u308b\u30bf\u30b9\u30af\u3092\u6307\u3057\u307e\u3059\u3002PyTorch \u3067\u306f\u3001\u6df1\u5c64\u5b66\u7fd2\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3066\u97f3\u58f0\u8a8d\u8b58\u3092\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u7c21\u5358\u306a\u97f3\u58f0\u8a8d\u8b58\u306e\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torch.nn as nn\nimport torch.optim as optim\nimport torch.nn.functional as F\nfrom torch.utils.data import Dataset, DataLoader\nimport torchaudio\nimport numpy as np\n\n# \u5b9a\u4e49\u8d85\u53c2\u6570\nNUM_CLASSES = 10\nNUM_EPOCHS = 10\nLEARNING_RATE = 1e-3\nBATCH_SIZE = 32\nDEVICE = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n\n# \u52a0\u8f7d\u6570\u636e\u96c6\ntrain_dataset = torchaudio.datasets.SPEECHCOMMANDS('.\/data', url='speech_commands_v0.02', download=True)\ntest_dataset = torchaudio.datasets.SPEECHCOMMANDS('.\/data', url='speech_commands_v0.02', download=True, split='testing')\n\n# \u5b9a\u4e49\u6570\u636e\u9884\u5904\u7406\u51fd\u6570\ndef preprocess_data(data):\n    waveform, sample_rate, label = data\n    mfcc_transform = torchaudio.transforms.MFCC(sample_rate=sample_rate)\n    mfccs = mfcc_transform(waveform).squeeze(0)\n    return mfccs, label\n\n# \u5b9a\u4e49\u6570\u636e\u96c6\nclass SpeechCommandsDataset(Dataset):\n    def __init__(self, dataset):\n        self.dataset = dataset\n\n    def __len__(self):\n        return len(self.dataset)\n\n    def __getitem__(self, idx):\n        data = self.dataset[idx]\n        mfccs, label = preprocess_data(data)\n        return mfccs, label\n\n# \u52a0\u8f7d\u6570\u636e\u96c6\ntrain_dataset = SpeechCommandsDataset(train_dataset)\ntest_dataset = SpeechCommandsDataset(test_dataset)\n\ntrain_loader = DataLoader(train_dataset, batch_size=BATCH_SIZE, shuffle=True)\ntest_loader = DataLoader(test_dataset, batch_size=BATCH_SIZE, shuffle=False)\n\n# \u5b9a\u4e49\u6a21\u578b\nclass SpeechRecognitionModel(nn.Module):\n    def __init__(self):\n        super(SpeechRecognitionModel, self).__init__()\n        self.conv1 = nn.Conv2d(1, 64, kernel_size=(3,3), stride=(2,2), padding=(1,1))\n        self.bn1 = nn.BatchNorm2d(64)\n        self.conv2 = nn.Conv2d(64, 128, kernel_size=(3,3), stride=(2,2), padding=(1,1))\n        self.bn2 = nn.BatchNorm2d(128)\n        self.conv3 = nn.Conv2d(128, 256, kernel_size=(3,3), stride=(2,2), padding=(1,1))\n        self.bn3 = nn.BatchNorm2d(256)\n        self.conv4 = nn.Conv2d(256, 512, kernel_size=(3,3), stride=(2,2), padding=(1,1))\n        self.bn4 = nn.BatchNorm2d(512)\n        self.pool = nn.AdaptiveAvgPool2d((1, 1))\n        self.fc = nn.Linear(512, NUM_CLASSES)\n\n    def forward(self, x):\n        x = self.conv1(x)\n        x = self.bn1(x)\n        x = F.relu(x)\n\n        x = self.conv2(x)\n        x = self.bn2(x)\n        x = F.relu(x)\n\n        x = self.conv3(x)\n        x = self.bn3(x)\n        x = F.relu(x)\n\n        x = self.conv4(x)\n        x = self.bn4\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>    x = F.relu(x)\n\n    x = self.pool(x)\n    x = x.view(x.size(0), -1)\n    x = self.fc(x)\n\n    return x\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb<\/h1>\n\n\n\n<p>\u30e2\u30c7\u30eb = SpeechRecognitionModel().to(DEVICE) \u57fa\u6e96 = nn.CrossEntropyLoss() \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc = optim.Adam(model.parameters(), lr=LEARNING_RATE)<\/p>\n\n\n\n<p>def train(\u30e2\u30c7\u30eb\u3001\u30a4\u30c6\u30ec\u30fc\u30bf\u3001\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u3001\u57fa\u6e96): model.train() epoch_loss = 0 epoch_acc = 0<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">css\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>for mfccs, labels in iterator:\n    mfccs = mfccs.unsqueeze(1).to(DEVICE)\n    labels = labels.to(DEVICE)\n\n    optimizer.zero_grad()\n    output = model(mfccs)\n    loss = criterion(output, labels)\n    acc = (output.argmax(1) == labels).sum().item() \/ BATCH_SIZE\n    loss.backward()\n    optimizer.step()\n\n    epoch_loss += loss.item()\n    epoch_acc += acc\n\nreturn epoch_loss \/ len(iterator), epoch_acc \/ len(iterator)\n<\/code><\/pre>\n\n\n\n<p>def evaluate(\u30e2\u30c7\u30eb\u3001\u53cd\u5fa9\u5b50\u3001\u57fa\u6e96): model.eval() epoch_loss = 0 epoch_acc = 0<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>with torch.no_grad():\n    for mfccs, labels in iterator:\n        mfccs = mfccs.unsqueeze(1).to(DEVICE)\n        labels = labels.to(DEVICE)\n\n        output = model(mfccs)\n        loss = criterion(output, labels)\n        acc = (output.argmax(1) == labels).sum().item() \/ BATCH_SIZE\n\n        epoch_loss += loss.item()\n        epoch_acc += acc\n\nreturn epoch_loss \/ len(iterator), epoch_acc \/ len(iterator)\n<\/code><\/pre>\n\n\n\n<p>\u7bc4\u56f2\u5185\u306e\u30a8\u30dd\u30c3\u30af (NUM_EPOCHS): train_loss, train_acc = train(\u30e2\u30c7\u30eb, train_loader, \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6, \u57fa\u6e96) val_loss, val_acc = evaluate(\u30e2\u30c7\u30eb, test_loader, \u57fa\u6e96)<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">css\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>print(f'Epoch: {epoch+1} | Train Loss: {train_loss:.3f} | Train Acc: {train_acc:.3f} | Val Loss: {val_loss:.3f} | Val Acc: {val_acc:.3f}')\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>\n\u5728\u4ee5\u4e0a\u793a\u4f8b\u4e2d\uff0c\u9996\u5148\u5b9a\u4e49\u4e86\u8d85\u53c2\u6570\uff0c\u5305\u62ec\u5206\u7c7b\u6570\u3001\u8fed\u4ee3\u6b21\u6570\u3001\u5b66\u4e60\u7387\u3001\u6279\u6b21\u5927\u5c0f\u548c\u8bbe\u5907\u7c7b\u578b\u3002\u7136\u540e\u52a0\u8f7d\u4e86 torchaudio \u4e2d\u7684 SPEECHCOMMANDS \u6570\u636e\u96c6\uff0c\u5e76\u5b9a\u4e49\u4e86\u6570\u636e\u9884\u5904\u7406\u51fd\u6570\u548c SpeechCommandsDataset \u7c7b\u6765\u5904\u7406\u6570\u636e\u3002\u63a5\u4e0b\u6765\u5b9a\u4e49\u4e86 SpeechRecognitionModel \u7c7b\u4f5c\u4e3a\u6a21\u578b\uff0c\u5176\u4e2d\u5305\u62ec\u591a\u4e2a\u5377\u79ef\u5c42\u3001\u6c60\u5316\u5c42\u548c\u5168\u8fde\u63a5\u5c42\u3002\u6700\u540e\u5b9a\u4e49\u4e86\u8bad\u7ec3\u548c\u9a8c\u8bc1\u51fd\u6570\u6765\u8bad\u7ec3\u548c\u6d4b\u8bd5\u6a21\u578b\u3002\u5728\u6bcf\u4e2a epoch \u4e2d\uff0c\u4f7f\u7528 train \u51fd\u6570\u8bad\u7ec3\u6a21\u578b\uff0c\u7136\u540e\u4f7f\u7528 evaluate \u51fd\u6570\u9a8c\u8bc1\u6a21\u578b\u3002\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u306f\u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u3064\u307e\u308a\u3001\u8907\u6570\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u3092\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3057\u307e\u3059\u3002\u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3067\u306f\u3001\u901a\u5e38\u3001\u30c7\u30fc\u30bf \u30bb\u30c3\u30c8\u306f\u8907\u6570\u306e\u90e8\u5206\u306b\u5206\u5272\u3055\u308c\u3001\u5404\u90e8\u5206\u304c\u7570\u306a\u308b\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u304c\u5354\u529b\u3057\u3066\u30e2\u30c7\u30eb\u3092\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001PyTorch \u3067\u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u8907\u6570\u306e\u30d7\u30ed\u30bb\u30b9\u306e\u958b\u59cb \u307e\u305a\u3001\u8907\u6570\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u3067\u8907\u6570\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u958b\u59cb\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u5404\u30d7\u30ed\u30bb\u30b9\u306f\u540c\u3058\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3057\u307e\u3059\u304c\u3001\u7570\u306a\u308b\u30c7\u30fc\u30bf\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002PyTorch \u3067\u306f\u3001torch.distributed.launch \u30c4\u30fc\u30eb\u3092\u4f7f\u7528\u3057\u3066\u8907\u6570\u306e\u30d7\u30ed\u30bb\u30b9\u3092\u8d77\u52d5\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u30b3\u30de\u30f3\u30c9 \u30e9\u30a4\u30f3\u3067\u6b21\u306e\u30b3\u30de\u30f3\u30c9\u3092\u5165\u529b\u3059\u308b\u3068\u30012 \u3064\u306e\u30d7\u30ed\u30bb\u30b9\u304c\u958b\u59cb\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">css\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>python -m torch.distributed.launch --nproc_per_node=2 train.py\n<\/code><\/pre>\n\n\n\n<p>\u305d\u306e\u4e2d\u3067\u3001 &#8211;nproc_per_node=2 \u306f\u5404\u30ce\u30fc\u30c9\u306e\u30d7\u30ed\u30bb\u30b9\u6570\u304c 2 \u3067\u3042\u308b\u3053\u3068\u3092\u6307\u5b9a\u3057\u3001train.py \u306f\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30b9\u30af\u30ea\u30d7\u30c8\u306e\u540d\u524d\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u5206\u6563\u74b0\u5883\u306e\u521d\u671f\u5316 \u5404\u30d7\u30ed\u30bb\u30b9\u3067\u306f\u3001\u5206\u6563\u74b0\u5883\u3092\u521d\u671f\u5316\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002PyTorch \u3067\u306f\u3001\u5206\u6563\u74b0\u5883\u306f torch.distributed.init_process_group \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u521d\u671f\u5316\u3067\u304d\u307e\u3059\u3002\u3053\u306e\u95a2\u6570\u306f\u3001\u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306b\u4f7f\u7528\u3055\u308c\u308b\u901a\u4fe1\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3001\u30ce\u30fc\u30c9\u6570\u3001\u73fe\u5728\u306e\u30ce\u30fc\u30c9\u306e\u30e9\u30f3\u30ad\u30f3\u30b0\u306a\u3069\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u5206\u6563\u74b0\u5883\u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">javascript\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>import torch\nimport torch.distributed as dist\n\ndist.init_process_group(\n    backend='gloo',\n    init_method='tcp:\/\/127.0.0.1:23456',\n    rank=rank,\n    world_size=world_size\n)\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u3046\u3061\u3001backend \u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u901a\u4fe1\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u3092\u6307\u5b9a\u3057\u3001init_method \u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u5206\u6563\u30d7\u30ed\u30bb\u30b9\u9593\u901a\u4fe1\u306e\u65b9\u6cd5\u3092\u6307\u5b9a\u3057\u3001rank \u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u30ce\u30fc\u30c9\u5185\u306e\u73fe\u5728\u306e\u30d7\u30ed\u30bb\u30b9\u306e\u30e9\u30f3\u30af\u3092\u6307\u5b9a\u3057\u3001world_size \u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u30ce\u30fc\u30c9\u306e\u6570\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30c7\u30fc\u30bf\u306e\u30ed\u30fc\u30c9 \u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3067\u306f\u3001\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u8907\u6570\u306e\u90e8\u5206\u306b\u5206\u5272\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u5404\u90e8\u5206\u306f\u7570\u306a\u308b\u30d7\u30ed\u30bb\u30b9\u306b\u5272\u308a\u5f53\u3066\u3089\u308c\u307e\u3059\u3002\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u5206\u6563\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u306f\u3001PyTorch \u306e DistributedSampler \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001DistributedSampler \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u5206\u6563\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u3092\u5b9f\u88c5\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>from torch.utils.data import DataLoader, DistributedSampler\n\ndataset = ...\nsampler = DistributedSampler(dataset)\ndataloader = DataLoader(dataset, batch_size=batch_size, sampler=sampler)\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u3046\u3061\u3001dataset \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u6307\u5b9a\u3057\u3001sampler \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u5206\u6563\u30b5\u30f3\u30d7\u30e9\u30fc\u3092\u6307\u5b9a\u3057\u3001dataloader \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u30c7\u30fc\u30bf\u30ed\u30fc\u30c0\u30fc\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9 \u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u30d7\u30ed\u30bb\u30b9\u306b\u308f\u305f\u3063\u3066\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u30e9\u30f3\u30af 0 \u306e\u30d7\u30ed\u30bb\u30b9\u306e\u307f\u304c\u30e2\u30c7\u30eb\u3092\u5b9a\u7fa9\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u305f\u3081\u3001\u30e2\u30c7\u30eb\u306f if rank == 0 \u6761\u4ef6\u30b9\u30c6\u30fc\u30c8\u30e1\u30f3\u30c8\u3067\u5b9a\u7fa9\u3055\u308c\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch.nn as nn\n\nif rank == 0:\n    model = nn.Linear(10, 1)\nelse:\n    model = None\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3067\u306f\u3001\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u3059\u3079\u3066\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u4e00\u8cab\u3057\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u3059\u3079\u3066\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002PyTorch \u306e\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30d1\u30e9\u30e1\u30fc\u30bf\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8\u3092\u5b9f\u88c5\u3059\u308b\u6a5f\u80fd\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">wasm\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>import torch.distributed as dist\n\nif rank == 0:\n    # \u5c06\u6a21\u578b\u53c2\u6570\u53d1\u9001\u7ed9\u5176\u4ed6\u8fdb\u7a0b\n    for param in model.parameters():\n        dist.broadcast(param, src=0)\nelse:\n    # \u63a5\u6536\u6a21\u578b\u53c2\u6570\n    for param in model.parameters():\n        dist.broadcast(param, src=0)\n<\/code><\/pre>\n\n\n\n<p>\u3053\u306e\u3046\u3061\u3001src \u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u3001\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30bd\u30fc\u30b9\u306e\u30d7\u30ed\u30bb\u30b9\u756a\u53f7\u3092\u6307\u5b9a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"6\">\n<li>\u52fe\u914d\u306e\u8a08\u7b97 \u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3067\u306f\u3001\u5404\u30d7\u30ed\u30bb\u30b9\u304c\u72ec\u81ea\u306e\u52fe\u914d\u3092\u8a08\u7b97\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u52fe\u914d\u306f\u3001PyTorch \u306e\u5f8c\u65b9\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u8a08\u7b97\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u52fe\u914d\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>optimizer.zero_grad()\nloss.backward()\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"7\">\n<li>\u52fe\u914d\u306e\u96c6\u7d04 \u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3067\u306f\u3001\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u66f4\u65b0\u3059\u308b\u305f\u3081\u306b\u3001\u3059\u3079\u3066\u306e\u30d7\u30ed\u30bb\u30b9\u306e\u52fe\u914d\u3092\u96c6\u7d04\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u52fe\u914d\u306f\u3001PyTorch \u306e all_reduce \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u8981\u7d04\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f all_reduce \u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u52fe\u914d\u3092\u8981\u7d04\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">kotlin\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch.distributed as dist\n\n# \u6c47\u603b\u68af\u5ea6\nfor param in model.parameters():\n    dist.all_reduce(param.grad.data, op=dist.ReduceOp.SUM)\n<\/code><\/pre>\n\n\n\n<p>\u305d\u306e\u4e2d\u3067\u3001op \u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u30ea\u30c0\u30af\u30b7\u30e7\u30f3\u6f14\u7b97\u306e\u30bf\u30a4\u30d7\u3092\u6307\u5b9a\u3057\u3001\u3053\u3053\u3067\u306f ReduceOp.SUM \u3092\u4f7f\u7528\u3057\u3066\u5408\u8a08\u3092\u8868\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"8\">\n<li>\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u66f4\u65b0 \u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3067\u306f\u3001\u3059\u3079\u3066\u306e\u30d7\u30ed\u30bb\u30b9\u3067\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u66f4\u65b0\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u3001PyTorch \u306e\u30b9\u30c6\u30c3\u30d7\u95a2\u6570\u3092\u4f7f\u7528\u3057\u3066\u66f4\u65b0\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u66f4\u65b0\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>optimizer.step()\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306f\u3001PyTorch \u3067\u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306e\u57fa\u672c\u7684\u306a\u624b\u9806\u3067\u3059\u3002\u306a\u304a\u3001\u5206\u6563\u5b66\u7fd2\u3067\u306f\u8907\u6570\u306e\u30d7\u30ed\u30bb\u30b9\u9593\u3067\u901a\u4fe1\u304c\u884c\u308f\u308c\u308b\u305f\u3081\u3001\u30d7\u30ed\u30bb\u30b9\u9593\u306e\u52d5\u4f5c\u306e\u540c\u671f\u306b\u4f59\u5206\u306a\u6642\u9593\u304c\u304b\u304b\u308b\u305f\u3081\u3001\u5206\u6563\u5b66\u7fd2\u306e\u52b9\u7387\u306b\u3042\u308b\u7a0b\u5ea6\u5f71\u97ff\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u30e2\u30c7\u30eb\u306e\u91cf\u5b50\u5316\u3068\u5727\u7e2e\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u30e2\u30c7\u30eb\u306e\u91cf\u5b50\u5316\u3068\u5727\u7e2e\u306f\u3001\u30e2\u30c7\u30eb\u306e\u7cbe\u5ea6\u3092\u7dad\u6301\u3057\u306a\u304c\u3089\u30e2\u30c7\u30eb\u306e\u30b5\u30a4\u30ba\u3068\u8a08\u7b97\u3092\u524a\u6e1b\u3059\u308b\u3053\u3068\u3067\u3001\u30e2\u30d0\u30a4\u30eb \u30c7\u30d0\u30a4\u30b9\u3084\u30a8\u30c3\u30b8 \u30c7\u30d0\u30a4\u30b9\u306b\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb\u3092\u5c55\u958b\u3059\u308b\u3053\u3068\u304c\u3088\u308a\u5b9f\u73fe\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001PyTorch \u30e2\u30c7\u30eb\u306e\u91cf\u5b50\u5316\u3068\u5727\u7e2e\u306e\u57fa\u672c\u7684\u306a\u65b9\u6cd5\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30e2\u30c7\u30eb\u306e\u91cf\u5b50\u5316 \u30e2\u30c7\u30eb\u306e\u91cf\u5b50\u5316\u3068\u306f\u3001\u30e2\u30c7\u30eb\u5185\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6574\u6570\u307e\u305f\u306f\u3088\u308a\u5c0f\u3055\u3044\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u3092\u6307\u3057\u3001\u305d\u308c\u306b\u3088\u3063\u3066\u30e2\u30c7\u30eb\u306e\u30b5\u30a4\u30ba\u3068\u8a08\u7b97\u3092\u524a\u6e1b\u3057\u307e\u3059\u3002PyTorch \u306f\u3001\u6574\u6570\u91cf\u5b50\u5316\u3084\u6d6e\u52d5\u5c0f\u6570\u70b9\u91cf\u5b50\u5316\u306a\u3069\u3001\u8907\u6570\u306e\u30e2\u30c7\u30eb\u91cf\u5b50\u5316\u30e1\u30bd\u30c3\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u305d\u306e\u3046\u3061\u3001\u6574\u6570\u91cf\u5b50\u5316\u306f\u30e2\u30c7\u30eb\u5185\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u6574\u6570\u306b\u5909\u63db\u3057\u3066\u30e2\u30c7\u30eb\u306e\u30b5\u30a4\u30ba\u3068\u8a08\u7b97\u91cf\u3092\u524a\u6e1b\u3057\u3001\u6d6e\u52d5\u5c0f\u6570\u70b9\u91cf\u5b50\u5316\u306f\u30e2\u30c7\u30eb\u5185\u306e\u6d6e\u52d5\u5c0f\u6570\u70b9\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u3088\u308a\u5c0f\u3055\u306a\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u306b\u5909\u63db\u3057\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30e2\u30c7\u30eb\u3068\u8a08\u7b97\u306e\u30b5\u30a4\u30ba\u304c\u7e2e\u5c0f\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30e2\u30c7\u30eb\u5727\u7e2e \u30e2\u30c7\u30eb\u5727\u7e2e\u3068\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u65b9\u6cd5\u3067\u30e2\u30c7\u30eb\u306e\u30b5\u30a4\u30ba\u3068\u8a08\u7b97\u3092\u524a\u6e1b\u3057\u3001\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb\u3092\u30e2\u30d0\u30a4\u30eb \u30c7\u30d0\u30a4\u30b9\u3084\u30a8\u30c3\u30b8 \u30c7\u30d0\u30a4\u30b9\u306b\u5c55\u958b\u3059\u308b\u3053\u3068\u3067\u3059\u3002PyTorch \u306f\u3001\u679d\u5208\u308a\u3001\u91cf\u5b50\u5316\u3001\u4f4e\u30e9\u30f3\u30af\u5206\u89e3\u3001\u77e5\u8b58\u84b8\u7559\u306a\u3069\u3001\u3055\u307e\u3056\u307e\u306a\u30e2\u30c7\u30eb\u5727\u7e2e\u65b9\u6cd5\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u3046\u3061\u3001\u679d\u5208\u308a\u3068\u306f\u3001\u30e2\u30c7\u30eb\u5185\u306e\u5197\u9577\u306a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3068\u63a5\u7d9a\u3092\u524a\u9664\u3057\u3066\u3001\u30e2\u30c7\u30eb\u306e\u30b5\u30a4\u30ba\u3068\u8a08\u7b97\u91cf\u3092\u524a\u6e1b\u3059\u308b\u3053\u3068\u3092\u6307\u3057\u3001\u4f4e\u30e9\u30f3\u30af\u5206\u89e3\u3068\u306f\u3001\u30e2\u30c7\u30eb\u5185\u306e\u7573\u307f\u8fbc\u307f\u30ab\u30fc\u30cd\u30eb\u884c\u5217\u3092\u8907\u6570\u306e\u5c0f\u3055\u306a\u884c\u5217\u306b\u5206\u89e3\u3057\u3066\u3001\u30e2\u30c7\u30eb\u306e\u30b5\u30a4\u30ba\u3092\u5c0f\u3055\u304f\u3059\u308b\u3053\u3068\u3092\u6307\u3057\u307e\u3059\u3002\u77e5\u8b58\u306e\u84b8\u7559\u3068\u306f\u3001\u3088\u308a\u5927\u304d\u306a\u6559\u5e2b\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3066\u3088\u308a\u5c0f\u3055\u306a\u751f\u5f92\u30e2\u30c7\u30eb\u3092\u5c0e\u304d\u3001\u305d\u308c\u306b\u3088\u3063\u3066\u30e2\u30c7\u30eb\u306e\u30b5\u30a4\u30ba\u3068\u8a08\u7b97\u3092\u524a\u6e1b\u3059\u308b\u3053\u3068\u3092\u6307\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>PyTorch \u3067\u306f\u3001Quantization Aware Training (QAT) \u30c6\u30af\u30ce\u30ed\u30b8\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u306e\u91cf\u5b50\u5316\u3092\u5b9f\u73fe\u3067\u304d\u3001torch.quantization \u30d1\u30c3\u30b1\u30fc\u30b8\u306e API \u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u306e\u5727\u7e2e\u3092\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002PyTorch \u3067\u30e2\u30c7\u30eb\u306e\u91cf\u5b50\u5316\u3068\u5727\u7e2e\u3092\u5b9f\u88c5\u3059\u308b\u65b9\u6cd5\u3092\u793a\u3059\u7c21\u5358\u306a\u4f8b\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch\nimport torch.nn as nn\nimport torch.optim as optim\nimport torchvision.datasets as datasets\nimport torchvision.transforms as transforms\nimport torch.quantization\n\n# \u5b9a\u4e49\u6a21\u578b\nclass Net(nn.Module):\n    def __init__(self):\n        super(Net, self).__init__()\n        self.fc1 = nn.Linear(28*28, 256)\n        self.fc2 = nn.Linear(256, 10)\n\n    def forward(self, x):\n        x = x.view(-1, 28*28)\n        x = torch.relu(self.fc1(x))\n        x = self.fc2(x)\n        return x\n\n# \u52a0\u8f7d\u6570\u636e\ntrain_data = datasets.MNIST(\n    root='data', train=True, transform=transforms.ToTensor(), download=True)\ntest_data = datasets.MNIST(\n    root='data', train=False, transform=transforms.ToTensor(), download=True)\n\n# \u8bad\u7ec3\u6a21\u578b\nmodel = Net\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u640d\u5931\u95a2\u6570\u3068\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u5b9a\u7fa9\u3059\u308b<\/h1>\n\n\n\n<p>\u57fa\u6e96 = nn.CrossEntropyLoss() \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc = optim.Adam(model.parameters(), lr=0.001)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb<\/h1>\n\n\n\n<p>range(5) \u306e\u30a8\u30dd\u30c3\u30af\u306e\u5834\u5408: running_loss = 0.0 for i\u3001enumerate(train_data, 0) \u306e\u30c7\u30fc\u30bf: \u5165\u529b\u3001\u30e9\u30d9\u30eb = \u30c7\u30fc\u30bf optimizer.zero_grad() \u51fa\u529b = \u30e2\u30c7\u30eb (\u5165\u529b) \u640d\u5931 = \u57fa\u6e96 (\u51fa\u529b\u3001\u30e9\u30d9\u30eb) loss.backward () \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc.\u30b9\u30c6\u30c3\u30d7()<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">css\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>    running_loss += loss.item()\n    if i % 100 == 99:\n        print('[%d, %5d] loss: %.3f' %\n              (epoch+1, i+1, running_loss\/100))\n        running_loss = 0.0\n<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">\u30e2\u30c7\u30eb\u3092\u5b9a\u91cf\u5316\u3059\u308b<\/h1>\n\n\n\n<p>quantized_model = torch.quantization.quantize_dynamic(\u30e2\u30c7\u30eb\u3001{nn.Linear}\u3001dtype=torch.qint8)<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u8a55\u4fa1\u30e2\u30c7\u30eb<\/h1>\n\n\n\n<p>\u6b63\u3057\u3044 = 0 torch.no_grad() \u3092\u4f7f\u7528\u3057\u305f\u5408\u8a08 = 0: test_data \u306e\u30c7\u30fc\u30bf: \u753b\u50cf\u3001\u30e9\u30d9\u30eb = \u30c7\u30fc\u30bf\u51fa\u529b = quantized_model(images) _\u3001\u4e88\u6e2c = torch.max(outputs.data, 1) \u5408\u8a08 += labels.size( 0) \u6b63\u3057\u3044 += (\u4e88\u6e2c == \u30e9\u30d9\u30eb).sum().item()<\/p>\n\n\n\n<p>print(&#8216;10000 \u500b\u306e\u30c6\u30b9\u30c8\u753b\u50cf\u3067\u306e\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u7cbe\u5ea6: %d %%&#8217; % ( 100 * \u6b63\u89e3 \/ \u5408\u8a08))<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>\n\u5728\u4e0a\u9762\u7684\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u9996\u5148\u5b9a\u4e49\u4e86\u4e00\u4e2a\u7b80\u5355\u7684\u5168\u8fde\u63a5\u795e\u7ecf\u7f51\u7edc\u6a21\u578b\uff0c\u7136\u540e\u4f7f\u7528 MNIST \u6570\u636e\u96c6\u8fdb\u884c\u8bad\u7ec3\u3002\u8bad\u7ec3\u5b8c\u6210\u540e\uff0c\u6211\u4eec\u4f7f\u7528 PyTorch \u7684 quantization \u5305\u4e2d\u7684 quantize_dynamic \u51fd\u6570\u5c06\u6a21\u578b\u91cf\u5316\u4e3a 8 \u4f4d\u6574\u6570\u578b\uff0c\u7136\u540e\u8bc4\u4f30\u91cf\u5316\u540e\u7684\u6a21\u578b\u7684\u7cbe\u5ea6\u3002\u53ef\u4ee5\u770b\u5230\uff0c\u91cf\u5316\u540e\u7684\u6a21\u578b\u7684\u7cbe\u5ea6\u5e76\u6ca1\u6709\u663e\u8457\u4e0b\u964d\uff0c\u4f46\u6a21\u578b\u7684\u5927\u5c0f\u548c\u8ba1\u7b97\u91cf\u5f97\u5230\u4e86\u663e\u8457\u7684\u51cf\u5c0f\u3002\n\n\u4ee5\u4e0a\u662f PyTorch \u6a21\u578b\u91cf\u5316\u548c\u538b\u7f29\u7684\u57fa\u672c\u65b9\u6cd5\u548c\u4e00\u4e2a\u7b80\u5355\u7684\u4f8b\u5b50\u3002\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u6a21\u578b\u91cf\u5316\u548c\u538b\u7f29\u5e76\u4e0d\u4e00\u5b9a\u80fd\u591f\u51cf\u5c0f\u6240\u6709\u6a21\u578b\u7684\u5927\u5c0f\u548c\u8ba1\u7b97\u91cf\uff0c\u56e0\u6b64\u9700\u8981\u6839\u636e\u5177\u4f53\u60c5\u51b5\u9009\u62e9\u5408\u9002\u7684\u65b9\u6cd5\u3002\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch\u8ee2\u79fb\u5b66\u7fd2\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u8ee2\u79fb\u5b66\u7fd2\u3068\u306f\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u9ad8\u901f\u5316\u3057\u3001\u30e2\u30c7\u30eb\u306e\u7cbe\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u3001\u65e2\u306b\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3055\u308c\u305f\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044\u30bf\u30b9\u30af\u3092\u5fae\u8abf\u6574\u3059\u308b\u3053\u3068\u3092\u6307\u3057\u307e\u3059\u3002\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0\u3067\u306f\u3001\u8ee2\u79fb\u5b66\u7fd2\u304c\u975e\u5e38\u306b\u4e00\u822c\u7684\u306a\u624b\u6cd5\u306b\u306a\u308a\u307e\u3057\u305f\u3002PyTorch \u306f\u8c4a\u5bcc\u306a\u8ee2\u79fb\u5b66\u7fd2\u30c4\u30fc\u30eb\u3068\u30e2\u30c7\u30eb\u3092\u63d0\u4f9b\u3057\u3001\u8ee2\u79fb\u5b66\u7fd2\u3092\u975e\u5e38\u306b\u7c21\u5358\u304b\u3064\u67d4\u8edf\u306b\u3057\u307e\u3059\u3002\u4ee5\u4e0b\u306f\u3001PyTorch \u3067\u8ee2\u79fb\u5b66\u7fd2\u3092\u5b9f\u88c5\u3059\u308b\u57fa\u672c\u7684\u306a\u65b9\u6cd5\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>PyTorch \u306f\u3001ImageNet \u306a\u3069\u306e\u5927\u898f\u6a21\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3067\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3067\u304d\u3001\u591a\u304f\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc \u30d3\u30b8\u30e7\u30f3 \u30bf\u30b9\u30af\u3067\u512a\u308c\u305f\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u9054\u6210\u3067\u304d\u308b\u3001\u591a\u304f\u306e\u4e8b\u524d\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u6e08\u307f\u30e2\u30c7\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u4e8b\u524d\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u6e08\u307f\u306e\u30e2\u30c7\u30eb\u306f\u3001torchvision \u30d1\u30c3\u30b1\u30fc\u30b8\u306e API \u3092\u4f7f\u7528\u3057\u3066\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002\u6b21\u306b\u4f8b\u3092\u793a\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">python\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torchvision.models as models\n\nmodel = models.resnet18(pretrained=True)\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001torchvision \u30d1\u30c3\u30b1\u30fc\u30b8\u306e resnet18 \u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3001\u4e8b\u524d\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u6e08\u307f\u306e\u91cd\u307f\u3092 ImageNet \u306b\u30ed\u30fc\u30c9\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>\u30e2\u30c7\u30eb\u69cb\u9020\u3092\u5909\u66f4\u3059\u308b \u8ee2\u79fb\u5b66\u7fd2\u3067\u306f\u3001\u901a\u5e38\u3001\u4e8b\u524d\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u6e08\u307f\u306e\u30e2\u30c7\u30eb\u306e\u69cb\u9020\u3092\u5909\u66f4\u3057\u3066\u3001\u65b0\u3057\u3044\u30bf\u30b9\u30af\u306b\u9069\u5fdc\u3055\u305b\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30e2\u30c7\u30eb\u69cb\u9020\u306f\u3001PyTorch \u306e nn.Module \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u5909\u66f4\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f resnet18 \u30e2\u30c7\u30eb\u306e\u6700\u5f8c\u306e\u5c64\u3092\u5168\u7d50\u5408\u5c64\u306b\u5909\u66f4\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">javascript\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>import torch.nn as nn\n\nmodel.fc = nn.Linear(512, num_classes)\n<\/code><\/pre>\n\n\n\n<p>\u3053\u3053\u3067\u3001num_classes \u306f\u65b0\u3057\u3044\u30bf\u30b9\u30af\u5185\u306e\u30af\u30e9\u30b9\u306e\u6570\u3067\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>\u30e2\u30c7\u30eb \u30d1\u30e9\u30e1\u30fc\u30bf\u306e\u51cd\u7d50 \u8ee2\u79fb\u5b66\u7fd2\u3067\u306f\u3001\u901a\u5e38\u3001\u5fae\u8abf\u6574\u30d7\u30ed\u30bb\u30b9\u4e2d\u306b\u3053\u308c\u3089\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u5909\u66f4\u3055\u308c\u306a\u3044\u3088\u3046\u306b\u3001\u30e2\u30c7\u30eb\u306e\u7279\u5b9a\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u51cd\u7d50\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u30e2\u30c7\u30eb\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306f\u3001requires_grad \u5c5e\u6027\u3092\u4f7f\u7528\u3057\u3066\u56fa\u5b9a\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001resnet18 \u30e2\u30c7\u30eb\u306e\u6700\u521d\u306e\u3044\u304f\u3064\u304b\u306e\u30ec\u30a4\u30e4\u30fc\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u56fa\u5b9a\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">graphql\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc<code>for param in model.parameters():\n    param.requires_grad = False\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u8ee2\u79fb\u5b66\u7fd2\u3067\u306f\u3001\u901a\u5e38\u3001\u30e2\u30c7\u30eb\u5168\u4f53\u3092\u518d\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3059\u308b\u306e\u3067\u306f\u306a\u304f\u3001\u30e2\u30c7\u30eb\u306e\u6700\u5f8c\u306e\u30ec\u30a4\u30e4\u30fc\u307e\u305f\u306f\u8907\u6570\u306e\u30ec\u30a4\u30e4\u30fc\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u5fae\u8abf\u6574\u3059\u308b\u3060\u3051\u3067\u6e08\u307f\u307e\u3059\u3002\u30e2\u30c7\u30eb\u306f\u3001PyTorch \u306e nn.Module \u30af\u30e9\u30b9\u3068\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002\u305f\u3068\u3048\u3070\u3001\u6b21\u306e\u30b3\u30fc\u30c9\u306f\u3001SGD \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u3092\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">scss\u30b3\u30fc\u30c9\u3092\u30b3\u30d4\u30fc\u3059\u308b<code>import torch.optim as optim\n\ncriterion = nn.CrossEntropyLoss()\noptimizer = optim.SGD(model.fc.parameters(), lr=0.001, momentum=0.9)\n\nfor epoch in range(num_epochs):\n    running_loss = 0.0\n    for i, data in enumerate(train_data, 0):\n        inputs, labels = data\n        optimizer.zero_grad()\n        outputs = model(inputs)\n        loss = criterion(outputs, labels)\n        loss.backward()\n        optimizer.step()\n\n        running_loss += loss.item()\n        if i % 100 == 99:\n            print('[%d, %5d] loss: %.3f' %\n                  (epoch+1, i+1, running_loss\/100))\n            running_loss = 0.0\n<\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u3067\u306f\u3001\u4ea4\u5dee\u70b9\u3092\u4f7f\u7528\u3057\u307e\u3059<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u7d9a\u3051\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30af\u30ed\u30b9\u30a8\u30f3\u30c8\u30ed\u30d4\u30fc\u640d\u5931\u95a2\u6570\u3068 SGD \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u306f\u30e2\u30c7\u30eb\u3092\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3057\u3001\u6700\u5f8c\u306e\u30ec\u30a4\u30e4\u30fc\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc (\u3064\u307e\u308a\u3001\u5b8c\u5168\u306b\u63a5\u7d9a\u3055\u308c\u305f\u30ec\u30a4\u30e4\u30fc\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc) \u306e\u307f\u3092\u6700\u9069\u5316\u3057\u30010.9 \u306e\u904b\u52d5\u91cf\u3067 SGD \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u3001\u4ed6\u306e\u640d\u5931\u95a2\u6570\u3068\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u3092\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4e0a\u8a18\u306f\u57fa\u672c\u7684\u306a\u65b9\u6cd5\u3067\u3042\u308a\u3001PyTorch \u3067\u8ee2\u79fb\u5b66\u7fd2\u3092\u5b9f\u88c5\u3059\u308b\u7c21\u5358\u306a\u4f8b\u3067\u3059\u3002\u8ee2\u79fb\u5b66\u7fd2\u306e\u52b9\u679c\u306f\u3001\u4e8b\u524d\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u6e08\u307f\u30e2\u30c7\u30eb\u306e\u54c1\u8cea\u3001\u65b0\u3057\u3044\u30bf\u30b9\u30af\u306e\u985e\u4f3c\u6027\u3001\u5fae\u8abf\u6574\u3055\u308c\u305f\u30ec\u30a4\u30e4\u30fc\u306e\u6570\u306a\u3069\u306e\u8981\u56e0\u306b\u5927\u304d\u304f\u4f9d\u5b58\u3059\u308b\u3053\u3068\u306b\u6ce8\u610f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u3057\u305f\u304c\u3063\u3066\u3001\u8ee2\u79fb\u5b66\u7fd2\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001\u7279\u5b9a\u306e\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u4e8b\u524d\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb\u3068\u5fae\u8abf\u6574\u65b9\u6cd5\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u6982\u8981\u3068\u30ec\u30d3\u30e5\u30fc\u3092\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u306f\u3001\u4f7f\u3044\u3084\u3059\u304f\u3001\u52b9\u7387\u7684\u3067\u3001\u67d4\u8edf\u306a Python \u30d9\u30fc\u30b9\u306e\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u591a\u304f\u306e\u7814\u7a76\u8005\u3084\u30a8\u30f3\u30b8\u30cb\u30a2\u304c\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30c6\u30af\u30ce\u30ed\u30b8\u3092\u4f7f\u7528\u3059\u308b\u969b\u306b\u597d\u3093\u3067\u4f7f\u7528\u3059\u308b\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e 1 \u3064\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3053\u306e\u8a18\u4e8b\u3067\u306f\u3001\u4e3b\u306b PyTorch \u306e\u57fa\u672c\u7684\u306a\u6982\u5ff5\u3068\u4e00\u822c\u7684\u306a\u30c6\u30af\u30ce\u30ed\u30b8\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002\u6b21\u306e\u5185\u5bb9\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>PyTorch \u30c6\u30f3\u30bd\u30eb\u64cd\u4f5c\u3068\u57fa\u672c\u7684\u306a\u6570\u5b66\u7684\u64cd\u4f5c PyTorch \u306e\u30c6\u30f3\u30bd\u30eb\u64cd\u4f5c\u3068\u57fa\u672c\u7684\u306a\u6570\u5b66\u7684\u64cd\u4f5c\u306b\u306f\u3001\u30c6\u30f3\u30bd\u30eb\u306e\u4f5c\u6210\u3001\u5f62\u72b6\u3068\u6b21\u5143\u306e\u64cd\u4f5c\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u30b9\u30e9\u30a4\u30b9\u3001\u30c6\u30f3\u30bd\u30eb\u64cd\u4f5c\u3001\u7dda\u5f62\u4ee3\u6570\u64cd\u4f5c\u3001\u304a\u3088\u3073\u30d6\u30ed\u30fc\u30c9\u30ad\u30e3\u30b9\u30c8 \u30e1\u30ab\u30cb\u30ba\u30e0\u304c\u542b\u307e\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>PyTorch \u306e\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316 PyTorch \u306f\u3001\u52d5\u7684\u30b0\u30e9\u30d5\u3068\u9759\u7684\u30b0\u30e9\u30d5\u306e 2 \u3064\u306e\u30e2\u30fc\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3001\u30d0\u30c3\u30af\u30d7\u30ed\u30d1\u30b2\u30fc\u30b7\u30e7\u30f3\u3084\u52fe\u914d\u964d\u4e0b\u306a\u3069\u306e\u6700\u9069\u5316\u624b\u6cd5\u3092\u81ea\u52d5\u7684\u306b\u5c0e\u51fa\u304a\u3088\u3073\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u540c\u6642\u306b\u3001PyTorch \u306f SGD\u3001Adam \u306a\u3069\u3092\u542b\u3080\u8c4a\u5bcc\u306a\u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u30fc\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>PyTorch \u306f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u69cb\u7bc9\u3057\u307e\u3059 PyTorch \u306f\u3001\u5b8c\u5168\u306b\u63a5\u7d9a\u3055\u308c\u305f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u518d\u5e30\u578b\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001LSTM \u306a\u3069\u3092\u542b\u3080\u3055\u307e\u3056\u307e\u306a\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af \u30e2\u30c7\u30eb\u3092\u7c21\u5358\u306b\u69cb\u7bc9\u3067\u304d\u308b nn.Module \u30af\u30e9\u30b9\u3068\u8c4a\u5bcc\u306a\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>PyTorch \u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f8b PyTorch \u306f\u3001\u753b\u50cf\u5206\u985e\u3001\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u691c\u51fa\u3001\u30bb\u30de\u30f3\u30c6\u30a3\u30c3\u30af \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3001\u6a5f\u68b0\u7ffb\u8a33\u3001\u97f3\u58f0\u8a8d\u8b58\u306a\u3069\u3001\u591a\u304f\u306e\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4f8b\u306b\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>PyTorch \u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 PyTorch \u306f\u5206\u6563\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u8907\u6570\u306e GPU \u307e\u305f\u306f\u8907\u6570\u306e\u30b5\u30fc\u30d0\u30fc\u3092\u4f7f\u7528\u3057\u3066\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30d7\u30ed\u30bb\u30b9\u3092\u9ad8\u901f\u5316\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>PyTorch \u30e2\u30c7\u30eb\u306e\u91cf\u5b50\u5316\u3068\u5727\u7e2e PyTorch \u306f\u3001\u30e2\u30c7\u30eb\u306e\u91cf\u5b50\u5316\u3068\u5727\u7e2e\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u3053\u308c\u306b\u3088\u308a\u3001\u30e2\u30c7\u30eb\u306e\u30b5\u30a4\u30ba\u3068\u8a08\u7b97\u304c\u524a\u6e1b\u3055\u308c\u3001\u30e2\u30c7\u30eb\u306e\u52b9\u7387\u304c\u5411\u4e0a\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>PyTorch \u79fb\u884c\u5b66\u7fd2 PyTorch \u306f\u79fb\u884c\u5b66\u7fd2\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u304a\u308a\u3001\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u6e08\u307f\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u3066\u65b0\u3057\u3044\u30bf\u30b9\u30af\u3092\u5fae\u8abf\u6574\u3057\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u9ad8\u901f\u5316\u3057\u3001\u30e2\u30c7\u30eb\u306e\u7cbe\u5ea6\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u4e00\u822c\u306b\u3001PyTorch \u306f\u6a5f\u80fd\u304c\u8c4a\u5bcc\u3067\u4f7f\u3044\u3084\u3059\u304f\u67d4\u8edf\u306a\u6df1\u5c64\u5b66\u7fd2\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u591a\u304f\u306e\u5206\u91ce\u3067\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u6df1\u5c64\u5b66\u7fd2\u6280\u8853\u306f\u5e38\u306b\u9032\u5316\u3057\u3066\u3044\u308b\u5206\u91ce\u3067\u3042\u308a\u3001PyTorch \u306f\u5e38\u306b\u66f4\u65b0\u304a\u3088\u3073\u6539\u5584\u3055\u308c\u3066\u3044\u308b\u305f\u3081\u3001\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u306e PyTorch \u3092\u4f7f\u7528\u3057\u3001\u7279\u5b9a\u306e\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u9069\u5207\u306a\u65b9\u6cd5\u3068\u6280\u8853\u3092\u9078\u629e\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>Generative Adversarial Networks (GAN) \u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>Generative Adversarial Networks (\u7565\u3057\u3066 GAN) \u306f\u30012014 \u5e74\u306b Goodfellow \u3089\u306b\u3088\u3063\u3066\u63d0\u6848\u3055\u308c\u305f\u6df1\u5c64\u5b66\u7fd2\u30e2\u30c7\u30eb\u3067\u3059\u3002GAN \u306e\u4e3b\u306a\u76ee\u7684\u306f\u3001\u753b\u50cf\u3001\u30aa\u30fc\u30c7\u30a3\u30aa\u3001\u30d3\u30c7\u30aa\u306a\u3069\u306e\u5fe0\u5b9f\u5ea6\u306e\u9ad8\u3044\u30b5\u30f3\u30d7\u30eb\u3092\u751f\u6210\u3059\u308b\u3053\u3068\u3067\u3059\u3002<\/p>\n\n\n\n<p>GAN \u306f 2 \u3064\u306e\u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3067\u69cb\u6210\u3055\u308c\u30011 \u3064\u306f\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf \u30cd\u30c3\u30c8\u30ef\u30fc\u30af (Generator) \u3067\u3001\u3082\u3046 1 \u3064\u306f\u30c7\u30a3\u30b9\u30af\u30ea\u30df\u30cd\u30fc\u30bf \u30cd\u30c3\u30c8\u30ef\u30fc\u30af (Discriminator) \u3067\u3059\u3002\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306f\u30e9\u30f3\u30c0\u30e0 \u30ce\u30a4\u30ba\u304b\u3089\u30b5\u30f3\u30d7\u30eb\u3092\u751f\u6210\u3057\u3001\u30c7\u30a3\u30b9\u30af\u30ea\u30df\u30cd\u30fc\u30bf\u30fc \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306f\u305d\u306e\u4fe1\u983c\u6027\u306b\u5f93\u3063\u3066\u30b5\u30f3\u30d7\u30eb\u3092\u5206\u985e\u3057\u307e\u3059\u3002\u3053\u306e 2 \u3064\u306f\u6575\u5bfe\u7684\u30b2\u30fc\u30e0\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u5f62\u6210\u3057\u307e\u3059. \u751f\u6210\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u76ee\u6a19\u306f\u3001\u751f\u6210\u3055\u308c\u305f\u30b5\u30f3\u30d7\u30eb\u3068\u5b9f\u969b\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u533a\u5225\u3067\u304d\u306a\u3044\u3088\u3046\u306b\u5f01\u5225\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u3060\u307e\u3059\u3053\u3068\u3067\u3059. \u4e00\u65b9\u3001\u5f01\u5225\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u76ee\u6a19\u306f\u3001\u751f\u6210\u3055\u308c\u305f\u30b5\u30f3\u30d7\u30eb\u3068\u5b9f\u969b\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u3067\u304d\u308b\u3060\u3051\u6b63\u78ba\u306b\u533a\u5225\u3059\u308b\u3053\u3068\u3067\u3059.\u3067\u304d\u308b\u3060\u3051\u3002<\/p>\n\n\n\n<p>GAN \u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30d7\u30ed\u30bb\u30b9\u306f\u3001\u6b21\u306e\u624b\u9806\u306b\u8981\u7d04\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3068\u30c7\u30a3\u30b9\u30af\u30ea\u30df\u30cd\u30fc\u30bf\u30fc \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u3092\u521d\u671f\u5316\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30b5\u30f3\u30d7\u30eb\u306e\u30d0\u30c3\u30c1\u306f\u3001\u30ce\u30a4\u30ba\u5206\u5e03\u304b\u3089\u30e9\u30f3\u30c0\u30e0\u306b\u751f\u6210\u3055\u308c\u3001\u751f\u6210\u3055\u308c\u305f\u30b5\u30f3\u30d7\u30eb\u3092\u51fa\u529b\u3059\u308b\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306b\u4f9b\u7d66\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u751f\u6210\u3055\u308c\u305f\u30b5\u30f3\u30d7\u30eb\u3068\u5b9f\u969b\u306e\u30b5\u30f3\u30d7\u30eb\u304c\u6df7\u5408\u3055\u308c\u3066\u5f01\u5225\u5668\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306b\u4f9b\u7d66\u3055\u308c\u3001\u5404\u30b5\u30f3\u30d7\u30eb\u304c\u5b9f\u969b\u306e\u30b5\u30f3\u30d7\u30eb\u3067\u3042\u308b\u78ba\u7387\u304c\u51fa\u529b\u3055\u308c\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u5f01\u5225\u5668\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u51fa\u529b\u306b\u5f93\u3063\u3066\u3001\u5f01\u5225\u5668\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u640d\u5931\u304c\u8a08\u7b97\u3055\u308c\u3001\u5f01\u5225\u5668\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u66f4\u65b0\u3055\u308c\u3066\u3001\u751f\u6210\u3055\u308c\u305f\u30b5\u30f3\u30d7\u30eb\u3068\u5b9f\u969b\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u3088\u308a\u9069\u5207\u306b\u533a\u5225\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30a3\u30b9\u30af\u30ea\u30df\u30cd\u30fc\u30bf\u30fc \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u56fa\u5b9a\u3055\u308c\u3001\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u66f4\u65b0\u3055\u308c\u308b\u305f\u3081\u3001\u30b8\u30a7\u30cd\u30ec\u30fc\u30bf\u30fc \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306f\u3088\u308a\u73fe\u5b9f\u7684\u306a\u30b5\u30f3\u30d7\u30eb\u3092\u751f\u6210\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u751f\u6210\u3055\u308c\u305f\u30b5\u30f3\u30d7\u30eb\u304c\u5341\u5206\u306b\u73fe\u5b9f\u7684\u306a\u3082\u306e\u306b\u306a\u308b\u307e\u3067\u3001\u624b\u9806 2 \uff5e 5 \u3092\u7e70\u308a\u8fd4\u3057\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>GAN \u306e\u5229\u70b9\u306f\u3001\u9ad8\u54c1\u8cea\u306e\u30b5\u30f3\u30d7\u30eb\u3092\u751f\u6210\u3067\u304d\u308b\u3053\u3068\u3068\u3001\u751f\u6210\u3055\u308c\u308b\u30b5\u30f3\u30d7\u30eb\u306e\u591a\u69d8\u6027\u304c\u975e\u5e38\u306b\u9ad8\u3044\u3053\u3068\u3067\u3059\u3002\u305f\u3060\u3057\u3001GAN \u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0 \u30d7\u30ed\u30bb\u30b9\u306f\u975e\u5e38\u306b\u4e0d\u5b89\u5b9a\u3067\u3042\u308a\u3001\u30e2\u30fc\u30c9\u5d29\u58ca\u3084\u52fe\u914d\u6d88\u5931\u306a\u3069\u306e\u554f\u984c\u304c\u767a\u751f\u3057\u3084\u3059\u304f\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u3055\u3089\u306b\u3001GAN \u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u306b\u306f\u3001\u3088\u308a\u9577\u3044\u6642\u9593\u3068\u3088\u308a\u9ad8\u3044\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30ea\u30bd\u30fc\u30b9\u3082\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<p>\u73fe\u5728\u3001GAN \u306f\u3001\u753b\u50cf\u751f\u6210\u3001\u753b\u50cf\u5fa9\u5143\u3001\u8d85\u89e3\u50cf\u306a\u3069\u3001\u591a\u304f\u306e\u5206\u91ce\u3067\u5e83\u304f\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>PyTorch \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30ea\u30bd\u30fc\u30b9\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u8aac\u660e\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>PyTorch \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u975e\u5e38\u306b\u6d3b\u767a\u3067\u3001\u30e6\u30fc\u30b6\u30fc\u304c PyTorch \u3092\u3088\u308a\u3088\u304f\u5b66\u3073\u3001\u4f7f\u7528\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u591a\u304f\u306e\u512a\u308c\u305f\u30ea\u30bd\u30fc\u30b9\u3068\u30c4\u30fc\u30eb\u304c\u3042\u308a\u307e\u3059\u3002PyTorch \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u30ea\u30bd\u30fc\u30b9\u306e\u7d39\u4ecb\u3092\u6b21\u306b\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>PyTorch \u306e\u516c\u5f0f Web \u30b5\u30a4\u30c8 PyTorch \u306e\u516c\u5f0f Web \u30b5\u30a4\u30c8\u3067\u306f\u3001PyTorch \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3068\u4f7f\u7528\u3001PyTorch \u3067\u306e\u30c6\u30f3\u30bd\u30eb\u6f14\u7b97\u3068\u57fa\u672c\u7684\u306a\u6570\u5b66\u7684\u6f14\u7b97\u3001\u81ea\u52d5\u5c0e\u51fa\u3068\u6700\u9069\u5316\u306a\u3069\u3092\u542b\u3080\u3001\u8c4a\u5bcc\u306a\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3068\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002<\/li>\n\n\n\n<li>PyTorch \u30d5\u30a9\u30fc\u30e9\u30e0 PyTorch \u30d5\u30a9\u30fc\u30e9\u30e0\u306f\u3001PyTorch \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u4e3b\u8981\u306a\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3 \u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3042\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u306f\u30d5\u30a9\u30fc\u30e9\u30e0\u3067\u8cea\u554f\u3092\u4ea4\u63db\u3057\u305f\u308a\u3001\u7d4c\u9a13\u3092\u5171\u6709\u3057\u305f\u308a\u3001\u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u3092\u6295\u7a3f\u3057\u305f\u308a\u3067\u304d\u307e\u3059\u3002<\/li>\n\n\n\n<li>PyTorch Hub PyTorch Hub \u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u3059\u3070\u3084\u304f\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u4f7f\u7528\u3067\u304d\u308b\u4e8b\u524d\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u6e08\u307f\u306e\u30e2\u30c7\u30eb\u3068\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u591a\u6570\u542b\u3080\u30e2\u30c7\u30eb \u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002<\/li>\n\n\n\n<li>PyTorch Lightning PyTorch Lightning \u306f\u3001PyTorch \u30d9\u30fc\u30b9\u306e\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308a\u3001\u3088\u308a\u9ad8\u3044\u30ec\u30d9\u30eb\u306e\u62bd\u8c61\u5316\u3068\u3088\u308a\u7c21\u6f54\u306a\u30b3\u30fc\u30c9\u3092\u63d0\u4f9b\u3057\u3066\u3001\u30e2\u30c7\u30eb\u306e\u958b\u767a\u3068\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u9ad8\u901f\u5316\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>PyTorch \u30b8\u30aa\u30e1\u30c8\u30ea\u30c3\u30af PyTorch \u30b8\u30aa\u30e1\u30c8\u30ea\u30c3\u30af\u306f\u3001\u591a\u304f\u306e\u30b0\u30e9\u30d5 \u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u5b9f\u88c5\u3068\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u63d0\u4f9b\u3059\u308b\u30b0\u30e9\u30d5 \u30cb\u30e5\u30fc\u30e9\u30eb \u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u7528\u306e Python \u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3059\u3002<\/li>\n\n\n\n<li>PyTorch Ignite PyTorch Ignite \u306f\u3001\u6df1\u5c64\u5b66\u7fd2\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u8a55\u4fa1\u306e\u305f\u3081\u306e\u9ad8\u30ec\u30d9\u30eb \u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3042\u308a\u3001\u30e2\u30c7\u30eb\u306e\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u8a55\u4fa1\u3092\u5bb9\u6613\u306b\u3057\u307e\u3059\u3002<\/li>\n\n\n\n<li>PyTorch \u30aa\u30fc\u30d7\u30f3 \u30bd\u30fc\u30b9 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8 PyTorch \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u306f\u3001\u591a\u304f\u306e\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb\u3084\u30c4\u30fc\u30eb\u3092\u542b\u3080\u591a\u304f\u306e\u30aa\u30fc\u30d7\u30f3 \u30bd\u30fc\u30b9 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u304c\u3042\u308a\u3001\u30e6\u30fc\u30b6\u30fc\u304c PyTorch \u3092\u3088\u308a\u9069\u5207\u306b\u4f7f\u7528\u3059\u308b\u306e\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u5168\u4f53\u3068\u3057\u3066\u3001PyTorch \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306f\u3001\u30e6\u30fc\u30b6\u30fc\u304c PyTorch \u3092\u3088\u308a\u3088\u304f\u5b66\u3073\u3001\u4f7f\u7528\u3059\u308b\u306e\u306b\u5f79\u7acb\u3064\u8c4a\u5bcc\u306a\u30ea\u30bd\u30fc\u30b9\u3068\u30c4\u30fc\u30eb\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002\u30e6\u30fc\u30b6\u30fc\u306f\u3001\u30d5\u30a9\u30fc\u30e9\u30e0\u3067\u8cea\u554f\u3092\u4ea4\u63db\u3057\u305f\u308a\u3001PyTorch Hub \u3067\u30e2\u30c7\u30eb\u3068\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u4f7f\u7528\u3057\u305f\u308a\u3001PyTorch Lightning \u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u306e\u958b\u767a\u3068\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3092\u7c21\u7d20\u5316\u3057\u305f\u308a\u3001PyTorch Geometric \u3092\u4f7f\u7528\u3057\u3066\u30b0\u30e9\u30d5 \u30c7\u30fc\u30bf\u3092\u51e6\u7406\u3057\u305f\u308a\u3001PyTorch Ignite \u3092\u4f7f\u7528\u3057\u3066\u30e2\u30c7\u30eb\u3092\u3088\u308a\u4fbf\u5229\u306b\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u304a\u3088\u3073\u8a55\u4fa1\u3057\u305f\u308a\u3067\u304d\u307e\u3059\u3002\u540c\u6642\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u306f\u30aa\u30fc\u30d7\u30f3 \u30bd\u30fc\u30b9 \u30d7\u30ed\u30b8\u30a7\u30af\u30c8\u306e\u958b\u767a\u306b\u53c2\u52a0\u3057\u3001\u72ec\u81ea\u306e\u30b3\u30fc\u30c9\u3068\u7d4c\u9a13\u3092\u63d0\u4f9b\u3057\u3001PyTorch \u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306e\u958b\u767a\u306b\u8ca2\u732e\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/edu.ujhb.org\/?p=1768\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/chat.openai.com\/_next\/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FAGNmyxbwVdnTP0E2eBqDrujRQjV-wFP12Thr4vFgysVv5A%3Ds96-c&amp;w=96&amp;q=75\" alt=\"gun tei\"\/><\/figure>\n\n\n\n<p>\u6df1\u5c64\u5b66\u7fd2\u306e\u4eca\u5f8c\u306e\u5c55\u958b\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u6559\u3048\u3066\u304f\u3060\u3055\u3044<\/p>\n\n\n\n<p>\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u306f\u3001\u4eba\u5de5\u77e5\u80fd\u306e\u30b3\u30a2\u6280\u8853\u306e 1 \u3064\u3068\u3057\u3066\u3001\u591a\u304f\u306e\u5206\u91ce\u3067\u76ee\u899a\u307e\u3057\u3044\u9032\u6b69\u3092\u9042\u3052\u3066\u3044\u307e\u3059\u3002\u5c06\u6765\u3001\u6df1\u5c64\u5b66\u7fd2\u306f\u6b21\u306e\u5074\u9762\u3067\u3055\u3089\u306b\u767a\u5c55\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u81ea\u5df1\u6559\u5e2b\u3042\u308a\u5b66\u7fd2 \u81ea\u5df1\u6559\u5e2b\u3042\u308a\u5b66\u7fd2\u306f\u3001\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u624b\u52d5\u30e9\u30d9\u30eb\u4ed8\u3051\u3092\u5fc5\u8981\u3068\u305b\u305a\u3001\u30e9\u30d9\u30eb\u4ed8\u3051\u3055\u308c\u305f\u30c7\u30fc\u30bf\u304c\u306a\u304f\u3066\u3082\u3001\u307b\u3068\u3093\u3069\u306a\u304f\u3066\u3082\u5b66\u7fd2\u3067\u304d\u308b\u5b66\u7fd2\u65b9\u6cd5\u3067\u3059\u3002\u81ea\u5df1\u6559\u5e2b\u3042\u308a\u5b66\u7fd2\u306f\u3001\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc \u30d3\u30b8\u30e7\u30f3\u3084\u97f3\u58f0\u8a8d\u8b58\u306a\u3069\u306e\u5206\u91ce\u3067\u3042\u308b\u7a0b\u5ea6\u306e\u9032\u6b69\u3092\u9042\u3052\u3066\u304a\u308a\u3001\u5c06\u6765\u7684\u306b\u306f\u3088\u308a\u591a\u304f\u306e\u5206\u91ce\u306b\u9069\u7528\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u9023\u5408\u5b66\u7fd2 \u9023\u5408\u5b66\u7fd2\u306f\u3001\u8907\u6570\u306e\u30c7\u30d0\u30a4\u30b9\u3067\u30c8\u30ec\u30fc\u30cb\u30f3\u30b0\u3068\u63a8\u8ad6\u3092\u5b9f\u884c\u3067\u304d\u308b\u5b66\u7fd2\u65b9\u6cd5\u3067\u3042\u308a\u3001\u30c7\u30fc\u30bf\u306e\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u3092\u4fdd\u8b77\u3057\u3001\u30e2\u30c7\u30eb\u306e\u30b9\u30b1\u30fc\u30e9\u30d3\u30ea\u30c6\u30a3\u3068\u5805\u7262\u6027\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u9023\u5408\u5b66\u7fd2\u306f\u3001\u533b\u7642\u3084\u91d1\u878d\u5206\u91ce\u306a\u3069\u306e\u4e00\u90e8\u306e\u5206\u91ce\u3067\u9069\u7528\u3055\u308c\u3066\u304a\u308a\u3001\u5c06\u6765\u7684\u306b\u306f\u3088\u308a\u591a\u304f\u306e\u5206\u91ce\u3067\u4fc3\u9032\u304a\u3088\u3073\u9069\u7528\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u7d44\u307f\u5408\u308f\u305b\u30e2\u30c7\u30eb \u7d44\u307f\u5408\u308f\u305b\u30e2\u30c7\u30eb\u306f\u3001\u8907\u6570\u306e\u30e2\u30c7\u30eb\u3092\u7d44\u307f\u5408\u308f\u305b\u3066\u3088\u308a\u8907\u96d1\u306a\u30e2\u30c7\u30eb\u3092\u5f62\u6210\u3059\u308b\u3053\u3068\u3067\u3042\u308a\u3001\u3088\u308a\u8907\u96d1\u306a\u30bf\u30b9\u30af\u3092\u89e3\u6c7a\u3059\u308b\u969b\u306e\u30e2\u30c7\u30eb\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3092\u5411\u4e0a\u3055\u305b\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002\u7d50\u5408\u30e2\u30c7\u30eb\u306f\u3001\u81ea\u7136\u8a00\u8a9e\u51e6\u7406\u3084\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc \u30d3\u30b8\u30e7\u30f3\u306a\u3069\u306e\u4e00\u90e8\u306e\u5206\u91ce\u3067\u3059\u3067\u306b\u9069\u7528\u3055\u308c\u3066\u304a\u308a\u3001\u5c06\u6765\u7684\u306b\u306f\u3055\u3089\u306b\u591a\u304f\u306e\u5206\u91ce\u3067\u9069\u7528\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u89e3\u91c8\u53ef\u80fd\u6027 \u89e3\u91c8\u53ef\u80fd\u6027\u3068\u306f\u3001\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb\u304c\u610f\u601d\u6c7a\u5b9a\u306e\u65b9\u6cd5\u3068\u7406\u7531\u3092\u8aac\u660e\u3067\u304d\u308b\u5358\u7d14\u306a\u65b9\u6cd5\u3092\u6307\u3057\u307e\u3059\u3002\u89e3\u91c8\u53ef\u80fd\u6027\u306f\u3001\u6df1\u5c64\u5b66\u7fd2\u306e\u5206\u91ce\u3067\u30db\u30c3\u30c8\u306a\u554f\u984c\u306e 1 \u3064\u306b\u306a\u308a\u3001\u5c06\u6765\u7684\u306b\u306f\u3088\u308a\u591a\u304f\u306e\u5206\u91ce\u3067\u9069\u7528\u3055\u308c\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n\n\n\n<li>\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0 \u30e2\u30c7\u30eb\u306e\u30e2\u30c7\u30eb\u5727\u7e2e\u3068\u6700\u9069\u5316\u306b\u306f\u901a\u5e38\u3001\u591a\u304f\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30c6\u30a3\u30f3\u30b0 \u30ea\u30bd\u30fc\u30b9\u3068\u30b9\u30c8\u30ec\u30fc\u30b8 \u30b9\u30da\u30fc\u30b9\u304c\u5fc5\u8981\u3067\u3059\u3002\u3053\u308c\u306f\u3001\u30e2\u30d0\u30a4\u30eb \u30c7\u30d0\u30a4\u30b9\u3084\u30a8\u30c3\u30b8 \u30c7\u30d0\u30a4\u30b9\u306b\u3068\u3063\u3066\u306f\u5927\u304d\u306a\u8ab2\u984c\u3067\u3059\u3002\u5c06\u6765\u7684\u306b\u306f\u3001\u4f4e\u96fb\u529b\u30c7\u30d0\u30a4\u30b9\u3067\u52b9\u7387\u7684\u306a\u30e2\u30c7\u30eb\u63a8\u8ad6\u3092\u5b9f\u73fe\u3059\u308b\u305f\u3081\u306b\u3001\u30e2\u30c7\u30eb\u306e\u5727\u7e2e\u3068\u6700\u9069\u5316\u304c\u30c7\u30a3\u30fc\u30d7 \u30e9\u30fc\u30cb\u30f3\u30b0\u306e\u30db\u30c3\u30c8\u306a\u554f\u984c\u306e 1 \u3064\u306b\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u7d50\u8ad6\u3068\u3057\u3066\u3001\u6df1\u5c64\u5b66\u7fd2\u306f\u307e\u3060\u591a\u304f\u306e\u8ab2\u984c\u3092\u89e3\u6c7a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u4e00\u65b9\u3067\u3001\u5c06\u6765\u306e\u767a\u5c55\u306b\u5927\u304d\u306a\u53ef\u80fd\u6027\u3092\u79d8\u3081\u3066\u3044\u307e\u3059\u3002\u6df1\u5c64\u5b66\u7fd2\u306e\u4eca\u5f8c\u306e\u767a\u5c55\u306b\u306f\u3001\u3055\u307e\u3056\u307e\u306a\u5206\u91ce\u3067\u3088\u308a\u826f\u3044\u6210\u679c\u3092\u9054\u6210\u3059\u308b\u305f\u3081\u306b\u3001\u3088\u308a\u591a\u304f\u306e\u5b66\u969b\u7684\u306a\u5354\u529b\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5bb9\u306e\u6982\u8981\u3092\u6559\u3048\u3066\u304f\u3060\u3055\u3044\u3002 \u3082\u3061\u308d\u3093\uff01P &hellip; <\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_mi_skip_tracking":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-2109","post","type-post","status-publish","format-standard","hentry","category-material"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/2109","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2109"}],"version-history":[{"count":1,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/2109\/revisions"}],"predecessor-version":[{"id":2111,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=\/wp\/v2\/posts\/2109\/revisions\/2111"}],"wp:attachment":[{"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/edu.ujhb.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}