Python¸þ¤±¤Îµ¡³£³Ø½¬¥é¥¤¥Ö¥é¥ê¡ÖPyTorch¡×¤È¤Ï²¿¤«¤ò¤ï¤«¤ê¤ä¤¹¤¯²òÀâ

PyTorch¤ÏMeta AI(µìFacebook AI)¤Ë¤è¤Ã¤Æ³«È¯¤µ¤ì¤¿¥ª¡¼¥×¥ó¥½¡¼¥¹¤Î¥Ç¥£¡¼¥×¥é¡¼¥Ë¥ó¥°Íѥե졼¥à¥ï¡¼¥¯¤Ç¤¢¤ê¡¢¸½ºß¤ÏLinux Foundation¤Î°ìÉô¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤³¤Î¥é¥¤¥Ö¥é¥ê¤Ï¡¢µ»öºîÀ®»þÅÀ¤Ç³«È¯¤¬½ªÎ»¤·¤Æ¤¤¤ëTorch¥é¥¤¥Ö¥é¥ê¤ò´ðÈפȤ·¤Æ¹½ÃÛ¤µ¤ì¤Þ¤·¤¿¡£¥Æ¥¯¥Î¥í¥¸¡¼·Ï¤Î¥Ö¥í¥¬¡¼¤Ç¤¢¤ëObyte¤¬¡¢PyTorch¤Î´ðËÜŪ¤Ê¹½À®Í×ÁǤ«¤é¥Ë¥å¡¼¥é¥ë¥Í¥Ã¥È¥ï¡¼¥¯¤Î¼ÂÁõ¤Þ¤Ç¤ò»ë³ÐŪ¤Ë²òÀ⤷¤Æ¤¤¤Þ¤¹¡£
https://0byte.io/articles/pytorch_introduction.html
Visual Introduction to PyTorch - YouTube
PyTorch¤ÎºÇ¤â´ðËÜŪ¤Ê¹½À®Í×ÁǤϥƥ󥽥ë¤È¸Æ¤Ð¤ì¤ë¥Ç¡¼¥¿·¿¤Ç¤¹¡£¤³¤ì¤Ïµ¡³£³Ø½¬¤Ç°·¤¦¿ôÃͤò³ÊǼ¤¹¤ë¤¿¤á¤ÎÆÃ¼ì¤ÊÍÆ´ï¤Ç¤¢¤ê¡¢Ä̾ï¤Î¥ê¥¹¥È¤äÇÛÎó¤ò¤è¤ê¶¯ÎϤˤ·¤¿Â¿¼¡¸µÇÛÎó¤Î¤è¤¦¤Ê¤â¤Î¤Ç¤¹¡£

¥Æ¥ó¥½¥ë¤Î½é´ü²½¤Ë¤ÏÍÍ¡¹¤Ê´Ø¿ô¤¬ÍѰդµ¤ì¤Æ¤ª¤ê¡¢0¤«¤é1¤Î´Ö¤ÎÍð¿ô¤òÀ¸À®¤¹¤ëtorch.rand()¤ä¡¢0¤òÃæ¿´¤ËÀµµ¬Ê¬ÉÛ¤¹¤ëÍð¿ô¤òÆÀ¤ëtorch.randn()¡¢¤¹¤Ù¤Æ¤ÎÍ×ÁǤò1¤Ë¤¹¤ëtorch.ones()¤Ê¤É¤¬¤¢¤ê¤Þ¤¹¡£¤Þ¤¿¡¢0¤ÇËä¤á¤ëtorch.zeros()¤äñ°Ì¹ÔÎó¤òºî¤ëtorch.eye()¡¢¥á¥â¥ê¤Î³ä¤êÅö¤Æ¤Î¤ß¤ò¹Ô¤Ã¤ÆÃͤò½é´ü²½¤·¤Ê¤¤torch.empty()¤È¤¤¤Ã¤¿ÍÑÅӤ˱þ¤¸¤¿»È¤¤Ê¬¤±¤¬²Äǽ¤Ç¤¹¡£

¸½¼ÂÀ¤³¦¤Î¤¢¤é¤æ¤ë¥Ç¡¼¥¿¤Ï¡¢PyTorch¤Ç·×»»¤ò¹Ô¤¦¤¿¤á¤Ë¿ôÃÍɽ¸½¤Ø¤ÈÊÑ´¹¤µ¤ì¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£Ê¸¾Ï¥Ç¡¼¥¿¤Ç¤¢¤ì¤Ð¡¢ºÇ¤â¥·¥ó¥×¥ë¤Ê¼êË¡¤È¤·¤Æ³ÆÃ±¸ì¤Ë¸ÇͤÎID¤ò³ä¤êÅö¤Æ¤Æ¿ôÃͲ½¤·¡¢²èÁü¥Ç¡¼¥¿¤Ç¤¢¤ì¤ÐRGB¤Î¿§¾ðÊó¤ò»ý¤Ä¥Ô¥¯¥»¥ë¤Î¥°¥ê¥Ã¥É¤È¤·¤Æ¥Æ¥ó¥½¥ë²½¤·¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢28¡ß28¥Ô¥¯¥»¥ë¤Î¥°¥ì¡¼¥¹¥±¡¼¥ë²èÁü¤Ï[28, 28]¤Î·Á¾õ¤ò»ý¤Ä¥Æ¥ó¥½¥ë¤È¤Ê¤ê¡¢3D¥á¥Ã¥·¥å¥Ç¡¼¥¿¤Ç¤¢¤ì¤ÐĺÅÀ¤Îx¡¿y¡¿zºÂɸ¤òÊÝ»ý¤¹¤ë[1000, 3]¤Î¤è¤¦¤Ê·Á¾õ¤Ç´ÉÍý¤µ¤ì¤Þ¤¹¡£

