{"id":722,"date":"2024-05-05T22:18:12","date_gmt":"2024-05-05T13:18:12","guid":{"rendered":"https:\/\/chocottopro.com\/?p=722"},"modified":"2024-05-05T22:18:13","modified_gmt":"2024-05-05T13:18:13","slug":"%e3%80%902023%e5%b9%b4%e7%89%88%e3%80%91chainer%e3%81%ae%e5%9f%ba%e6%9c%ac%e3%81%a8%e5%ae%9f%e8%a3%85%e4%be%8b%e3%82%92%e3%82%8f%e3%81%8b%e3%82%8a%e3%82%84%e3%81%99%e3%81%8f%e8%a7%a3%e8%aa%ac%ef%bc%81","status":"publish","type":"post","link":"https:\/\/chocottopro.com\/?p=722","title":{"rendered":"\u30102023\u5e74\u7248\u3011Chainer\u306e\u57fa\u672c\u3068\u5b9f\u88c5\u4f8b\u3092\u308f\u304b\u308a\u3084\u3059\u304f\u89e3\u8aac\uff015\u3064\u306e\u9b45\u529b\u30683\u3064\u306e\u6ce8\u610f\u70b9"},"content":{"rendered":"\n<p>Chainer\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306aAPI\u3068\u52d5\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u7279\u5fb4\u3068\u3059\u308b\u3001\u65e5\u672c\u767a\u306e\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002\u672c\u8a18\u4e8b\u3067\u306f\u3001Chainer\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u304b\u3089\u5b9f\u88c5\u4f8b\u3001\u305d\u3057\u3066\u4eca\u5f8c\u306e\u5c55\u671b\u307e\u3067\u3092\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002Chainer\u3092\u4f7f\u3063\u3066\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u306e\u4e16\u754c\u306b\u98db\u3073\u8fbc\u3093\u3067\u307f\u307e\u305b\u3093\u304b\uff1f<\/p>\n\n\n\n<div class=\"wp-block-sgb-block-simple sgb-box-simple sgb-box-simple--title-normal sgb-box-simple--with-border\"><div style=\"background-color:var(--wp--preset--color--sango-main);color:#FFF\" class=\"sgb-box-simple__title\">\u3053\u306e\u8a18\u4e8b\u3092\u8aad\u3093\u3060\u3089\u308f\u304b\u308b\u3053\u3068<\/div><div class=\"sgb-box-simple__body\" style=\"border-color:var(--wp--preset--color--sango-main);background-color:#FFF\">\n<ul class=\"wp-block-list\">\n<li>Chainer\u306e\u57fa\u672c\u7684\u306a\u7279\u5fb4\u3068\u5229\u70b9 <\/li>\n\n\n\n<li>Chainer\u3092\u4f7f\u3063\u305f\u591a\u5c64\u30d1\u30fc\u30bb\u30d7\u30c8\u30ed\u30f3\u3001\u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u30ea\u30ab\u30ec\u30f3\u30c8\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u5b9f\u88c5\u65b9\u6cd5 <\/li>\n\n\n\n<li>Chainer\u306e\u9b45\u529b\u3068\u6ce8\u610f\u70b9 <\/li>\n\n\n\n<li>Chainer\u306e\u6700\u65b0\u52d5\u5411\u3068PyTorch Chained\u3078\u306e\u79fb\u884c\u306e\u91cd\u8981\u6027 <\/li>\n\n\n\n<li>Chainer\u3092\u4f7f\u3063\u3066\u30b9\u30ad\u30eb\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306e\u30a2\u30c9\u30d0\u30a4\u30b9<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<div class=\"toc\"><br \/>\n<b>Warning<\/b>:  Undefined array key \"is_admin\" in <b>\/home\/c7479301\/public_html\/chocottopro.com\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>116<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_category_top\" in <b>\/home\/c7479301\/public_html\/chocottopro.com\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>121<\/b><br \/>\n<br \/>\n<b>Warning<\/b>:  Undefined array key \"is_top\" in <b>\/home\/c7479301\/public_html\/chocottopro.com\/wp-content\/themes\/sango-theme\/library\/gutenberg\/dist\/classes\/Toc.php<\/b> on line <b>128<\/b><br \/>\n    <div id=\"toc_container\" class=\"sgb-toc--bullets js-smooth-scroll\" data-dialog-title=\"Table of Contents\">\n      <p class=\"toc_title\">\u76ee\u6b21 <\/p>\n      <ul class=\"toc_list\">  <li class=\"first\">    <a href=\"#i-0\">Chainer\u3068\u306f\uff1f\u57fa\u672c\u7684\u306a\u7279\u5fb4\u3068\u4ed5\u7d44\u307f<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-1\">Chainer\u306e\u6982\u8981\u3068Python\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u3057\u3066\u306e\u4f4d\u7f6e\u3065\u3051<\/a>      <\/li>      <li>        <a href=\"#i-2\">Chainer\u306e\u4e3b\u8981\u306a\u7279\u5fb4\u3068\u5229\u70b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-3\">Chainer\u306e\u57fa\u672c\u7684\u306a\u52d5\u4f5c\u539f\u7406\u3068\u4ed5\u7d44\u307f<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-4\">Chainer\u306e\u5b9f\u88c5\u4f8b\u3068\u4f7f\u3044\u65b9<\/a>  <\/li>  <li>    <a href=\"#i-5\">Chainer\u306e\u9b45\u529b\u3068\u6ce8\u610f\u70b9<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-6\">Chainer\u306e5\u3064\u306e\u9b45\u529b<\/a>      <\/li>      <li>        <a href=\"#i-7\">Chainer\u3092\u4f7f\u3046\u4e0a\u3067\u306e3\u3064\u306e\u6ce8\u610f\u70b9<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-8\">PyTorch\u3084TensorFlow\u3068\u306e\u6bd4\u8f03<\/a>      <\/li>    <\/ul>  <\/li>  <li>    <a href=\"#i-9\">Chainer\u306e\u6700\u65b0\u52d5\u5411\u3068\u4eca\u5f8c\u306e\u5c55\u671b<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-10\">Chainer\u306e\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3068\u66f4\u65b0\u60c5\u5831<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-11\">Chainer\u306e\u4eca\u5f8c\u306e\u958b\u767a\u30ed\u30fc\u30c9\u30de\u30c3\u30d7\u3068\u5c55\u671b<\/a>      <\/li>    <\/ul>  <\/li>  <li class=\"last\">    <a href=\"#i-12\">\u307e\u3068\u3081\uff1aChainer\u3067\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u3092\u59cb\u3081\u3088\u3046\uff01<\/a>    <ul class=\"menu_level_1\">      <li class=\"first\">        <a href=\"#i-13\">Chainer\u306e\u57fa\u672c\u3068\u5b9f\u88c5\u4f8b\u306e\u304a\u3055\u3089\u3044<\/a>      <\/li>      <li class=\"last\">        <a href=\"#i-14\">Chainer\u3092\u4f7f\u3063\u3066\u30b9\u30ad\u30eb\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306e\u30a2\u30c9\u30d0\u30a4\u30b9<\/a>      <\/li>    <\/ul>  <\/li><\/ul>\n      \n    <\/div><\/div><h2 class=\"wp-block-heading\" id=\"i-0\">Chainer\u3068\u306f\uff1f\u57fa\u672c\u7684\u306a\u7279\u5fb4\u3068\u4ed5\u7d44\u307f<\/h2>\n\n\n\n<p>Chainer\u306f\u3001\u65e5\u672c\u306ePreferred Networks\u793e\u304c\u958b\u767a\u3057\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u30022015\u5e74\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u3001Python\u306e\u6570\u5024\u8a08\u7b97\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3042\u308bNumPy\u3068\u89aa\u548c\u6027\u306e\u9ad8\u3044API\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\u3001Python\u30e6\u30fc\u30b6\u30fc\u306b\u3068\u3063\u3066\u4f7f\u3044\u3084\u3059\u3044\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>Chainer\u306e\u5927\u304d\u306a\u7279\u5fb4\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306aAPI\u3092\u5099\u3048\u3066\u3044\u308b\u3053\u3068\u3067\u3059\u3002\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u5404\u30ec\u30a4\u30e4\u30fc\u306b\u5bfe\u5fdc\u3059\u308b\u95a2\u6570\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u30e2\u30c7\u30eb\u3092\u7c21\u6f54\u306b\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001Define-by-Run\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u63a1\u7528\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30e2\u30c7\u30eb\u306e\u69cb\u7bc9\u3092\u52d5\u7684\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u3001\u9ad8\u3044\u67d4\u8edf\u6027\u3092\u5b9f\u73fe\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import chainer\nimport chainer.functions as F\nimport chainer.links as L\n\n# \u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u5b9a\u7fa9\nclass MLP(chainer.Chain):\n    def __init__(self, n_units, n_out):\n        super(MLP, self).__init__()\n        with self.init_scope():\n            self.l1 = L.Linear(None, n_units)\n            self.l2 = L.Linear(None, n_units)\n            self.l3 = L.Linear(None, n_out)\n\n    def forward(self, x):\n        h1 = F.relu(self.l1(x))\n        h2 = F.relu(self.l2(h1))\n        return self.l3(h2)<\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u306f\u3001Chainer\u3092\u7528\u3044\u305f\u591a\u5c64\u30d1\u30fc\u30bb\u30d7\u30c8\u30ed\u30f3\uff08MLP\uff09\u306e\u5b9a\u7fa9\u4f8b\u3067\u3059\u3002<code>chainer.Chain<\/code>\u3092\u7d99\u627f\u3057\u305f\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3001<code>init_scope()<\/code>\u306e\u4e2d\u3067\u5404\u30ec\u30a4\u30e4\u30fc\u3092\u9806\u6b21\u5b9a\u7fa9\u3057\u3066\u3044\u304d\u307e\u3059\u3002<code>forward()<\/code>\u30e1\u30bd\u30c3\u30c9\u306b\u306f\u3001\u30d5\u30a9\u30ef\u30fc\u30c9\u30b3\u30f3\u30d4\u30e5\u30c6\u30fc\u30b7\u30e7\u30f3\u306e\u624b\u9806\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002\u3053\u306e\u3088\u3046\u306b\u3001Chainer\u3067\u306f\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u69cb\u9020\u3092\u30b7\u30f3\u30d7\u30eb\u306b\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3055\u3089\u306b\u3001Chainer\u306f\u67d4\u8edf\u6027\u304c\u9ad8\u304f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u72ec\u81ea\u306e\u30ec\u30a4\u30e4\u30fc\u3084\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u3066\u62e1\u5f35\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002CuPy\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u3088\u308bGPU\u30b5\u30dd\u30fc\u30c8\u306b\u3088\u308a\u3001\u9ad8\u901f\u306a\u8a08\u7b97\u3082\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001ChainerUI\u306a\u3069\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30e2\u30c7\u30eb\u306e\u53ef\u8996\u5316\u3084\u30c7\u30d0\u30c3\u30b0\u3082\u5bb9\u6613\u306b\u884c\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<p>Chainer\u306e\u5185\u90e8\u52d5\u4f5c\u3068\u3057\u3066\u306f\u3001\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092Function\u3068Link\u3068\u3044\u30462\u3064\u306e\u8981\u7d20\u3067\u8868\u73fe\u3057\u307e\u3059\u3002Function\u306f\u5404\u30ec\u30a4\u30e4\u30fc\u306e\u6f14\u7b97\u3092\u3001Link\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6301\u3064Function\u306e\u96c6\u5408\u4f53\u3092\u8868\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5168\u4f53\u3092\u8868\u73fe\u3057\u3001\u30d5\u30a9\u30ef\u30fc\u30c9\u30b3\u30f3\u30d4\u30e5\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u30d0\u30c3\u30af\u30d7\u30ed\u30d1\u30b2\u30fc\u30b7\u30e7\u30f3\u3092\u81ea\u52d5\u7684\u306b\u884c\u3046\u4ed5\u7d44\u307f\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>2019\u5e74\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305fChainer 7.0.0\u3092\u6700\u5f8c\u306b\u3001Chainer\u306e\u958b\u767a\u306f\u7d42\u4e86\u3057\u307e\u3057\u305f\u3002\u73fe\u5728\u306f\u3001\u305d\u306e\u5f8c\u7d99\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308bPyTorch Chained\u306e\u958b\u767a\u304c\u9032\u3081\u3089\u308c\u3066\u3044\u307e\u3059\u3002PyTorch Chained\u306f\u3001PyTorch\u306e\u67d4\u8edf\u6027\u3068Chainer\u306e\u4f7f\u3044\u3084\u3059\u3055\u3092\u517c\u306d\u5099\u3048\u305f\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u3057\u3066\u671f\u5f85\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>Chainer\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306aAPI\u3001\u67d4\u8edf\u6027\u306e\u9ad8\u3055\u3001\u30e6\u30fc\u30b6\u30fc\u30d5\u30ec\u30f3\u30c9\u30ea\u30fc\u306a\u30c4\u30fc\u30eb\u306a\u3069\u306e\u7279\u5fb4\u3092\u6301\u3064\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002Chainer\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30e2\u30c7\u30eb\u306e\u69cb\u7bc9\u3084\u5b66\u7fd2\u3092\u52b9\u7387\u7684\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-1\">Chainer\u306e\u6982\u8981\u3068Python\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u3057\u3066\u306e\u4f4d\u7f6e\u3065\u3051<\/h3>\n\n\n\n<p>Chainer\u306f\u3001\u65e5\u672c\u306ePreferred Networks\u793e\u304c\u958b\u767a\u3057\u305f\u30aa\u30fc\u30d7\u30f3\u30bd\u30fc\u30b9\u306e\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u30012015\u5e74\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u307e\u3057\u305f\u3002Python\u306e\u6570\u5024\u8a08\u7b97\u30e9\u30a4\u30d6\u30e9\u30ea\u3067\u3042\u308bNumPy\u3068\u89aa\u548c\u6027\u306e\u9ad8\u3044API\u3092\u63d0\u4f9b\u3057\u3066\u304a\u308a\u3001Python\u30e6\u30fc\u30b6\u30fc\u306b\u3068\u3063\u3066\u4f7f\u3044\u3084\u3059\u3044\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u3057\u3066\u77e5\u3089\u308c\u3066\u3044\u307e\u3059\u3002Chainer\u306f\u3001TensorFlow\u3084PyTorch\u3068\u4e26\u3076\u4e3b\u8981\u306a\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306e1\u3064\u3068\u3057\u3066\u4f4d\u7f6e\u3065\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-2\">Chainer\u306e\u4e3b\u8981\u306a\u7279\u5fb4\u3068\u5229\u70b9<\/h3>\n\n\n\n<p>Chainer\u306e\u4e3b\u8981\u306a\u7279\u5fb4\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306aAPI\u3092\u5099\u3048\u3066\u3044\u308b\u3053\u3068\u3067\u3059\u3002\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u5404\u30ec\u30a4\u30e4\u30fc\u306b\u5bfe\u5fdc\u3059\u308b\u95a2\u6570\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u3001\u30e2\u30c7\u30eb\u3092\u7c21\u6f54\u306b\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001Define-by-Run\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u63a1\u7528\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30e2\u30c7\u30eb\u306e\u69cb\u7bc9\u3092\u52d5\u7684\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u3001\u9ad8\u3044\u67d4\u8edf\u6027\u3092\u5b9f\u73fe\u3057\u3066\u3044\u307e\u3059\u3002\u3055\u3089\u306b\u3001Chainer\u306f\u62e1\u5f35\u6027\u304c\u9ad8\u304f\u3001\u30e6\u30fc\u30b6\u30fc\u304c\u72ec\u81ea\u306e\u30ec\u30a4\u30e4\u30fc\u3084\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u3066\u8ffd\u52a0\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002CuPy\u30e9\u30a4\u30d6\u30e9\u30ea\u306b\u3088\u308bGPU\u30b5\u30dd\u30fc\u30c8\u306b\u3088\u308a\u3001\u9ad8\u901f\u306a\u8a08\u7b97\u3082\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-3\">Chainer\u306e\u57fa\u672c\u7684\u306a\u52d5\u4f5c\u539f\u7406\u3068\u4ed5\u7d44\u307f<\/h3>\n\n\n\n<p>Chainer\u306e\u5185\u90e8\u52d5\u4f5c\u3067\u306f\u3001\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092Function\u3068Link\u3068\u3044\u30462\u3064\u306e\u8981\u7d20\u3067\u8868\u73fe\u3057\u307e\u3059\u3002Function\u306f\u5404\u30ec\u30a4\u30e4\u30fc\u306e\u6f14\u7b97\u3092\u3001Link\u306f\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u6301\u3064Function\u306e\u96c6\u5408\u4f53\u3092\u8868\u3057\u307e\u3059\u3002\u3053\u308c\u3089\u3092\u7d44\u307f\u5408\u308f\u305b\u308b\u3053\u3068\u3067\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5168\u4f53\u3092\u8868\u73fe\u3057\u3001\u30d5\u30a9\u30ef\u30fc\u30c9\u30b3\u30f3\u30d4\u30e5\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u30d0\u30c3\u30af\u30d7\u30ed\u30d1\u30b2\u30fc\u30b7\u30e7\u30f3\u3092\u81ea\u52d5\u7684\u306b\u884c\u3046\u4ed5\u7d44\u307f\u3092\u63d0\u4f9b\u3057\u307e\u3059\u3002Chainer\u306f\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u52d5\u7684\u306b\u69cb\u7bc9\u3059\u308b\u3053\u3068\u3067\u3001\u30e2\u30c7\u30eb\u306e\u67d4\u8edf\u306a\u5b9a\u7fa9\u3092\u53ef\u80fd\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u307e\u305f\u3001ChainerUI\u306a\u3069\u306e\u30c4\u30fc\u30eb\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u30e2\u30c7\u30eb\u306e\u53ef\u8996\u5316\u3084\u30c7\u30d0\u30c3\u30b0\u3082\u5bb9\u6613\u306b\u884c\u3048\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-4\">Chainer\u306e\u5b9f\u88c5\u4f8b\u3068\u4f7f\u3044\u65b9<\/h2>\n\n\n\n<p>Chainer\u3092\u4f7f\u3063\u305f\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u5b9f\u88c5\u65b9\u6cd5\u306b\u3064\u3044\u3066\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002\u307e\u305a\u3001Chainer\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u3001pip\u30b3\u30de\u30f3\u30c9\u3092\u4f7f\u3063\u3066\u7c21\u5358\u306b\u884c\u3046\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pip install chainer<\/pre>\n\n\n\n<p>GPU\u3092\u4f7f\u7528\u3059\u308b\u5834\u5408\u306f\u3001CUDA\u3068cuDNN\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u5225\u9014\u5fc5\u8981\u3068\u306a\u308a\u307e\u3059\u3002Chainer\u306f\u3001Python 3.5.1\u4ee5\u4e0a\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"wp-block-sgb-message\"><div class=\"memo sng-shadow-0\" style=\"border-radius:0px;background-color:#fff9e6;color:#ffb36b\"><div class=\"memo_ttl dfont\"><span class=\"sng-box-msg__icon\" style=\"background:#ffb36b\"><i class=\"fas fa-pencil-alt\"><\/i><\/span><div class=\"sng-box-msg__title\">\u8b66\u544a<\/div><\/div><div class=\"sng-box-msg__contents\">\n<p>\u4ee5\u4e0b\u3001\u30e2\u30c7\u30eb\u306e\u5b9f\u88c5\u4f8b\u304c\u51fa\u3066\u304d\u307e\u3059\u304c\u3001\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u7528\u610f\u306f\u5404\u81ea\u884c\u3063\u3066\u304f\u3060\u3055\u3044\uff01<\/p>\n<\/div><\/div><\/div>\n\n\n\n<p>\u6b21\u306b\u3001\u57fa\u672c\u7684\u306a\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u5b9f\u88c5\u4f8b\u3068\u3057\u3066\u3001\u591a\u5c64\u30d1\u30fc\u30bb\u30d7\u30c8\u30ed\u30f3\uff08MLP\uff09\u3092\u5b9f\u88c5\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import chainer\nimport chainer.functions as F\nimport chainer.links as L\nfrom chainer import training\nfrom chainer.training import extensions\n\n# MLP\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\nclass MLP(chainer.Chain):\n    def __init__(self, n_units, n_out):\n        super(MLP, self).__init__()\n        with self.init_scope():\n            self.l1 = L.Linear(None, n_units)\n            self.l2 = L.Linear(None, n_units)\n            self.l3 = L.Linear(None, n_out)\n\n    def __call__(self, x):\n        h1 = F.relu(self.l1(x))\n        h2 = F.relu(self.l2(h1))\n        return self.l3(h2)\n\n# \u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u6e96\u5099\ntrain, test = chainer.datasets.get_mnist()\n\n# \u30a4\u30c6\u30ec\u30fc\u30bf\u306e\u5b9a\u7fa9\ntrain_iter = chainer.iterators.SerialIterator(train, batch_size=100)\ntest_iter = chainer.iterators.SerialIterator(test, batch_size=100, repeat=False, shuffle=False)\n\n# \u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\nmodel = MLP(1000, 10)\n\n# \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u306e\u5b9a\u7fa9\noptimizer = chainer.optimizers.Adam()\noptimizer.setup(model)\n\n# \u30c8\u30ec\u30fc\u30ca\u30fc\u306e\u5b9a\u7fa9\ntrainer = training.Trainer(train_iter, optimizer, (20, 'epoch'), out='result')\n\n# \u8a55\u4fa1\u95a2\u6570\u306e\u5b9a\u7fa9\ntrainer.extend(extensions.Evaluator(test_iter, model))\n\n# \u30ed\u30b0\u51fa\u529b\u306e\u8a2d\u5b9a\ntrainer.extend(extensions.LogReport())\ntrainer.extend(extensions.PrintReport(['epoch', 'main\/loss', 'validation\/main\/loss',\n                                       'main\/accuracy', 'validation\/main\/accuracy']))\ntrainer.extend(extensions.ProgressBar())\n\n# \u5b66\u7fd2\u306e\u5b9f\u884c\ntrainer.run()<\/pre>\n\n\n\n<p>\u3053\u3053\u3067\u306f\u3001<code>chainer.Chain<\/code>\u3092\u7d99\u627f\u3057\u3066<code>MLP<\/code>\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3001<code>Linear<\/code>\u3092\u4f7f\u3063\u3066\u5168\u7d50\u5408\u5c64\u3092\u7a4d\u307f\u91cd\u306d\u3066\u3044\u307e\u3059\u3002<code>__call__<\/code>\u30e1\u30bd\u30c3\u30c9\u306b\u306f\u3001\u30d5\u30a9\u30ef\u30fc\u30c9\u51e6\u7406\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306b\u306f\u3001MNIST\u624b\u66f8\u304d\u6570\u5b57\u753b\u50cf\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002<code>iterators<\/code>\u3092\u4f7f\u3063\u3066\u30c7\u30fc\u30bf\u306e\u30df\u30cb\u30d0\u30c3\u30c1\u3092\u751f\u6210\u3057\u3001<code>training.Trainer<\/code>\u3067\u30e2\u30c7\u30eb\u306e\u5b66\u7fd2\u3092\u884c\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6b21\u306b\u3001Chainer\u3092\u4f7f\u3063\u305f\u753b\u50cf\u8a8d\u8b58\u306e\u5b9f\u88c5\u4f8b\u3068\u3057\u3066\u3001\u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\uff08CNN\uff09\u3092\u4f7f\u3063\u305fCIFAR-10\u306e\u5206\u985e\u3092\u884c\u3063\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u3053\u3053\u3067\u306f\u3001ResNet\u30e2\u30c7\u30eb\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import chainer\nimport chainer.functions as F\nimport chainer.links as L\nfrom chainer import training\nfrom chainer.training import extensions\n\n# ResNet\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\nclass ResNet(chainer.Chain):\n    def __init__(self, n_layers, n_out):\n        super(ResNet, self).__init__()\n        with self.init_scope():\n            self.conv1 = L.Convolution2D(None, 16, 3, 1, 1)\n            self.bn1 = L.BatchNormalization(16)\n            self.res2 = ResBlock(n_layers[0], 16, 16, 1)\n            self.res3 = ResBlock(n_layers[1], 16, 32, 2)\n            self.res4 = ResBlock(n_layers[2], 32, 64, 2)\n            self.fc = L.Linear(None, n_out)\n\n    def __call__(self, x):\n        h = self.bn1(self.conv1(x))\n        h = F.max_pooling_2d(F.relu(h), 3, stride=2)\n        h = self.res2(h)\n        h = self.res3(h)\n        h = self.res4(h)\n        h = F.average_pooling_2d(h, 4)\n        return self.fc(h)\n\n# ResBlock\u306e\u5b9a\u7fa9\nclass ResBlock(chainer.Chain):\n    def __init__(self, n_layers, n_in, n_out, stride=1):\n        super(ResBlock, self).__init__()\n        with self.init_scope():\n            self.conv1 = L.Convolution2D(n_in, n_out, 3, stride, 1)\n            self.bn1 = L.BatchNormalization(n_out)\n            self.conv2 = L.Convolution2D(n_out, n_out, 3, 1, 1)\n            self.bn2 = L.BatchNormalization(n_out)\n            if n_in != n_out:\n                self.shortcut = L.Convolution2D(n_in, n_out, 1, stride, 0)\n            else:\n                self.shortcut = lambda x: x\n        self.stride = stride\n\n    def __call__(self, x):\n        h = F.relu(self.bn1(self.conv1(x)))\n        h = self.bn2(self.conv2(h))\n        shortcut = self.shortcut(x)\n        return F.relu(h + shortcut)\n\n# \u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u6e96\u5099\ntrain, test = chainer.datasets.get_cifar10()\n\n# \u30a4\u30c6\u30ec\u30fc\u30bf\u306e\u5b9a\u7fa9\ntrain_iter = chainer.iterators.SerialIterator(train, batch_size=64)\ntest_iter = chainer.iterators.SerialIterator(test, batch_size=64, repeat=False, shuffle=False)\n\n# \u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\nmodel = ResNet([2, 2, 2], 10)\n\n# \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u306e\u5b9a\u7fa9\noptimizer = chainer.optimizers.MomentumSGD(lr=0.1)\noptimizer.setup(model)\n\n# \u30c8\u30ec\u30fc\u30ca\u30fc\u306e\u5b9a\u7fa9\ntrainer = training.Trainer(train_iter, optimizer, (50, 'epoch'), out='result')\n\n# \u8a55\u4fa1\u95a2\u6570\u306e\u5b9a\u7fa9\ntrainer.extend(extensions.Evaluator(test_iter, model))\n\n# \u30ed\u30b0\u51fa\u529b\u306e\u8a2d\u5b9a\ntrainer.extend(extensions.LogReport())\ntrainer.extend(extensions.PrintReport(['epoch', 'main\/loss', 'validation\/main\/loss',\n                                       'main\/accuracy', 'validation\/main\/accuracy']))\ntrainer.extend(extensions.ProgressBar())\n\n# \u5b66\u7fd2\u306e\u5b9f\u884c\ntrainer.run()<\/pre>\n\n\n\n<p>\u3053\u3053\u3067\u306f\u3001<code>ResNet<\/code>\u30af\u30e9\u30b9\u3068<code>ResBlock<\/code>\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3066\u3001ResNet\u30e2\u30c7\u30eb\u3092\u69cb\u7bc9\u3057\u3066\u3044\u307e\u3059\u3002\u7573\u307f\u8fbc\u307f\u5c64\u3084\u30d0\u30c3\u30c1\u6b63\u898f\u5316\u5c64\u3092\u7d44\u307f\u5408\u308f\u305b\u3001\u30b9\u30ad\u30c3\u30d7\u7d50\u5408\u3092\u5c0e\u5165\u3059\u308b\u3053\u3068\u3067\u3001\u6df1\u3044\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u5b66\u7fd2\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u6700\u5f8c\u306b\u3001Chainer\u3092\u4f7f\u3063\u305f\u81ea\u7136\u8a00\u8a9e\u51e6\u7406\u306e\u5b9f\u88c5\u4f8b\u3068\u3057\u3066\u3001\u30ea\u30ab\u30ec\u30f3\u30c8\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\uff08RNN\uff09\u306b\u3088\u308bIMDb\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u611f\u60c5\u5206\u6790\u3092\u884c\u3063\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import chainer\nimport chainer.functions as F\nimport chainer.links as L\nfrom chainer import training\nfrom chainer.training import extensions\n\n# LSTM\u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\nclass LSTM(chainer.Chain):\n    def __init__(self, n_vocab, n_units, n_out):\n        super(LSTM, self).__init__()\n        with self.init_scope():\n            self.embed = L.EmbedID(n_vocab, n_units)\n            self.lstm = L.LSTM(n_units, n_units)\n            self.fc = L.Linear(n_units, n_out)\n\n    def __call__(self, x, t):\n        h = self.embed(x)\n        h = self.lstm(h)\n        h = self.fc(h[-1])\n        loss = F.softmax_cross_entropy(h, t)\n        accuracy = F.accuracy(h, t)\n        return loss, accuracy\n\n    def predict(self, x):\n        h = self.embed(x)\n        h = self.lstm(h)\n        h = self.fc(h[-1])\n        return F.softmax(h)\n\n# \u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u306e\u6e96\u5099\ntrain, test = chainer.datasets.get_imdb()\n\n# \u5358\u8a9eID\u3078\u306e\u5909\u63db\ndef transform(data):\n    return chainer.datasets.TransformDataset(data, lambda x: x[0])\n\ntrain = transform(train)\ntest = transform(test)\n\n# \u30a4\u30c6\u30ec\u30fc\u30bf\u306e\u5b9a\u7fa9\ntrain_iter = chainer.iterators.SerialIterator(train, batch_size=64)\ntest_iter = chainer.iterators.SerialIterator(test, batch_size=64, repeat=False, shuffle=False)\n\n# \u30e2\u30c7\u30eb\u306e\u5b9a\u7fa9\nmodel = LSTM(10000, 300, 2)\n\n# \u30aa\u30d7\u30c6\u30a3\u30de\u30a4\u30b6\u306e\u5b9a\u7fa9\noptimizer = chainer.optimizers.Adam()\noptimizer.setup(model)\n\n# \u30c8\u30ec\u30fc\u30ca\u30fc\u306e\u5b9a\u7fa9\ntrainer = training.Trainer(train_iter, optimizer, (5, 'epoch'), out='result')\n\n# \u8a55\u4fa1\u95a2\u6570\u306e\u5b9a\u7fa9\ntrainer.extend(extensions.Evaluator(test_iter, model))\n\n# \u30ed\u30b0\u51fa\u529b\u306e\u8a2d\u5b9a\ntrainer.extend(extensions.LogReport())\ntrainer.extend(extensions.PrintReport(['epoch', 'main\/loss', 'validation\/main\/loss',\n                                       'main\/accuracy', 'validation\/main\/accuracy']))\ntrainer.extend(extensions.ProgressBar())\n\n# \u5b66\u7fd2\u306e\u5b9f\u884c\ntrainer.run()<\/pre>\n\n\n\n<p>\u3053\u3053\u3067\u306f\u3001<code>LSTM<\/code>\u30af\u30e9\u30b9\u3092\u5b9a\u7fa9\u3057\u3001\u5358\u8a9e\u306e\u57cb\u3081\u8fbc\u307f\u30d9\u30af\u30c8\u30eb\u3092\u5165\u529b\u3068\u3057\u3066\u53d7\u3051\u53d6\u308bLSTM\u30e2\u30c7\u30eb\u3092\u69cb\u7bc9\u3057\u3066\u3044\u307e\u3059\u3002<code>__call__<\/code>\u30e1\u30bd\u30c3\u30c9\u3067\u306f\u3001\u30d5\u30a9\u30ef\u30fc\u30c9\u51e6\u7406\u306b\u52a0\u3048\u3066\u640d\u5931\u95a2\u6570\u3068\u7cbe\u5ea6\u306e\u8a08\u7b97\u3082\u884c\u3044\u307e\u3059\u3002IMDb\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u5358\u8a9eID\u306e\u30ea\u30b9\u30c8\u306b\u5909\u63db\u3057\u3001\u30df\u30cb\u30d0\u30c3\u30c1\u5b66\u7fd2\u3092\u884c\u3046\u3053\u3068\u3067\u3001\u6620\u753b\u30ec\u30d3\u30e5\u30fc\u306e\u611f\u60c5\u5206\u6790\u3092\u884c\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0a\u306e\u3088\u3046\u306b\u3001Chainer\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u591a\u5c64\u30d1\u30fc\u30bb\u30d7\u30c8\u30ed\u30f3\u3001\u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u30ea\u30ab\u30ec\u30f3\u30c8\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306a\u3069\u3001\u69d8\u3005\u306a\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30e2\u30c7\u30eb\u3092\u7c21\u6f54\u306b\u5b9f\u88c5\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002Chainer\u306e\u8c4a\u5bcc\u306a\u6a5f\u80fd\u3068\u67d4\u8edf\u6027\u3092\u6d3b\u304b\u3057\u3066\u3001\u753b\u50cf\u8a8d\u8b58\u3084\u81ea\u7136\u8a00\u8a9e\u51e6\u7406\u306a\u3069\u306e\u69d8\u3005\u306a\u30bf\u30b9\u30af\u306b\u53d6\u308a\u7d44\u3080\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-5\">Chainer\u306e\u9b45\u529b\u3068\u6ce8\u610f\u70b9<\/h2>\n\n\n\n<p>Chainer\u306f\u3001\u591a\u304f\u306e\u9b45\u529b\u7684\u306a\u7279\u5fb4\u3092\u6301\u3064\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002\u307e\u305a\u3001Chainer\u306f\u76f4\u611f\u7684\u3067\u8a18\u8ff0\u3057\u3084\u3059\u3044API\u3092\u63d0\u4f9b\u3057\u3066\u3044\u307e\u3059\u3002Python\u306e\u6587\u6cd5\u306b\u6cbf\u3063\u305f\u30b3\u30fc\u30c9\u3067\u3001\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u81ea\u7136\u306b\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u6b21\u306e\u3088\u3046\u306b\u30b7\u30f3\u30d7\u30eb\u306a\u591a\u5c64\u30d1\u30fc\u30bb\u30d7\u30c8\u30ed\u30f3\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class MLP(chainer.Chain):\n    def __init__(self, n_units, n_out):\n        super(MLP, self).__init__()\n        with self.init_scope():\n            self.l1 = L.Linear(None, n_units)\n            self.l2 = L.Linear(None, n_units)\n            self.l3 = L.Linear(None, n_out)\n\n    def __call__(self, x):\n        h1 = F.relu(self.l1(x))\n        h2 = F.relu(self.l2(h1))\n        return self.l3(h2)<\/pre>\n\n\n\n<p>\u307e\u305f\u3001Chainer\u306f\u52d5\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u63a1\u7528\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u67d4\u8edf\u306a\u30e2\u30c7\u30eb\u69cb\u7bc9\u304c\u53ef\u80fd\u3067\u3059\u3002\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5b9f\u884c\u6642\u306b\u52d5\u7684\u306b\u69cb\u7bc9\u3059\u308b\u305f\u3081\u3001\u6761\u4ef6\u5206\u5c90\u3084\u518d\u5e30\u7684\u306a\u51e6\u7406\u3092\u542b\u3080\u30e2\u30c7\u30eb\u3092\u67d4\u8edf\u306b\u8a18\u8ff0\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u3055\u3089\u306b\u3001Chainer\u306b\u306f\u5f37\u529b\u306a\u62e1\u5f35\u6a5f\u80fd\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001ChainerUI\u3092\u4f7f\u3046\u3053\u3068\u3067\u3001\u5b66\u7fd2\u306e\u9032\u6357\u72b6\u6cc1\u3092\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u306b\u53ef\u8996\u5316\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from chainerui.utils import save_args\nfrom chainerui.extensions import CommandsExtension\n\ndef main():\n    # \u30c8\u30ec\u30fc\u30ca\u30fc\u306e\u5b9a\u7fa9\n    trainer = training.Trainer(updater, (20, 'epoch'), out='result')\n\n    # ChainerUI\u306e\u8a2d\u5b9a\n    save_args(args, os.path.join(args.out, 'args.json'))\n    trainer.extend(CommandsExtension())\n\n    # \u5b66\u7fd2\u306e\u5b9f\u884c\n    trainer.run()<\/pre>\n\n\n\n<p>\u52a0\u3048\u3066\u3001Chainer\u306b\u306f\u591a\u5f69\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3084\u30c4\u30fc\u30eb\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u3044\u307e\u3059\u3002MNIST\u3001CIFAR\u3001PTB\u306a\u3069\u306e\u6709\u540d\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3092\u7c21\u5358\u306b\u5229\u7528\u3067\u304d\u307e\u3059\u3002\u307e\u305f\u3001ChainerCV\u3084ChainerRL\u306a\u3069\u306e\u9ad8\u30ec\u30d9\u30eb\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u3082\u63d0\u4f9b\u3055\u308c\u3066\u304a\u308a\u3001\u69d8\u3005\u306a\u30bf\u30b9\u30af\u306b\u6d3b\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<p>Chainer\u306f\u65e5\u672c\u767a\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u3057\u3066\u3001\u56fd\u5185\u3067\u306e\u5229\u7528\u8005\u304c\u591a\u304f\u3001\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u6d3b\u767a\u3067\u3059\u3002GitHub\u3067\u306e\u30b9\u30bf\u30fc\u6570\u3082\u591a\u304f\u3001\u6d3b\u767a\u306b\u958b\u767a\u304c\u884c\u308f\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-6\">Chainer\u306e5\u3064\u306e\u9b45\u529b<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u76f4\u611f\u7684\u3067\u8a18\u8ff0\u3057\u3084\u3059\u3044API\u3092\u63d0\u4f9b\u3057\u3066\u3044\u308b\u3002<\/li>\n\n\n\n<li>\u52d5\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u63a1\u7528\u3057\u3066\u304a\u308a\u3001\u67d4\u8edf\u306a\u30e2\u30c7\u30eb\u69cb\u7bc9\u304c\u53ef\u80fd\u3067\u3042\u308b\u3002<\/li>\n\n\n\n<li>\u5f37\u529b\u306a\u62e1\u5f35\u6a5f\u80fd\u3092\u5099\u3048\u3066\u3044\u308b\u3002<\/li>\n\n\n\n<li>\u591a\u5f69\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3084\u30c4\u30fc\u30eb\u304c\u5229\u7528\u53ef\u80fd\u3067\u3042\u308b\u3002<\/li>\n\n\n\n<li>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u304c\u6d3b\u767a\u3067\u3001\u6d3b\u7528\u4e8b\u4f8b\u304c\u8c4a\u5bcc\u3067\u3042\u308b\u3002<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-7\">Chainer\u3092\u4f7f\u3046\u4e0a\u3067\u306e3\u3064\u306e\u6ce8\u610f\u70b9<\/h3>\n\n\n\n<p>\u4e00\u65b9\u3067\u3001Chainer\u3092\u4f7f\u3046\u4e0a\u3067\u3044\u304f\u3064\u304b\u306e\u6ce8\u610f\u70b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>1\u3064\u76ee\u306f\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u306b\u3088\u308b\u4e92\u63db\u6027\u306e\u554f\u984c\u3067\u3059\u3002Chainer\u306f\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u306b\u3088\u3063\u3066API\u306e\u4ed5\u69d8\u304c\u5909\u66f4\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u3001\u53e4\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30b3\u30fc\u30c9\u304c\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u52d5\u4f5c\u3057\u306a\u3044\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>2\u3064\u76ee\u306f\u3001\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u6bd4\u3079\u3066\u3001\u60c5\u5831\u91cf\u3084\u8cc7\u6599\u304c\u5c11\u306a\u3044\u3053\u3068\u3067\u3059\u3002Chainer\u306f\u3001TensorFlow\u3084PyTorch\u307b\u3069\u60c5\u5831\u91cf\u304c\u591a\u304f\u3042\u308a\u307e\u305b\u3093\u3002\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3084\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u306f\u5145\u5b9f\u3057\u3066\u3044\u307e\u3059\u304c\u3001\u65e5\u672c\u8a9e\u8cc7\u6599\u304c\u4e2d\u5fc3\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>3\u3064\u76ee\u306f\u3001\u6700\u65b0\u306e\u6280\u8853\u30c8\u30ec\u30f3\u30c9\u3078\u306e\u5bfe\u5fdc\u304c\u9045\u308c\u308b\u3053\u3068\u304c\u3042\u308b\u3068\u3044\u3046\u70b9\u3067\u3059\u3002Chainer\u306f\u3001\u6700\u65b0\u306e\u6280\u8853\u30c8\u30ec\u30f3\u30c9\u3078\u306e\u5bfe\u5fdc\u304c\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u6bd4\u3079\u3066\u9045\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001PyTorch\u3067\u306f\u3044\u3061\u65e9\u304f\u5c0e\u5165\u3055\u308c\u305f\u6a5f\u80fd\u304c\u3001Chainer\u3067\u306f\u5f8c\u304b\u3089\u5b9f\u88c5\u3055\u308c\u308b\u30b1\u30fc\u30b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-8\">PyTorch\u3084TensorFlow\u3068\u306e\u6bd4\u8f03<\/h3>\n\n\n\n<p>Chainer\u3068\u4ed6\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u6bd4\u8f03\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002PyTorch\u306f\u3001Chainer\u3068\u540c\u69d8\u306b\u52d5\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u63a1\u7528\u3057\u3066\u3044\u307e\u3059\u304c\u3001Chainer\u3088\u308a\u3082\u60c5\u5831\u91cf\u304c\u591a\u3044\u306e\u304c\u7279\u5fb4\u3067\u3059\u3002TensorFlow\u306f\u3001\u9759\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u63a1\u7528\u3057\u3066\u304a\u308a\u3001Chainer\u3068\u306f\u7570\u306a\u308b\u30a2\u30d7\u30ed\u30fc\u30c1\u3092\u3068\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>Chainer\u306f\u3001PyTorch\u3084TensorFlow\u3068\u6bd4\u3079\u3066\u3001\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306aAPI\u3092\u63d0\u4f9b\u3057\u3066\u3044\u308b\u3068\u3044\u3046\u9577\u6240\u304c\u3042\u308a\u307e\u3059\u3002\u4e00\u65b9\u3067\u3001PyTorch\u3084TensorFlow\u306f\u3001\u3088\u308a\u5927\u898f\u6a21\u306a\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3092\u6301\u3061\u3001\u591a\u304f\u306e\u4e8b\u4f8b\u3084\u8cc7\u6599\u304c\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4ee5\u4e0a\u306e\u3088\u3046\u306b\u3001Chainer\u306b\u306f\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306aAPI\u3001\u52d5\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u3001\u5f37\u529b\u306a\u62e1\u5f35\u6a5f\u80fd\u306a\u3069\u3001\u591a\u304f\u306e\u9b45\u529b\u304c\u3042\u308a\u307e\u3059\u3002\u4e00\u65b9\u3067\u3001\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u306b\u3088\u308b\u4e92\u63db\u6027\u306e\u554f\u984c\u3001\u60c5\u5831\u91cf\u306e\u5c11\u306a\u3055\u3001\u6700\u65b0\u306e\u6280\u8853\u30c8\u30ec\u30f3\u30c9\u3078\u306e\u5bfe\u5fdc\u306e\u9045\u308c\u306a\u3069\u306e\u6ce8\u610f\u70b9\u3082\u3042\u308a\u307e\u3059\u3002Chainer\u306e\u7279\u5fb4\u3092\u7406\u89e3\u3057\u3001\u9069\u6750\u9069\u6240\u3067\u6d3b\u7528\u3059\u308b\u3053\u3068\u304c\u91cd\u8981\u3060\u3068\u3044\u3048\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-9\">Chainer\u306e\u6700\u65b0\u52d5\u5411\u3068\u4eca\u5f8c\u306e\u5c55\u671b<\/h2>\n\n\n\n<p>Chainer\u306f\u30012015\u5e74\u306e\u767b\u5834\u4ee5\u6765\u3001\u591a\u304f\u306e\u7814\u7a76\u8005\u3084\u30a8\u30f3\u30b8\u30cb\u30a2\u306b\u611b\u3055\u308c\u3066\u304d\u305f\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002\u3057\u304b\u3057\u30012019\u5e7412\u6708\u306b\u30ea\u30ea\u30fc\u30b9\u3055\u308c\u305fChainer 7.0.0\u3092\u6700\u5f8c\u306b\u3001Chainer\u306e\u958b\u767a\u306f\u7d42\u4e86\u3059\u308b\u3053\u3068\u304c\u767a\u8868\u3055\u308c\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-10\">Chainer\u306e\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3\u3068\u66f4\u65b0\u60c5\u5831<\/h3>\n\n\n\n<p>Chainer 7.0.0\u3067\u306f\u3001Python 2\u306e\u30b5\u30dd\u30fc\u30c8\u304c\u7d42\u4e86\u3057\u3001Python 3.5\u4ee5\u4e0a\u304c\u5fc5\u9808\u3068\u306a\u308a\u307e\u3057\u305f\u3002\u307e\u305f\u3001ChainerX\u3068\u3044\u3046\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d0\u30c3\u30af\u30a8\u30f3\u30c9\u304c\u5c0e\u5165\u3055\u308c\u3001NumPy\u3084CuPy\u3068\u4e92\u63db\u6027\u306e\u3042\u308bAPI\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u3067\u3001\u9ad8\u901f\u306a\u8a08\u7b97\u3092\u53ef\u80fd\u306b\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import numpy as np\nimport chainer\nimport chainerx as chx\n\n# NumPy\u304b\u3089ChainerX\u3078\u306e\u5909\u63db\nx_np = np.array([1, 2, 3], dtype=np.float32)\nx_chx = chx.array(x_np)\n\n# ChainerX\u3067\u306e\u8a08\u7b97\ny_chx = x_chx * 2\n\n# ChainerX\u304b\u3089NumPy\u3078\u306e\u5909\u63db\ny_np = chainer.backends.cuda.to_cpu(y_chx.array)<\/pre>\n\n\n\n<p>Chainer 7.0.0\u4ee5\u964d\u306f\u3001\u30d0\u30b0\u4fee\u6b63\u3084\u8efd\u5fae\u306a\u6539\u5584\u306e\u307f\u304c\u884c\u308f\u308c\u3066\u304a\u308a\u3001\u65b0\u6a5f\u80fd\u306e\u8ffd\u52a0\u306f\u4e88\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-11\">Chainer\u306e\u4eca\u5f8c\u306e\u958b\u767a\u30ed\u30fc\u30c9\u30de\u30c3\u30d7\u3068\u5c55\u671b<\/h3>\n\n\n\n<p>Chainer\u306e\u958b\u767a\u306f\u7d42\u4e86\u3057\u307e\u3057\u305f\u304c\u3001\u305d\u306e\u8a2d\u8a08\u601d\u60f3\u306f\u6b21\u4e16\u4ee3\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3042\u308bPyTorch Chained\u306b\u5f15\u304d\u7d99\u304c\u308c\u3066\u3044\u307e\u3059\u3002PyTorch Chained\u306f\u3001PyTorch\u3092\u30d9\u30fc\u30b9\u3068\u3057\u3064\u3064\u3001Chainer\u306e\u76f4\u611f\u7684\u306aAPI\u3084\u52d5\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u306e\u69cb\u7bc9\u306a\u3069\u306e\u7279\u5fb4\u3092\u7d99\u627f\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import pytorch_chained as chd\n\nclass MLP(chd.Link):\n    def __init__(self, n_units, n_out):\n        super().__init__()\n        self.l1 = chd.links.Linear(None, n_units)\n        self.l2 = chd.links.Linear(None, n_units)\n        self.l3 = chd.links.Linear(None, n_out)\n\n    def forward(self, x):\n        h1 = chd.functions.relu(self.l1(x))\n        h2 = chd.functions.relu(self.l2(h1))\n        return self.l3(h2)<\/pre>\n\n\n\n<p>\u4e0a\u8a18\u306e\u30b3\u30fc\u30c9\u306f\u3001PyTorch Chained\u3092\u7528\u3044\u305f\u591a\u5c64\u30d1\u30fc\u30bb\u30d7\u30c8\u30ed\u30f3\u306e\u5b9a\u7fa9\u4f8b\u3067\u3059\u3002Chainer\u3068\u540c\u69d8\u306e\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306a\u8a18\u8ff0\u304c\u53ef\u80fd\u3068\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>PyTorch Chained\u306f\u3001PyTorch\u306e\u8c4a\u5bcc\u306a\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u3084\u3001\u6700\u65b0\u306e\u6280\u8853\u30c8\u30ec\u30f3\u30c9\u3078\u306e\u8fc5\u901f\u306a\u5bfe\u5fdc\u306a\u3069\u306e\u5229\u70b9\u3092\u53d6\u308a\u8fbc\u3080\u3053\u3068\u3067\u3001\u3088\u308a\u5f37\u529b\u306a\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3068\u306a\u308b\u3053\u3068\u304c\u671f\u5f85\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>Chainer\u3092\u4f7f\u3063\u3066\u304d\u305f\u7814\u7a76\u8005\u3084\u30a8\u30f3\u30b8\u30cb\u30a2\u306f\u3001PyTorch Chained\u3078\u306e\u79fb\u884c\u3092\u691c\u8a0e\u3059\u308b\u3053\u3068\u3092\u304a\u3059\u3059\u3081\u3057\u307e\u3059\u3002PyTorch Chained\u306f\u3001Chainer\u306e\u826f\u3055\u3092\u7d99\u627f\u3057\u3064\u3064\u3001PyTorch\u306e\u6069\u6075\u3092\u53d7\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3001\u5c06\u6765\u6027\u306e\u9ad8\u3044\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3060\u3068\u3044\u3048\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>Chainer\u306e\u958b\u767a\u306f\u7d42\u4e86\u3057\u307e\u3057\u305f\u304c\u3001\u305d\u306e\u7cbe\u795e\u306f\u6b21\u4e16\u4ee3\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u5f15\u304d\u7d99\u304c\u308c\u3066\u3044\u307e\u3059\u3002Chainer\u3067\u57f9\u3063\u305f\u30b9\u30ad\u30eb\u3092\u6d3b\u304b\u3057\u3064\u3064\u3001PyTorch Chained\u3092\u4f7f\u3044\u3053\u306a\u3059\u3053\u3068\u3067\u3001\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u306e\u7814\u7a76\u958b\u767a\u3092\u3055\u3089\u306b\u63a8\u3057\u9032\u3081\u3066\u3044\u304f\u3053\u3068\u304c\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"i-12\">\u307e\u3068\u3081\uff1aChainer\u3067\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u3092\u59cb\u3081\u3088\u3046\uff01<\/h2>\n\n\n\n<p>\u672c\u8a18\u4e8b\u3067\u306f\u3001Chainer\u306e\u57fa\u672c\u7684\u306a\u7279\u5fb4\u3084\u5b9f\u88c5\u4f8b\u3001\u305d\u3057\u3066\u4eca\u5f8c\u306e\u5c55\u671b\u306b\u3064\u3044\u3066\u8a73\u3057\u304f\u89e3\u8aac\u3057\u3066\u304d\u307e\u3057\u305f\u3002Chainer\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306aAPI\u3001\u52d5\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u3001\u8c4a\u5bcc\u306a\u62e1\u5f35\u6a5f\u80fd\u306a\u3069\u3001\u591a\u304f\u306e\u9b45\u529b\u3092\u6301\u3064\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-13\">Chainer\u306e\u57fa\u672c\u3068\u5b9f\u88c5\u4f8b\u306e\u304a\u3055\u3089\u3044<\/h3>\n\n\n\n<p>Chainer\u3092\u4f7f\u3048\u3070\u3001\u591a\u5c64\u30d1\u30fc\u30bb\u30d7\u30c8\u30ed\u30f3\u3001\u7573\u307f\u8fbc\u307f\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3001\u30ea\u30ab\u30ec\u30f3\u30c8\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306a\u3069\u3001\u69d8\u3005\u306a\u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u7c21\u6f54\u306b\u5b9f\u88c5\u3067\u304d\u307e\u3059\u3002\u4f8b\u3048\u3070\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30b7\u30f3\u30d7\u30eb\u306a\u591a\u5c64\u30d1\u30fc\u30bb\u30d7\u30c8\u30ed\u30f3\u3092\u5b9a\u7fa9\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import chainer\nimport chainer.functions as F\nimport chainer.links as L\n\n# \u30cb\u30e5\u30fc\u30e9\u30eb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u5b9a\u7fa9\nclass MLP(chainer.Chain):\n    def __init__(self, n_units, n_out):\n        super(MLP, self).__init__()\n        with self.init_scope():\n            self.l1 = L.Linear(None, n_units)\n            self.l2 = L.Linear(None, n_units)\n            self.l3 = L.Linear(None, n_out)\n\n    def __call__(self, x):\n        h1 = F.relu(self.l1(x))\n        h2 = F.relu(self.l2(h1))\n        return self.l3(h2)<\/pre>\n\n\n\n<p>\u307e\u305f\u3001Chainer\u306b\u306f\u591a\u5f69\u306a\u30c7\u30fc\u30bf\u30bb\u30c3\u30c8\u3084\u30c4\u30fc\u30eb\u304c\u7528\u610f\u3055\u308c\u3066\u304a\u308a\u3001\u753b\u50cf\u8a8d\u8b58\u3001\u81ea\u7136\u8a00\u8a9e\u51e6\u7406\u3001\u5f37\u5316\u5b66\u7fd2\u306a\u3069\u3001\u69d8\u3005\u306a\u30bf\u30b9\u30af\u306b\u9069\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"i-14\">Chainer\u3092\u4f7f\u3063\u3066\u30b9\u30ad\u30eb\u30a2\u30c3\u30d7\u3059\u308b\u305f\u3081\u306e\u30a2\u30c9\u30d0\u30a4\u30b9<\/h3>\n\n\n\n<p>Chainer\u3092\u4f7f\u3063\u3066\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u306e\u30b9\u30ad\u30eb\u3092\u5411\u4e0a\u3055\u305b\u308b\u305f\u3081\u306b\u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30a2\u30c9\u30d0\u30a4\u30b9\u3092\u6d3b\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3084\u30c1\u30e5\u30fc\u30c8\u30ea\u30a2\u30eb\u3092\u6d3b\u7528\u3057\u3001Chainer\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u3092\u5b66\u3076\u3002<\/li>\n\n\n\n<li>\u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\u3092\u5b9f\u969b\u306b\u52d5\u304b\u3057\u3066\u7406\u89e3\u3092\u6df1\u3081\u308b\u3002<\/li>\n\n\n\n<li>\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u306b\u53c2\u52a0\u3057\u3001\u4ed6\u306e\u30e6\u30fc\u30b6\u30fc\u3068\u60c5\u5831\u4ea4\u63db\u3059\u308b\u3002<\/li>\n\n\n\n<li>\u81ea\u5206\u306e\u7814\u7a76\u30c6\u30fc\u30de\u3084\u8ab2\u984c\u306bChainer\u3092\u9069\u7528\u3057\u3001\u5b9f\u8df5\u7684\u306a\u30b9\u30ad\u30eb\u3092\u8eab\u306b\u3064\u3051\u308b\u3002<\/li>\n\n\n\n<li>PyTorch Chained\u3078\u306e\u79fb\u884c\u3092\u691c\u8a0e\u3057\u3001\u9577\u671f\u7684\u306a\u6210\u9577\u3092\u76ee\u6307\u3059\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u7279\u306b\u3001PyTorch Chained\u3078\u306e\u79fb\u884c\u306f\u3001Chainer\u30e6\u30fc\u30b6\u30fc\u306b\u3068\u3063\u3066\u91cd\u8981\u306a\u9078\u629e\u80a2\u3068\u306a\u308a\u307e\u3059\u3002PyTorch Chained\u306f\u3001Chainer\u306e\u76f4\u611f\u7684\u306aAPI\u3084\u52d5\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u306e\u69cb\u7bc9\u306a\u3069\u306e\u5229\u70b9\u3092\u7d99\u627f\u3057\u3064\u3064\u3001PyTorch\u306e\u8c4a\u5bcc\u306a\u30a8\u30b3\u30b7\u30b9\u30c6\u30e0\u3084\u6700\u65b0\u306e\u6280\u8853\u30c8\u30ec\u30f3\u30c9\u3078\u306e\u5bfe\u5fdc\u529b\u3092\u517c\u306d\u5099\u3048\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>Chainer\u3067\u57f9\u3063\u305f\u30b9\u30ad\u30eb\u3092\u6d3b\u304b\u3057\u3064\u3064\u3001PyTorch Chained\u3092\u4f7f\u3044\u3053\u306a\u3059\u3053\u3068\u3067\u3001\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u306e\u7814\u7a76\u958b\u767a\u3092\u3055\u3089\u306b\u63a8\u3057\u9032\u3081\u3066\u3044\u304f\u3053\u3068\u304c\u3067\u304d\u308b\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n\n<p>Chainer\u306e\u958b\u767a\u306f\u7d42\u4e86\u3057\u307e\u3057\u305f\u304c\u3001\u305d\u306e\u7cbe\u795e\u306f\u6b21\u4e16\u4ee3\u306e\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u5f15\u304d\u7d99\u304c\u308c\u3066\u3044\u307e\u3059\u3002\u672c\u8a18\u4e8b\u3067\u7d39\u4ecb\u3057\u305f\u77e5\u8b58\u3068\u30a2\u30c9\u30d0\u30a4\u30b9\u3092\u6d3b\u7528\u3057\u3001Chainer\u3084\u305d\u306e\u5f8c\u7d99\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3092\u4f7f\u3063\u3066\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u306e\u4e16\u754c\u306b\u98db\u3073\u8fbc\u3093\u3067\u307f\u307e\u305b\u3093\u304b\uff1f\u304d\u3063\u3068\u30a8\u30ad\u30b5\u30a4\u30c6\u30a3\u30f3\u30b0\u306a\u767a\u898b\u3068\u6210\u9577\u304c\u5f85\u3063\u3066\u3044\u308b\u306f\u305a\u3067\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Chainer\u306f\u3001\u30b7\u30f3\u30d7\u30eb\u3067\u76f4\u611f\u7684\u306aAPI\u3068\u52d5\u7684\u306a\u8a08\u7b97\u30b0\u30e9\u30d5\u3092\u7279\u5fb4\u3068\u3059\u308b\u3001\u65e5\u672c\u767a\u306e\u30c7\u30a3\u30fc\u30d7\u30e9\u30fc\u30cb\u30f3\u30b0\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3067\u3059\u3002\u672c\u8a18\u4e8b\u3067\u306f\u3001Chainer\u306e\u57fa\u672c\u7684\u306a\u4f7f\u3044\u65b9\u304b\u3089\u5b9f\u88c5\u4f8b\u3001\u305d\u3057\u3066\u4eca\u5f8c\u306e\u5c55\u671b\u307e\u3067\u3092\u8a73\u3057\u304f\u89e3\u8aac\u3057\u307e\u3059\u3002Cha &#8230; <\/p>\n","protected":false},"author":1,"featured_media":723,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":{"0":"post-722","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-python"},"_links":{"self":[{"href":"https:\/\/chocottopro.com\/index.php?rest_route=\/wp\/v2\/posts\/722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chocottopro.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chocottopro.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chocottopro.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chocottopro.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=722"}],"version-history":[{"count":1,"href":"https:\/\/chocottopro.com\/index.php?rest_route=\/wp\/v2\/posts\/722\/revisions"}],"predecessor-version":[{"id":724,"href":"https:\/\/chocottopro.com\/index.php?rest_route=\/wp\/v2\/posts\/722\/revisions\/724"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chocottopro.com\/index.php?rest_route=\/wp\/v2\/media\/723"}],"wp:attachment":[{"href":"https:\/\/chocottopro.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chocottopro.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=722"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chocottopro.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}