{"id":297,"date":"2024-10-23T21:23:10","date_gmt":"2024-10-23T13:23:10","guid":{"rendered":"https:\/\/eve2333.top\/?p=297"},"modified":"2024-10-23T21:23:10","modified_gmt":"2024-10-23T13:23:10","slug":"googlenet%e5%8e%9f%e7%90%86%e4%b8%8e%e5%ae%9e%e6%88%98","status":"publish","type":"post","link":"https:\/\/eve2333.top\/?p=297","title":{"rendered":"GoogleNet\u539f\u7406\u4e0e\u5b9e\u6218"},"content":{"rendered":"\n<p>\u57282014\u5e74\u7684ImageNet\u56fe\u50cf\u8bc6\u522b\u6311\u6218\u8d5b\u4e2d\uff0c\u4e00\u4e2a\u540d\u53ebGoogLeNet \u7684\u7f51\u7edc\u67b6\u6784\u5927\u653e\u5f02\u5f69\u3002\u4ee5\u524d\u6d41\u884c\u7684\u7f51\u7edc\u4f7f\u7528\u5c0f\u52301\u00d71\uff0c\u5927\u52307\u00d77\u7684\u5377\u79ef\u6838\u3002\u672c\u6587\u7684\u4e00\u4e2a\u89c2\u70b9\u662f\uff0c\u6709\u65f6\u4f7f\u7528\u4e0d\u540c\u5927\u5c0f\u7684\u5377\u79ef\u6838\u7ec4\u5408\u662f\u6709\u5229\u7684\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"579\" height=\"241\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688045-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205035.png\" alt=\"\" class=\"wp-image-298\" style=\"width:549px;height:auto\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688045-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205035.png 579w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688045-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205035-300x125.png 300w\" sizes=\"auto, (max-width: 579px) 100vw, 579px\" \/><\/figure>\n\n\n\n<p>\u5728GoogLeNet\u4e2d\uff0c\u57fa\u672c\u7684\u5377\u79ef\u5757\u88ab\u79f0\u4e3aInception\u5757(Inception block)\u3002\u8fd9\u5f88\u53ef\u80fd\u5f97\u540d\u4e8e\u7535\u5f71\u300a\u76d7\u68a6\u7a7a\u95f4\u300b(Inception),\u56e0\u4e3a\u7535\u5f71\u4e2d\u7684\u4e00\u53e5\u8bdd\"\u6211\u4eec\u9700\u8981\u8d70\u5f97\u66f4\u6df1\"(\"We needto go deeper\") \u3002Inception\u5757\u7531\u56db\u6761\u5e76\u884c\u8def\u5f84\u7ec4\u6210\u3002\u524d\u4e09\u6761\u8def\u5f84\u4f7f\u7528\u7a97\u53e3\u5927\u5c0f\u4e3a1x1\u30013x3\u548c5x5\u7684\u5377\u79ef\u5c42\uff0c\u4ece\u4e0d\u540c\u7a7a\u95f4\u5927\u5c0f\u4e2d\u63d0\u53d6\u4fe1\u606f\u3002\u4e2d\u95f4\u7684\u4e24\u6761\u8def\u5f84\u5728\u8f93\u5165\u4e0a\u6267\u884c1x1\u5377\u79ef\uff0c\u4ee5\u51cf\u5c11\u901a\u9053\u6570\uff0c\u4ece\u800c\u964d\u4f4e\u6a21\u578b\u7684\u590d\u6742\u6027\u3002\u7b2c\u56db\u6761\u8def\u5f84\u4f7f\u75283x3\u6700\u5927\u6c60\u5316\u5c42\uff0c\u7136\u540e\u4f7f\u75281x1\u5377\u79ef\u5c42\u6765\u6539\u53d8\u901a\u9053\u6570\u3002\u8fd9\u56db\u6761\u8def\u5f84\u90fd\u4f7f\u7528\u5408\u9002\u7684\u586b\u5145\u6765\u4f7f\u8f93\u5165\u4e0e\u8f93\u51fa\u7684\u9ad8\u548c\u5bbd\u4e00\u81f4,\u6700\u540e\u6211\u4eec\u5c06\u6bcf\u6761\u7ebf\u8def\u7684\u8f93\u51fa\u5728\u901a\u9053\u7ef4\u5ea6\u4e0a\u8fde\u7ed3\uff0c\u5e76\u6784\u6210Inception\u5757\u7684\u8f93\u51fa\u3002\u5728Inception\u5757\u4e2d\uff0c\u901a\u5e38\u8c03\u6574\u7684\u8d85\u53c2\u6570\u662f\u6bcf\u5c42\u8f93\u51fa\u901a\u9053\u6570<\/p>\n\n\n\n<p>\u00a0\u56de\u5230\u4ed6\u90a3\u4e2a\u56fe\u91cc\u9762\u4f60\u4f1a\u53d1\u73b0,\u8fd9\u91cc\u7684\u4e00\u4e2a\u901a\u8fc7\u6211\u4eec\u6700\u5927\u7684\u6c60\u5316\u8f93\u51fa\u7684\u7279\u5f81\u56fe,\u6709\u56db\u6761\u7ebf.\u8fd9\u4e2a\u662f1\u00d71\u7684\u5377\u79ef,\u8fd9\u91cc\u8fd8\u662f1\u00d71\u7684\u5377\u79ef,\u4e4b\u540e\u5462\u505a3\u00d73\u7684\u5377\u79ef,\u7136\u540e\u8fd9\u91cc1\u00d71\u7684\u5377\u79ef\u518d\u505a5\u00d75\u7684\u5377\u79ef,\u7136\u540e\u8fd9\u91cc\u8fd8\u6709\u4e00\u4e2a3*3\u00d73\u7684\u6700\u5927\u6c60\u5316<strong>\u6211\u4eec1\u00d71\u5728\u6bcf\u4e2a\u8def\u5f84\u5f53\u4e2d\u554a\u90fd\u7528\u5230\u4e86<\/strong>.\u56db\u4e2a\u8def\u5f84\u8f93\u51fa\u4e4b\u540e\u505a\u4e2acomcat\u7684\u64cd\u4f5c\u5373----\u6309\u901a\u9053\u7684\u65b9\u5411\u8fdb\u884c\u878d\u5408<img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"259\" class=\"wp-image-299\" style=\"width: 400px;\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688259-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205728.png\" alt=\"\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688259-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205728.png 740w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688259-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205728-300x195.png 300w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/p>\n\n\n\n<p>\u901a\u9053\u5728\u7ef4\u5ea6\u4e0a\u8fde\u63a5\u4ec0\u4e48\u610f\u601d\u5462???\u524d\u9762\u6240\u8bb2\u901a\u8fc7\u586b\u5145\u548c\u4e0d\u7b26\u6765\u4f7f\u8f93\u5165\u548c\u8f93\u51fa\u7684\u901a\u9053\u6570\u9ad8\u548c\u5bbd\u4e00\u81f4,\u7d2f\u52a0\u64cd\u4f5c\u53ef\u4ee5\u5408\u6210224*224*100\u7684\u56fe\u7247<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7f51\u7edc\u7ed3\u6784<\/h2>\n\n\n\n<p>\u8f93\u5165\u4e3a224x224x3\u4e09\u901a\u9053\u7684\u56fe\u50cf\u3002<br><strong>\u8def\u5f841\uff1a<\/strong><br>(1)\u8f93\u5165\u4e3a224x224x3,\u5377\u79ef\u6838\u6570\u91cf\u4e3a64\u4e2a\uff1b\u5377\u79ef\u6838\u7684\u5c3a\u5bf8\u5927\u5c0f\u4e3a1x1x3;\u6b65\u5e45\u4e3a1 (stride=l),\u586b\u5145\u4e3a0(padding=0)\uff1b\u5377\u79ef\u540e\u5f97\u5230shape\u4e3a224x224x64\u7684\u7279\u5f81\u56fe\u8f93\u51fa,<br><strong>\u8def\u5f842:<\/strong><br>(1) \u8f93\u5165\u4e3a224x224x3,\u5377\u79ef\u6838\u6570\u91cf\u4e3a96\u4e2a;\u5377\u79ef\u6838\u7684\u5c3a\u5bf8\u5927\u5c0f\u4e3a1x1x3;\u6b65\u5e45\u4e3a1 (stride = 1),\u586b\u5145\u4e3a96(padding=96)\uff1b\u5377\u79ef\u540e\u5f97\u5230shape\u4e3a224x224x64\u7684\u7279\u5f81\u56fe\u8f93\u51fa\u3002<br>(2)\u8f93\u5165\u4e3a224x224x96,\u5377\u79ef\u6838\u6570\u91cf\u4e3a128\u4e2a\uff1b\u5377\u79ef\u6838\u7684\u5c3a\u5bf8\u5927\u5c0f\u4e3a3X3X \uff1b\u6b65\u5e45\u4e3a1 (stride =1),\u586b\u5145\u4e3a1 (padding=1)\uff1b\u5377\u79ef\u540e\u5f97\u5230shape\u4e3a224x224x128\u7684\u7279\u5f81\u56fe\u8f93\u51fa\u3002<br><strong>\u8def\u5f843\uff1a<\/strong><br>(1)\u8f93\u5165\u4e3a224x224x3,\u5377\u79ef\u6838\u6570\u91cf\u4e3a16\u4e2a\uff1b\u5377\u79ef\u6838\u7684\u5c3a\u5bf8\u5927\u5c0f\u4e3a1x1x3;\u6b65\u5e45\u4e3a1 (stride = 1),\u586b\u5145\u4e3a0 (padding=0)\uff1b\u5377\u79ef\u540e\u5f97\u81f3ijshape\u4e3a224x224x16\u7684\u7279\u5f81\u56fe\u8f93\u51fa\u3002<br>(2)\u8f93\u5165\u4e3a224x224x16,\u5377\u79ef\u6838\u6570\u91cf\u4e3a32\u4e2a\uff1b\u5377\u79ef\u6838\u7684\u5c3a\u5bf8\u5927\u5c0f\u4e3a5x5x16\uff1b\u6b65\u5e45\u4e3a1 (stride=1),\u586b\u5145\u4e3a2 ( padding=2 )\uff1b\u5377\u79ef\u540e\u5f97\u5230shape\u4e3a224x224x32\u7684\u7279\u5f81\u56fe\u8f93\u51fa\u3002<br><strong>\u8def\u5f844\uff1a<\/strong><br>(1)\u8f93\u5165\u4e3a224x224x3,\u6c60\u5316\u6838\u7684\u5c3a\u5bf8\u5927\u5c0f\u4e3a3x3\uff1b\u6b65\u5e45\u4e3a 1 (stride = 1),\u586b\u5145\u4e3a 1 (padding=l)\uff1b\u6c60\u5316\u540e\u5f97shape\u4e3a224x224x3\u7684\u7279\u5f81\u56fe\u8f93\u51fa\u3002<br>(2)\u8f93\u5165\u4e3a224x224x3,\u5377\u79ef\u6838\u6570\u91cf\u4e3a32\u4e2a\uff1b\u5377\u79ef\u6838\u7684\u5c3a\u5bf8\u5927\u5c0f\u4e3a1x1x3;\u6b65\u5e45\u4e3a1 (stride = 1),\u586b\u5145\u4e3a0 (padding=0)\uff1b\u5377\u79ef\u540e\u5f97\u5230shape\u4e3a224x224x32\u7684\u7279\u5f81\u56fe\u8f93\u51fa<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"535\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688495-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205905-1024x535.png\" alt=\"\" class=\"wp-image-300\" style=\"width:593px;height:auto\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688495-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205905-1024x535.png 1024w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688495-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205905-300x157.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688495-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205905-768x402.png 768w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688495-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205905.png 1046w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u00a01\u00d71\u7684\u5377\u79ef<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"975\" height=\"248\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688527-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205912.png\" alt=\"\" class=\"wp-image-301\" style=\"width:735px;height:auto\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688527-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205912.png 975w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688527-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205912-300x76.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688527-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205912-768x195.png 768w\" sizes=\"auto, (max-width: 975px) 100vw, 975px\" \/><\/figure>\n\n\n\n<p>\u00a0\u8f93\u516528\u00d728\u4e58192\u7279\u5f81\u56fe.\u5047\u5982\u6211\u4eec\u5377\u79ef\u6838\u53ea\u6709\u4e00\u4e2a\u7684\u8bdd,\u4e0d\u505c\u7684\u4e00\u4e2a\u4e00\u4e2a\u518d\u505a\u5377\u79ef\u8fd0\u7b97,\u8f93\u51fa\u4e00\u767e\u4e5d\u5341\u4e8c\u4e2a,\u518d\u628a\u8fd9\u4e2a192\u4e2a\u5377\u79ef\u8fd0\u7b97\u7684\u7ed3\u679c\u8fdb\u884c\u4e00\u4e2a\u76f8\u52a0,\u8f93\u51fa\u662f\u4e00\u5f20\u7279\u5f81\u56fe\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u5982\u679c\u554a\u5982\u679c\u4f60\u8fd9\u91cc\u670932\u4e2a\u5377\u79ef\u6838,\u8f93\u51fa\u7684\u7279\u5f81\u56fe\u80af\u5b9a\u662f32\u561b,\u8f93\u51fa\u7684\u662f\u4e00\u5f20\u5377\u79ef\u4e00\u5f20\u7279\u5f81\u56fe,\u8fd9\u91cc\u7684\u4e00\u5f20\u7279\u5f81\u56fe\u5176\u5b9e\u662f\u5305\u542b\u5728\u524d\u9762192\u4e2a\u7279\u5f81\u56fe\u7684\u6240\u6709\u7684\u4fe1\u606f,\u6210\u4e86\u4ec0\u4e48\u8de8\u901a\u9053\u7684\u4ea4\u4e92\u548c\u4fe1\u606f\u6574\u5408\u4e86.\u6bcf32\u4e2a\u8fd9\u4e2a\u7279\u5f81\u56fe\u91cc\u9762,\u6bcf\u5f20\u90fd\u5305\u542b\u4e86\u524d\u9762192\u4e2a\u901a\u9053\u91cc\u9762\u7684\u6240\u6709\u7684\u4fe1\u606f\u561b<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1007\" height=\"353\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688543-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205927.png\" alt=\"\" class=\"wp-image-302\" style=\"width:685px;height:auto\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688543-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205927.png 1007w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688543-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205927-300x105.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688543-\u5c4f\u5e55\u622a\u56fe-2024-10-23-205927-768x269.png 768w\" sizes=\"auto, (max-width: 1007px) 100vw, 1007px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u00a0\u5168\u5c40\u5e73\u5747\u6c60\u5316\u5c42GAP<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"776\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688909-\u5c4f\u5e55\u622a\u56fe-2024-10-23-210818-1024x776.png\" alt=\"\" class=\"wp-image-303\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688909-\u5c4f\u5e55\u622a\u56fe-2024-10-23-210818-1024x776.png 1024w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688909-\u5c4f\u5e55\u622a\u56fe-2024-10-23-210818-300x227.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688909-\u5c4f\u5e55\u622a\u56fe-2024-10-23-210818-768x582.png 768w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688909-\u5c4f\u5e55\u622a\u56fe-2024-10-23-210818-1536x1164.png 1536w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688909-\u5c4f\u5e55\u622a\u56fe-2024-10-23-210818.png 1840w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u9700\u89818\u5206\u949f\u7684\u89e3\u91ca<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"651\" height=\"2915\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688950-7f75b36c41e1447d9921c0d891e21fb3.png\" alt=\"\" class=\"wp-image-304\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688950-7f75b36c41e1447d9921c0d891e21fb3.png 651w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688950-7f75b36c41e1447d9921c0d891e21fb3-67x300.png 67w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688950-7f75b36c41e1447d9921c0d891e21fb3-229x1024.png 229w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729688950-7f75b36c41e1447d9921c0d891e21fb3-343x1536.png 343w\" sizes=\"auto, (max-width: 651px) 100vw, 651px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">\u7f51\u7edc\u53c2\u6570<\/h1>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"953\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689469-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211738-1024x953.png\" alt=\"\" class=\"wp-image-305\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689469-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211738-1024x953.png 1024w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689469-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211738-300x279.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689469-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211738-768x715.png 768w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689469-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211738.png 1045w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u901a\u9053\u5408\u5e76\uff1a<br>\u8def\u5f841\u7684\u5230\u8f93\u51fa\u4e3a\uff1a 28\u00d728\u00d764<br>\u8def\u5f842\u7684\u5230\u8f93\u51fa\u4e3a\uff1a 28\u00d728\u00d7128<br>\u8def\u5f843\u7684\u5230\u8f93\u51fa\u4e3a\uff1a 28\u00d728\u00d732<br>\u8def\u5f844\u7684\u5230\u8f93\u51fa\u4e3a\uff1a 28\u00d728x32<br>\u6700\u7ec8\u901a\u9053\u5408\u5e76\u4e3a64+128+32+32=256\uff0c \u6700\u7ec8\u7684\u8f93\u51fa\u4e3a\uff1a28\u00d728\u00d7256.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689537-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211801-1024x512.png\" alt=\"\" class=\"wp-image-306\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689537-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211801-1024x512.png 1024w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689537-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211801-300x150.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689537-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211801-768x384.png 768w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689537-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211801.png 1039w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u901a\u9053\u5408\u5e76\uff1a<br>\u8def\u5f841\u7684\u5230\u8f93\u51fa\u4e3a\uff1a28\u00d728\u00d7128\u00a0<br>\u8def\u5f842\u7684\u5230\u8f93\u51fa\u4e3a\uff1a28\u00d728\u00d7192\u00a0 \u00a0<br>\u8def\u5f843\u7684\u5230\u8f93\u51fa\u4e3a\uff1a28\u00d728\u00d796\u00a0 \u00a0 \u00a0 \u00a0 \u00a0<br>\u8def\u5f844\u7684\u5230\u8f93\u51fa\u4e3a\uff1a28\u00d728\u00d764<br>\u6700\u7ec8\u901a\u9053\u5408\u5e76\u4e3a128+192+96+64=480\uff0c\u6700\u7ec8\u7684\u8f93\u51fa\u4e3a28\u00d728\u00d7480\u3002<\/p>\n\n\n\n<p>\u6700\u5927\u6c60\u5316\u6a21\u5757\uff1a<br>\u8f93\u5165\u4e3a28\u00d728\u00d7480\u3002\u6c60\u5316\u6838\u7684\u5c3a\u5bf8\u5927\u5c0f\u4e3a3\u00d73\uff1b\u6b65\u5e45\u4e3a2(stride = 2)\uff0c\u586b\u5145\u4e3a1(padding=1);\u6c60\u5316\u540e\u5f97\u5230shape \u4e3a14\u00d714\u00d7480\u7684\u7279\u5f81\u56fe\u8f93\u51fa\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1036\" height=\"1006\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689582-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211814.png\" alt=\"\" class=\"wp-image-307\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689582-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211814.png 1036w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689582-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211814-300x291.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689582-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211814-1024x994.png 1024w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689582-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211814-768x746.png 768w\" sizes=\"auto, (max-width: 1036px) 100vw, 1036px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1043\" height=\"1021\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689590-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211822.png\" alt=\"\" class=\"wp-image-308\" style=\"width:840px;height:auto\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689590-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211822.png 1043w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689590-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211822-300x294.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689590-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211822-1024x1002.png 1024w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689590-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211822-768x752.png 768w\" sizes=\"auto, (max-width: 1043px) 100vw, 1043px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1060\" height=\"1005\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689616-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211834.png\" alt=\"\" class=\"wp-image-309\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689616-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211834.png 1060w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689616-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211834-300x284.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689616-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211834-1024x971.png 1024w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689616-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211834-768x728.png 768w\" sizes=\"auto, (max-width: 1060px) 100vw, 1060px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1058\" height=\"499\" src=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689624-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211840.png\" alt=\"\" class=\"wp-image-310\" srcset=\"https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689624-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211840.png 1058w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689624-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211840-300x141.png 300w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689624-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211840-1024x483.png 1024w, https:\/\/eve2333.top\/wp-content\/uploads\/2024\/10\/1729689624-\u5c4f\u5e55\u622a\u56fe-2024-10-23-211840-768x362.png 768w\" sizes=\"auto, (max-width: 1058px) 100vw, 1058px\" \/><\/figure>\n\n\n\n<p>\u6700\u540e\u5168\u5c40\u5e73\u5747\u6c60\u5316\u6a21\u5757\uff1a\u8f93\u5165\u4e3a7\u00d77\u00d71024\u3002\u6c60\u5316\u540e\u5f97\u5230shape\u4e3a1\u00d71\u00d71024\u7684\u7279\u5f81\u56fe\u8f93\u51fa\u3002<br>Flatten\u5c42\uff1a\u8f93\u5165\u4e3a1\u00d71\u00d71024\uff0c\u8f93\u51fa\u4e3a1\u00d71024<br>\u7ebf\u6027\u5168\u8fde\u63a5\u5c42\uff1a\u8f93\u5165\u4e3a1\u00d71024\u3002\u7ebf\u6027\u5168\u8fde\u63a5\u5c42\u795e\u7ecf\u5143\u4e2a\u6570\u5206\u522b\u4e3a1000\u3002\u6700\u540e\u4e00\u5c42\u5168\u8fde\u63a5\u5c42\u7528softmax\u8f93\u51fa1000\u4e2a\u5206\u7c7b\u3002\u5171\u8ba11.38\u4ebf\u7684\u53c2\u6570<\/p>\n\n\n\n<p>model.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import torch\nfrom torch import nn\nfrom torchsummary import summary\n\n\nclass Inception(nn.Module):\n    def __init__(self, in_channels, c1, c2, c3, c4):\n        super(Inception, self).__init__()\n        self.ReLU = nn.ReLU()\n\n        # \u8def\u7ebf1\uff0c\u53551\u00d71\u5377\u79ef\u5c42\n        self.p1_1 = nn.Conv2d(in_channels=in_channels, out_channels=c1, kernel_size=1)\n\n        # \u8def\u7ebf2\uff0c1\u00d71\u5377\u79ef\u5c42, 3\u00d73\u7684\u5377\u79ef\n        self.p2_1 = nn.Conv2d(in_channels=in_channels, out_channels=c2&#91;0], kernel_size=1)\n        self.p2_2 = nn.Conv2d(in_channels=c2&#91;0], out_channels=c2&#91;1], kernel_size=3, padding=1)\n\n        # \u8def\u7ebf3\uff0c1\u00d71\u5377\u79ef\u5c42, 5\u00d75\u7684\u5377\u79ef\n        self.p3_1 = nn.Conv2d(in_channels=in_channels, out_channels=c3&#91;0], kernel_size=1)\n        self.p3_2 = nn.Conv2d(in_channels=c3&#91;0], out_channels=c3&#91;1], kernel_size=5, padding=2)\n\n        # \u8def\u7ebf4\uff0c3\u00d73\u7684\u6700\u5927\u6c60\u5316, 1\u00d71\u7684\u5377\u79ef\n        self.p4_1 = nn.MaxPool2d(kernel_size=3, padding=1, stride=1)\n        self.p4_2 = nn.Conv2d(in_channels=in_channels, out_channels=c4, kernel_size=1)\n\n    def forward(self, x):\n        p1 = self.ReLU(self.p1_1(x))\n        p2 = self.ReLU(self.p2_2(self.ReLU(self.p2_1(x))))\n        p3 = self.ReLU(self.p3_2(self.ReLU(self.p3_1(x))))\n        p4 = self.ReLU(self.p4_2(self.p4_1(x)))\n\n        #print(p1.shape, p2.shape, p3.shape, p4.shape)\n        return torch.cat((p1, p2, p3, p4), dim=1)\n        # \u8f93\u51fa\u7ed3\u6784\u662f\uff08batchsize, channel, Hout, Wout)\uff0c\u6240\u4ee5dim\u662f1\n\n\nclass GoogLeNet(nn.Module):\n    def __init__(self, Inception):\n        super(GoogLeNet, self).__init__()\n        # \u76f4\u63a5\u5f04\u4e86\uff0c\u5f04\u4e2a\u5757\u592a\u9ebb\u70e6\u4e86\n        self.b1 = nn.Sequential(\n            nn.Conv2d(in_channels=1, out_channels=64, kernel_size=7, stride=2, padding=3),\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=3, stride=2, padding=1))\n        # \u76ee\u524d\u505a\u7684\u7070\u5ea6\u56fe\uff0c\u5355\u901a\u9053\uff0c\u540e\u7eed\u518d\u6539\u5c31\u884c\u4e86\n\n        self.b2 = nn.Sequential(\n            nn.Conv2d(in_channels=64, out_channels=64, kernel_size=1),\n            nn.ReLU(),\n            nn.Conv2d(in_channels=64, out_channels=192, kernel_size=3, padding=1),\n            nn.ReLU(),\n            nn.MaxPool2d(kernel_size=3, stride=2, padding=1))\n        # \u5c40\u90e8\u89c4\u5212\u6ca1\u4ec0\u4e48\u7528\u4e0d\u5199\u4e86\n\n        self.b3 = nn.Sequential(\n            Inception(192, 64, (96, 128), (16, 32), 32),\n            Inception(256, 128, (128, 192), (32, 96), 64),\n            nn.MaxPool2d(kernel_size=3, stride=2, padding=1))\n\n        self.b4 = nn.Sequential(\n            Inception(480, 192, (96, 208), (16, 48), 64),\n            Inception(512, 160, (112, 224), (24, 64), 64),\n            Inception(512, 128, (128, 256), (24, 64), 64),\n            Inception(512, 112, (128, 288), (32, 64), 64),\n            Inception(528, 256, (160, 320), (32, 128), 128),\n            nn.MaxPool2d(kernel_size=3, stride=2, padding=1))\n        # \u94fe\u5f0f\u6c42\u5bfc\u5bfc\u81f4\u7684\u8d8b0\u5316\n\n        self.b5 = nn.Sequential(\n            Inception(832, 256, (160, 320), (32, 128), 128),\n            Inception(832, 384, (192, 384), (48, 128), 128),\n            nn.AdaptiveAvgPool2d((1, 1)),\n            nn.Flatten(),\n            nn.Linear(1024, 10))\n        # \u7ecf\u8fc7\u8f93\u51fa\u662fH*W*1024\uff0c\u5168\u5c40\u6c60\u5316\u540e\u5c31\u662f1*1*1024\n\n        for m in self.modules():\n            if isinstance(m, nn.Conv2d):\n                nn.init.kaiming_normal_(m.weight, mode=\"fan_out\", nonlinearity='relu')\n                if m.bias is not None:\n                    nn.init.constant_(m.bias, 0)\n\n            elif isinstance(m, nn.Linear):\n                nn.init.normal_(m.weight, 0, 0.01)\n                if m.bias is not None:\n                    nn.init.constant_(m.bias, 0)\n\n    #\u524d\u5411\u4f20\u64ad\n    def forward(self, x):\n        x = self.b1(x)\n        x = self.b2(x)\n        x = self.b3(x)\n        x = self.b4(x)\n        x = self.b5(x)\n        return x\n\n\nif __name__ == \"__main__\":\n    device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n    model = GoogLeNet(Inception).to(device)\n    print(summary(model, (1, 224, 224)))<\/code><\/pre>\n\n\n\n<p>model_train.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import copy\nimport time\n\nimport torch\nfrom torchvision.datasets import FashionMNIST\nfrom torchvision import transforms\nimport torch.utils.data as Data\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom model import GoogLeNet, Inception\nimport torch.nn as nn\nimport pandas as pd\n\n\ndef train_val_data_process():\n    train_data = FashionMNIST(root='.\/data',\n                              train=True,\n                              transform=transforms.Compose(&#91;transforms.Resize(size=224), transforms.ToTensor()]),\n                              download=True)\n\n    train_data, val_data = Data.random_split(train_data, &#91;round(0.8*len(train_data)), round(0.2*len(train_data))])\n    train_dataloader = Data.DataLoader(dataset=train_data,\n                                       batch_size=32,\n                                       shuffle=True,\n                                       num_workers=2)\n\n    val_dataloader = Data.DataLoader(dataset=val_data,\n                                       batch_size=32,\n                                       shuffle=True,\n                                       num_workers=2)\n\n    return train_dataloader, val_dataloader\n\n\ndef train_model_process(model, train_dataloader, val_dataloader, num_epochs):\n    # \u8bbe\u5b9a\u8bad\u7ec3\u6240\u7528\u5230\u7684\u8bbe\u5907\uff0c\u6709GPU\u7528GPU\u6ca1\u6709GPU\u7528CPU\n    device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n    # \u4f7f\u7528Adam\u4f18\u5316\u5668\uff0c\u5b66\u4e60\u7387\u4e3a0.001\n    optimizer = torch.optim.Adam(model.parameters(), lr=0.001)\n    # \u635f\u5931\u51fd\u6570\u4e3a\u4ea4\u53c9\u71b5\u51fd\u6570\n    criterion = nn.CrossEntropyLoss()\n    # \u5c06\u6a21\u578b\u653e\u5165\u5230\u8bad\u7ec3\u8bbe\u5907\u4e2d\n    model = model.to(device)\n    # \u590d\u5236\u5f53\u524d\u6a21\u578b\u7684\u53c2\u6570\n    best_model_wts = copy.deepcopy(model.state_dict())\n\n    # \u521d\u59cb\u5316\u53c2\u6570\n    # \u6700\u9ad8\u51c6\u786e\u5ea6\n    best_acc = 0.0\n    # \u8bad\u7ec3\u96c6\u635f\u5931\u5217\u8868\n    train_loss_all = &#91;]\n    # \u9a8c\u8bc1\u96c6\u635f\u5931\u5217\u8868\n    val_loss_all = &#91;]\n    # \u8bad\u7ec3\u96c6\u51c6\u786e\u5ea6\u5217\u8868\n    train_acc_all = &#91;]\n    # \u9a8c\u8bc1\u96c6\u51c6\u786e\u5ea6\u5217\u8868\n    val_acc_all = &#91;]\n    # \u5f53\u524d\u65f6\u95f4\n    since = time.time()\n\n    for epoch in range(num_epochs):\n        print(\"Epoch {}\/{}\".format(epoch, num_epochs-1))\n        print(\"-\"*10)\n\n        # \u521d\u59cb\u5316\u53c2\u6570\n        # \u8bad\u7ec3\u96c6\u635f\u5931\u51fd\u6570\n        train_loss = 0.0\n        # \u8bad\u7ec3\u96c6\u51c6\u786e\u5ea6\n        train_corrects = 0\n        # \u9a8c\u8bc1\u96c6\u635f\u5931\u51fd\u6570\n        val_loss = 0.0\n        # \u9a8c\u8bc1\u96c6\u51c6\u786e\u5ea6\n        val_corrects = 0\n        # \u8bad\u7ec3\u96c6\u6837\u672c\u6570\u91cf\n        train_num = 0\n        # \u9a8c\u8bc1\u96c6\u6837\u672c\u6570\u91cf\n        val_num = 0\n\n        # \u5bf9\u6bcf\u4e00\u4e2amini-batch\u8bad\u7ec3\u548c\u8ba1\u7b97\n        for step, (b_x, b_y) in enumerate(train_dataloader):\n            # \u5c06\u7279\u5f81\u653e\u5165\u5230\u8bad\u7ec3\u8bbe\u5907\u4e2d\n            b_x = b_x.to(device)\n            # \u5c06\u6807\u7b7e\u653e\u5165\u5230\u8bad\u7ec3\u8bbe\u5907\u4e2d\n            b_y = b_y.to(device)\n            # \u8bbe\u7f6e\u6a21\u578b\u4e3a\u8bad\u7ec3\u6a21\u5f0f\n            model.train()\n\n            # \u524d\u5411\u4f20\u64ad\u8fc7\u7a0b\uff0c\u8f93\u5165\u4e3a\u4e00\u4e2abatch\uff0c\u8f93\u51fa\u4e3a\u4e00\u4e2abatch\u4e2d\u5bf9\u5e94\u7684\u9884\u6d4b\n            output = model(b_x)\n            # \u67e5\u627e\u6bcf\u4e00\u884c\u4e2d\u6700\u5927\u503c\u5bf9\u5e94\u7684\u884c\u6807\n            pre_lab = torch.argmax(output, dim=1)\n            # \u8ba1\u7b97\u6bcf\u4e00\u4e2abatch\u7684\u635f\u5931\u51fd\u6570\n            loss = criterion(output, b_y)\n\n            # \u5c06\u68af\u5ea6\u521d\u59cb\u5316\u4e3a0\n            optimizer.zero_grad()\n            # \u53cd\u5411\u4f20\u64ad\u8ba1\u7b97\n            loss.backward()\n            # \u6839\u636e\u7f51\u7edc\u53cd\u5411\u4f20\u64ad\u7684\u68af\u5ea6\u4fe1\u606f\u6765\u66f4\u65b0\u7f51\u7edc\u7684\u53c2\u6570\uff0c\u4ee5\u8d77\u5230\u964d\u4f4eloss\u51fd\u6570\u8ba1\u7b97\u503c\u7684\u4f5c\u7528\n            optimizer.step()\n            # \u5bf9\u635f\u5931\u51fd\u6570\u8fdb\u884c\u7d2f\u52a0\n            train_loss += loss.item() * b_x.size(0)\n            # \u5982\u679c\u9884\u6d4b\u6b63\u786e\uff0c\u5219\u51c6\u786e\u5ea6train_corrects\u52a01\n            train_corrects += torch.sum(pre_lab == b_y.data)\n            # \u5f53\u524d\u7528\u4e8e\u8bad\u7ec3\u7684\u6837\u672c\u6570\u91cf\n            train_num += b_x.size(0)\n        for step, (b_x, b_y) in enumerate(val_dataloader):\n            # \u5c06\u7279\u5f81\u653e\u5165\u5230\u9a8c\u8bc1\u8bbe\u5907\u4e2d\n            b_x = b_x.to(device)\n            # \u5c06\u6807\u7b7e\u653e\u5165\u5230\u9a8c\u8bc1\u8bbe\u5907\u4e2d\n            b_y = b_y.to(device)\n            # \u8bbe\u7f6e\u6a21\u578b\u4e3a\u8bc4\u4f30\u6a21\u5f0f\n            model.eval()\n            # \u524d\u5411\u4f20\u64ad\u8fc7\u7a0b\uff0c\u8f93\u5165\u4e3a\u4e00\u4e2abatch\uff0c\u8f93\u51fa\u4e3a\u4e00\u4e2abatch\u4e2d\u5bf9\u5e94\u7684\u9884\u6d4b\n            output = model(b_x)\n            # \u67e5\u627e\u6bcf\u4e00\u884c\u4e2d\u6700\u5927\u503c\u5bf9\u5e94\u7684\u884c\u6807\n            pre_lab = torch.argmax(output, dim=1)\n            # \u8ba1\u7b97\u6bcf\u4e00\u4e2abatch\u7684\u635f\u5931\u51fd\u6570\n            loss = criterion(output, b_y)\n\n\n            # \u5bf9\u635f\u5931\u51fd\u6570\u8fdb\u884c\u7d2f\u52a0\n            val_loss += loss.item() * b_x.size(0)\n            # \u5982\u679c\u9884\u6d4b\u6b63\u786e\uff0c\u5219\u51c6\u786e\u5ea6train_corrects\u52a01\n            val_corrects += torch.sum(pre_lab == b_y.data)\n            # \u5f53\u524d\u7528\u4e8e\u9a8c\u8bc1\u7684\u6837\u672c\u6570\u91cf\n            val_num += b_x.size(0)\n\n        # \u8ba1\u7b97\u5e76\u4fdd\u5b58\u6bcf\u4e00\u6b21\u8fed\u4ee3\u7684loss\u503c\u548c\u51c6\u786e\u7387\n        # \u8ba1\u7b97\u5e76\u4fdd\u5b58\u8bad\u7ec3\u96c6\u7684loss\u503c\n        train_loss_all.append(train_loss \/ train_num)\n        # \u8ba1\u7b97\u5e76\u4fdd\u5b58\u8bad\u7ec3\u96c6\u7684\u51c6\u786e\u7387\n        train_acc_all.append(train_corrects.double().item() \/ train_num)\n\n        # \u8ba1\u7b97\u5e76\u4fdd\u5b58\u9a8c\u8bc1\u96c6\u7684loss\u503c\n        val_loss_all.append(val_loss \/ val_num)\n        # \u8ba1\u7b97\u5e76\u4fdd\u5b58\u9a8c\u8bc1\u96c6\u7684\u51c6\u786e\u7387\n        val_acc_all.append(val_corrects.double().item() \/ val_num)\n\n        print(\"{} train loss:{:.4f} train acc: {:.4f}\".format(epoch, train_loss_all&#91;-1], train_acc_all&#91;-1]))\n        print(\"{} val loss:{:.4f} val acc: {:.4f}\".format(epoch, val_loss_all&#91;-1], val_acc_all&#91;-1]))\n\n        if val_acc_all&#91;-1] > best_acc:\n            # \u4fdd\u5b58\u5f53\u524d\u6700\u9ad8\u51c6\u786e\u5ea6\n            best_acc = val_acc_all&#91;-1]\n            # \u4fdd\u5b58\u5f53\u524d\u6700\u9ad8\u51c6\u786e\u5ea6\u7684\u6a21\u578b\u53c2\u6570\n            best_model_wts = copy.deepcopy(model.state_dict())\n\n        # \u8ba1\u7b97\u8bad\u7ec3\u548c\u9a8c\u8bc1\u7684\u8017\u65f6\n        time_use = time.time() - since\n        print(\"\u8bad\u7ec3\u548c\u9a8c\u8bc1\u8017\u8d39\u7684\u65f6\u95f4{:.0f}m{:.0f}s\".format(time_use\/\/60, time_use%60))\n\n    # \u9009\u62e9\u6700\u4f18\u53c2\u6570\uff0c\u4fdd\u5b58\u6700\u4f18\u53c2\u6570\u7684\u6a21\u578b\n    model.load_state_dict(best_model_wts)\n    # torch.save(model.load_state_dict(best_model_wts), \"C:\/Users\/86159\/Desktop\/LeNet\/best_model.pth\")\n    torch.save(best_model_wts, \".\/GoogLeNet\/best_model.pth\")\n\n\n    train_process = pd.DataFrame(data={\"epoch\":range(num_epochs),\n                                       \"train_loss_all\":train_loss_all,\n                                       \"val_loss_all\":val_loss_all,\n                                       \"train_acc_all\":train_acc_all,\n                                       \"val_acc_all\":val_acc_all,})\n\n    return train_process\n\n\ndef matplot_acc_loss(train_process):\n    # \u663e\u793a\u6bcf\u4e00\u6b21\u8fed\u4ee3\u540e\u7684\u8bad\u7ec3\u96c6\u548c\u9a8c\u8bc1\u96c6\u7684\u635f\u5931\u51fd\u6570\u548c\u51c6\u786e\u7387\n    plt.figure(figsize=(12, 4))\n    plt.subplot(1, 2, 1)\n    plt.plot(train_process&#91;'epoch'], train_process.train_loss_all, \"ro-\", label=\"Train loss\")\n    plt.plot(train_process&#91;'epoch'], train_process.val_loss_all, \"bs-\", label=\"Val loss\")\n    plt.legend()\n    plt.xlabel(\"epoch\")\n    plt.ylabel(\"Loss\")\n    plt.subplot(1, 2, 2)\n    plt.plot(train_process&#91;'epoch'], train_process.train_acc_all, \"ro-\", label=\"Train acc\")\n    plt.plot(train_process&#91;'epoch'], train_process.val_acc_all, \"bs-\", label=\"Val acc\")\n    plt.xlabel(\"epoch\")\n    plt.ylabel(\"acc\")\n    plt.legend()\n    plt.show()\n\n\nif __name__ == '__main__':\n    # \u52a0\u8f7d\u9700\u8981\u7684\u6a21\u578b\n    GoogLeNet = GoogLeNet(Inception)\n    # \u52a0\u8f7d\u6570\u636e\u96c6\n    train_data, val_data = train_val_data_process()\n    # \u5229\u7528\u73b0\u6709\u7684\u6a21\u578b\u8fdb\u884c\u6a21\u578b\u7684\u8bad\u7ec3\n    train_process = train_model_process(GoogLeNet, train_data, val_data, num_epochs=20)\n    matplot_acc_loss(train_process)<\/code><\/pre>\n\n\n\n<p>model.test.py<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import torch\nimport torch.utils.data as Data\nfrom torchvision import transforms\nfrom torchvision.datasets import FashionMNIST\nfrom model import GoogLeNet, Inception\n\n\n\ndef test_data_process():\n    test_data = FashionMNIST(root='.\/data',\n                              train=False,\n                              transform=transforms.Compose(&#91;transforms.Resize(size=224), transforms.ToTensor()]),\n                              download=True)\n\n    test_dataloader = Data.DataLoader(dataset=test_data,\n                                       batch_size=1,\n                                       shuffle=True,\n                                       num_workers=0)\n    return test_dataloader\n\n\ndef test_model_process(model, test_dataloader):\n    # \u8bbe\u5b9a\u6d4b\u8bd5\u6240\u7528\u5230\u7684\u8bbe\u5907\uff0c\u6709GPU\u7528GPU\u6ca1\u6709GPU\u7528CPU\n    device = \"cuda\" if torch.cuda.is_available() else 'cpu'\n\n    # \u8bb2\u6a21\u578b\u653e\u5165\u5230\u8bad\u7ec3\u8bbe\u5907\u4e2d\n    model = model.to(device)\n\n    # \u521d\u59cb\u5316\u53c2\u6570\n    test_corrects = 0.0\n    test_num = 0\n\n    # \u53ea\u8fdb\u884c\u524d\u5411\u4f20\u64ad\u8ba1\u7b97\uff0c\u4e0d\u8ba1\u7b97\u68af\u5ea6\uff0c\u4ece\u800c\u8282\u7701\u5185\u5b58\uff0c\u52a0\u5feb\u8fd0\u884c\u901f\u5ea6\n    with torch.no_grad():\n        for test_data_x, test_data_y in test_dataloader:\n            # \u5c06\u7279\u5f81\u653e\u5165\u5230\u6d4b\u8bd5\u8bbe\u5907\u4e2d\n            test_data_x = test_data_x.to(device)\n            # \u5c06\u6807\u7b7e\u653e\u5165\u5230\u6d4b\u8bd5\u8bbe\u5907\u4e2d\n            test_data_y = test_data_y.to(device)\n            # \u8bbe\u7f6e\u6a21\u578b\u4e3a\u8bc4\u4f30\u6a21\u5f0f\n            model.eval()\n            # \u524d\u5411\u4f20\u64ad\u8fc7\u7a0b\uff0c\u8f93\u5165\u4e3a\u6d4b\u8bd5\u6570\u636e\u96c6\uff0c\u8f93\u51fa\u4e3a\u5bf9\u6bcf\u4e2a\u6837\u672c\u7684\u9884\u6d4b\u503c\n            output= model(test_data_x)\n            # \u67e5\u627e\u6bcf\u4e00\u884c\u4e2d\u6700\u5927\u503c\u5bf9\u5e94\u7684\u884c\u6807\n            pre_lab = torch.argmax(output, dim=1)\n            # \u5982\u679c\u9884\u6d4b\u6b63\u786e\uff0c\u5219\u51c6\u786e\u5ea6test_corrects\u52a01\n            test_corrects += torch.sum(pre_lab == test_data_y.data)\n            # \u5c06\u6240\u6709\u7684\u6d4b\u8bd5\u6837\u672c\u8fdb\u884c\u7d2f\u52a0\n            test_num += test_data_x.size(0)\n\n    # \u8ba1\u7b97\u6d4b\u8bd5\u51c6\u786e\u7387\n    test_acc = test_corrects.double().item() \/ test_num\n    print(\"\u6d4b\u8bd5\u7684\u51c6\u786e\u7387\u4e3a\uff1a\", test_acc)\n\n\nif __name__ == \"__main__\":\n    # \u52a0\u8f7d\u6a21\u578b\n    model = GoogLeNet(Inception)\n    model.load_state_dict(torch.load('best_model.pth'))\n    # # \u5229\u7528\u73b0\u6709\u7684\u6a21\u578b\u8fdb\u884c\u6a21\u578b\u7684\u6d4b\u8bd5\n    test_dataloader = test_data_process()\n    test_model_process(model, test_dataloader)\n\n    # \u8bbe\u5b9a\u6d4b\u8bd5\u6240\u7528\u5230\u7684\u8bbe\u5907\uff0c\u6709GPU\u7528GPU\u6ca1\u6709GPU\u7528CPU\n    device = \"cuda\" if torch.cuda.is_available() else 'cpu'\n    model = model.to(device)\n    classes = &#91;'T-shirt\/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']\n    with torch.no_grad():\n        for b_x, b_y in test_dataloader:\n            b_x = b_x.to(device)\n            b_y = b_y.to(device)\n\n            # \u8bbe\u7f6e\u6a21\u578b\u4e3a\u9a8c\u8bc1\u6a21\u578b\n            model.eval()\n            output = model(b_x)\n            pre_lab = torch.argmax(output, dim=1)\n            result = pre_lab.item()\n            label = b_y.item()\n            print(\"\u9884\u6d4b\u503c\uff1a\",  classes&#91;result], \"------\", \"\u771f\u5b9e\u503c\uff1a\", classes&#91;label])<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u57282014\u5e74\u7684ImageNet\u56fe\u50cf\u8bc6\u522b\u6311\u6218\u8d5b\u4e2d\uff0c\u4e00\u4e2a\u540d\u53ebGoogLeNet \u7684\u7f51\u7edc\u67b6\u6784\u5927\u653e\u5f02\u5f69\u3002\u4ee5\u524d\u6d41\u884c\u7684\u7f51\u7edc\u4f7f\u7528\u5c0f\u52301\u00d71\uff0c\u5927\u5230 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"emotion":"","emotion_color":"","title_style":"","license":"","footnotes":""},"categories":[3,2],"tags":[9],"class_list":["post-297","post","type-post","status-publish","format-standard","hentry","category-3","category-2","tag-9"],"_links":{"self":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/posts\/297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=297"}],"version-history":[{"count":0,"href":"https:\/\/eve2333.top\/index.php?rest_route=\/wp\/v2\/posts\/297\/revisions"}],"wp:attachment":[{"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eve2333.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}