PyTorch¤Ë¤Ï100¼ïÎà°Ê¾å¤Î±é»»¤¬¤¢¤é¤«¤¸¤áÄêµÁ¤µ¤ì¤Æ¤ª¤ê¡¢»Í§±é»»¤Î¤Û¤«¡¢¹ç·×Ãͤòµá¤á¤ësum()¤äÊ¿¶ÑÃͤòµá¤á¤ëmean()¤È¤¤¤Ã¤¿½¸ÌóÁàºî¤ò´Êñ¤Ë¹Ô¤¨¤Þ¤¹¡£¤Þ¤¿¡¢¥Ë¥å¡¼¥é¥ë¥Í¥Ã¥È¥ï¡¼¥¯¤Ë¤ª¤¤¤Æ½ÅÍפÊÌò³ä¤ò²Ì¤¿¤¹³èÀ²½´Ø¿ô¤âËÉÙ¤ËÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢ºÇ¤â°ìÈÌŪ¤ÊReLU¤ÏÉé¤ÎÃͤò0¤ËÃÖ¤´¹¤¨¤ë´Ø¿ô¤Ç¤¢¤ê¡¢Sigmoid¤ÏÃͤò0¤«¤é1¤Î´Ö¤Ë¡¢Tanh¤ÏÃͤò-1¤«¤é1¤Î´Ö¤ËÀµµ¬²½¤¹¤ëÆÃÀ¤ò»ý¤Ã¤Æ¤¤¤Þ¤¹¡£
PyTorch¤Î·×»»Ç½ÎϤò»Ù¤¨¤ëÃæ¿´Åª¤Êµ¡Ç½¤¬¡¢¼«Æ°Èùʬ¥¨¥ó¥¸¥ó¤Ç¤¢¤ëautograd¤Ç¡¢¥Ë¥å¡¼¥é¥ë¥Í¥Ã¥È¥ï¡¼¥¯¤Î¥¨¥ó¥¸¥ó¤È¤â¾Î¤µ¤ì¤ë½ÅÍפʵ¡Ç½¤Ç¤¹¡£Èùʬ¤Ï²Ê³Ø¤ä¹©³Ø¤Î¤¢¤é¤æ¤ë¾ìÌ̤ÇÍøÍѤµ¤ì¤ë´ðËÜŪ¤Ê·×»»¤Ç¤¢¤ê¡¢´Ø¿ô¤¬¤¢¤ëÊÑ¿ô¤ËÂФ·¤Æ¤É¤Î¤è¤¦¤ËÊѲ½¤¹¤ë¤«¤òµ½Ò¤·¤Þ¤¹¡£
¤¿¤È¤¨¤Ð°Ê²¼¤ÎÊüʪÀþf(x)=x2¤ËÀܤ¹¤ëľÀþ¤Î·¹¤¤Ï¡¢f(x)¤òÈùʬ¤¹¤ë¤³¤È¤Çµá¤á¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤³¤ÎľÀþ¤Î·¹¤f'(x)¤Ï¡¢x¤ËÂбþ¤·¤¿f(x)¤Î½Ö´ÖŪ¤ÊÊѲ½Î¨¤ò¼¨¤·¤Æ¤¤¤ë¤È¤¤¤¨¤Þ¤¹¡£

¤½¤·¤Æ¡¢¸ûÇۤϤ¹¤Ù¤Æ¤ÎÊÑ¿ô¤ËÂФ¹¤ëÈùʬ¤Î½¸¹ç¤Ç¤¢¤ê¡¢¤¢¤é¤æ¤ëÊý¸þ¤Ë¤ª¤±¤ë·¹¼Ð¤ò°ìÅ٤˼¨¤·¤Þ¤¹¡£¿ôÉ´Ëü¤Î¥Ñ¥é¥á¡¼¥¿¤ò»ý¤Ä¸½Âå¤Î¥Í¥Ã¥È¥ï¡¼¥¯¤ò»ë³Ð²½¤¹¤ë¤³¤È¤Ïº¤Æñ¤Ç¤¹¤¬¡¢autograd¤òÍøÍѤ¹¤ë¤³¤È¤Ç¤³¤ì¤é¤ÎÊ£»¨¤ÊÈùʬ·×»»¤òGPU¤Î»Ù±ç¤ò¼õ¤±¤Æ¹â®¤Ë¼«Æ°¼Â¹Ô¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£

¥â¥Ç¥ë¤Î³Ø½¬¤Ë¤Ï¡¢¸ûÇ۹߲¼Ë¡¤Ê¤É¤Î¥¢¥ë¥´¥ê¥º¥à¤¬ÍѤ¤¤é¤ì¤Þ¤¹¡£¿ôÉ´Ëü¤â¤Î¥Ñ¥é¥á¡¼¥¿¤ò»ý¤Ä¸½Âå¤Î¥Í¥Ã¥È¥ï¡¼¥¯¤Ç¤â¡¢autograd¤ÈGPU¤Î»Ù±ç¤Ë¤è¤Ã¤Æ¡¢¿Í´Ö¤¬¼ê·×»»¤ò¹Ô¤¦¤³¤È¤Ê¤¯¹â®¤Ë³Ø½¬¤ò¿Ê¤á¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£
¼ÂºÝ¤Î¥â¥Ç¥ë¹½ÃۤǤϡ¢nn.Module¤ò·Ñ¾µ¤·¤¿¥¯¥é¥¹¤òÄêµÁ¤·¤Æ¥Í¥Ã¥È¥ï¡¼¥¯¤Î¹½Â¤¤òµ½Ò¤·¤Þ¤¹¡£¥í¥ó¥É¥ó¤Îʪ·ï²Á³Êͽ¬¤òÎã¤Ë¼è¤ë¤È¡¢87¸Ä¤ÎÆÃħÎ̤òÆþÎϤ·¡¢2¤Ä¤Î±£¤ìÁؤò·Ð¤ÆºÇ½ªÅª¤Ê²Á³Ê¤ò½ÐÎϤ¹¤ë¥â¥Ç¥ë¤¬¹½À®¤µ¤ì¤Þ¤¹¡£

³Ø½¬¥ë¡¼¥×¤Ç¤Ï¡¢¥Ç¡¼¥¿¤ò¥â¥Ç¥ë¤ËÄ̤·¤ÆÍ½Â¬¤òÆÀ¤ë½çÅÁÇÅ¡¢Í½Â¬¤Î¸í¤ê¤ò¬Äꤹ¤ë»¼º·×»»¡¢autograd¤Ë¤è¤ëµÕÅÁÇÅ¡¢¤½¤·¤ÆAdam¤Ê¤É¤ÎºÇŬ²½¥¢¥ë¥´¥ê¥º¥à¤Ë¤è¤ë½Å¤ß¤Î¹¹¿·¤È¤¤¤¦¼ê½ç¤ò¿ôÉ´²ó¤«¤é¿ôÀé²ó·«¤êÊÖ¤·¤Þ¤¹¡£

¤³¤Î¥â¥Ç¥ë¤ò100¥¨¥Ý¥Ã¥¯¤Ë¤ï¤¿¤Ã¤Æ³Ø½¬¤µ¤»¤¿·ë²Ì¡¢Ì¤ÃΤΥǡ¼¥¿¤ËÂФ¹¤ëÊ¿¶ÑÀäÂÐ¸íº¹(MAE)¤Ï33.0Ëü¥Ý¥ó¥É(Ìó6600Ëü±ß)¤È¤Ê¤ê¤Þ¤·¤¿¡£Ê¿¶ÑÀäÂÐ¸íº¹Î¨(MAPE)¤Ï18.6¡ó¤Ç¤¢¤ê¡¢Í½Â¬ÃÍ¤Î¸íº¹¤¬10.0¡ó°ÊÆâ¤Ë¼ý¤Þ¤Ã¤¿¥±¡¼¥¹¤ÏÁ´ÂΤÎ37.0¡ó¤À¤Ã¤¿¤ÈObyte»á¤ÏÊó¹ð¤·¤Æ¤¤¤Þ¤¹¡£
¤³¤³¤Þ¤Ç¤Î½èÍý¥×¥í¥»¥¹¤ò·Ð¤Æ¡¢¥Ç¡¼¥¿¤Î½àÈ÷¤«¤é·±Îý¡¢É¾²Á¤Þ¤Ç¤ò°ì´Ó¤·¤Æ¹Ô¤¨¤ë¤Î¤¬PyTorch¤ÎÆÃħ¡£¤¿¤À¤·¡¢Obyte»á¤Ï¡ÖºÇ½ªÅª¤ÊÀºÅ٤ϥâ¥Ç¥ë¤Î¹½Â¤°Ê¾å¤Ë¡¢Å¬ÀÚ¤ÊÆÃħÎÌ(¥Ç¡¼¥¿)¤Î¼Á¤Ë°Í¸¤·¤Þ¤¹¡£¤³¤ì¤¬µ¡³£³Ø½¬¤Î¸½¼Â¤Ç¤¹¡×¤È½Ò¤Ù¤Æ¤¤¤Þ¤¹¡£
