{"id":168,"date":"2022-01-24T11:05:24","date_gmt":"2022-01-24T03:05:24","guid":{"rendered":"https:\/\/scutvk.cn\/?p=168"},"modified":"2022-02-03T15:54:06","modified_gmt":"2022-02-03T07:54:06","slug":"pytorch%e5%ad%a6%e4%b9%a0%e8%ae%b0%e5%bd%953","status":"publish","type":"post","link":"https:\/\/scutvk.cn\/?p=168","title":{"rendered":"Pytorch\u5b66\u4e60\u8bb0\u5f55[3]"},"content":{"rendered":"\n<p>\u795e\u7ecf\u7f51\u7edc\u57fa\u672c\u9aa8\u67b6\u3001\u5377\u79ef<\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>P16:\u795e\u7ecf\u7f51\u7edc\u7684\u57fa\u672c\u9aa8\u67b6<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>\u7406\u8bba\uff1a<\/strong><\/p>\n\n\n\n<p>pytorch.nn\u7684Container<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"766\" src=\"https:\/\/x2.mday.top\/wp-content\/uploads\/2021\/10\/image-32-1024x766.png\" alt=\"\" class=\"wp-image-170\" srcset=\"https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-32-1024x766.png 1024w, https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-32-300x225.png 300w, https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-32-768x575.png 768w, https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-32-700x525.png 700w, https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-32-769x576.png 769w, https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-32.png 1276w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>\u56fe1<\/figcaption><\/figure><\/div>\n\n\n\n<p>\u5728<a rel=\"noreferrer noopener\" href=\"https:\/\/pytorch.org\/docs\/stable\/nn.html#containers\" target=\"_blank\">pytorch\u5b98\u7f51\u5173\u4e8enn\u7684\u5e2e\u52a9\u6587\u6863<\/a>\u53ef\u4ee5\u770b\u5230\uff0ctorch.nn\u5e2e\u6211\u4eec\u63d0\u4f9b\u4e86\u8bb8\u591a\u795e\u7ecf\u7f51\u7edc\u9aa8\u67b6\uff0c\u800cModule\u662f\u5176\u4e2d\u4e00\u4e2a\u6700\u57fa\u672c\u7684\u9aa8\u67b6\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p><strong>\u5b9e\u64cd\uff1a<\/strong><\/p>\n\n\n\n<p>\u793a\u4f8b:python\u6e90\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import torch\nfrom torch import nn\n\nclass MyModule(nn.Module): # MyModule\u7ee7\u627fModule\n    def __init__(self):\n        super().__init__() # \u6784\u9020\u51fd\u6570\n\n\n    def forward(self, input): \n        output = input + 1\n        return output\n\nmymodel = MyModule() \nx = torch.tensor(1.0) # \u6784\u9020\u4e00\u4e2atensor\u4e3a1.0\u7684x\ny = mymodel(x) # \u5229\u7528mymodule\u7684forward\u5904\u7406x\u5e76\u8d4b\u503c\u7ed9y\nprint(y)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>\u7ec6\u89e3\u91ca<\/p>\n\n\n\n<p>\u65b0\u7684MyModule\u7ee7\u627f\u4e8enn.Module\uff0c\u5b9e\u9645\u4e0a\u662f\u62ffnn.Module\u8fd9\u4e48\u4e00\u4e2a\u9aa8\u67b6\u6765\u8fdb\u884c\u81ea\u5df1\u7684\u6539\u88c5\uff0c\u6bd4\u5982\u5728__init__()\u3001forward()\u8fdb\u884c\u81ea\u5b9a\u4e49\u3002<\/p>\n\n\n\n<p>\u800c\u5bf9\u4e8ex = torch.tensor(1.0)\u8fd9\u53e5\u8bdd<\/p>\n\n\n\n<p>\u770btorch.tensor()\u8fd9\u4e2a\u53d8\u91cf<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"224\" src=\"https:\/\/x2.mday.top\/wp-content\/uploads\/2021\/10\/image-33-1024x224.png\" alt=\"\" class=\"wp-image-171\" srcset=\"https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-33-1024x224.png 1024w, https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-33-300x66.png 300w, https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-33-768x168.png 768w, https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-33-769x168.png 769w, https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-33.png 1281w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>\u56fe2\u3001torch.tensor()<\/figcaption><\/figure><\/div>\n\n\n\n<p>\u53ef\u4ee5\u77e5\u9053\uff0c\u8fd9\u662f\u5c06\u4e00\u4e2a\u6570\u636edata\u8f6c\u6362\u4e3aTensor\u7c7b<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p style=\"font-size:24px\"><strong>P18:\u5377\u79ef\u5c42<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import torch\nimport torchvision.datasets\nfrom torch import nn\nfrom torch.nn import Conv2d\nfrom torch.utils.data import DataLoader\nfrom torch.utils.tensorboard import SummaryWriter\n\n# \u4e0b\u9762\u8fd9\u4e24\u884c\u662f\u89e3\u51b3 dataset\u4e0b\u8f7d\u7684ssl\u8bc1\u4e66\u62a5\u9519\nimport ssl\nssl._create_default_https_context = ssl._create_unverified_context\n\n\ndataset = torchvision.datasets.CIFAR10(\"..\/data\", train = False, transform = torchvision.transforms.ToTensor(), download = True)\n\ndataloader = DataLoader(dataset, batch_size = 64)\n\nclass MyModule(nn.Module):\n    def __init__(self):\n        super(MyModule, self).__init__()\n        self.conv1 = Conv2d(in_channels = 3, out_channels = 6, kernel_size = 3, stride = 1, padding = 0)\n\n    def forward(self, x):\n        x = self.conv1(x)\n        return  x\n\nmymodule = MyModule()\n\nwriter = SummaryWriter(\"..\/logs\")\n\nstep = 0\n\nfor data in dataloader:\n    imgs, targets = data\n\n    # \u8c03\u7528\u4e86MyModule\u7236\u7c7bnn.Module\u7684__call__\u51fd\u6570\uff0c\u800c__call__\u51fd\u6570\u91cc\u9762\u8c03\u7528\u4e86forward\u51fd\u6570, forward\u5df2\u5728\u5b50\u7c7bMyModule\u4e2d\u91cd\u5199\n    output = mymodule(imgs) \n    print(imgs.shape)\n    print(output.shape)\n    #torch.Size(&#91;64, 3, 32, 32])\n    writer.add_images(\"Input\", imgs, step)\n\n    #torch.Size(&#91;64, 6, 30, 30])\n    output = torch.reshape(output, &#91;-1, 3, 30, 30])\n    writer.add_images(\"Output\", output, step)\n    step = step + 1<\/code><\/pre>\n\n\n\n<p style=\"font-size:24px\"><strong>P19:\u6c60\u5316\u5c42<\/strong><\/p>\n\n\n\n<p>\u6c60\u5316\u5c42\u7684\u4f5c\u7528\uff1a\u5c06\u8f93\u5165\u8fdb\u884c\u91c7\u6837\uff0c\u4ee5\u8fbe\u5230\u51cf\u5c11\u8bad\u7ec3\u6570\u636e\u91cf<\/p>\n\n\n\n<p>\u77e9\u9635<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import tensorboard.compat.tensorflow_stub.dtypes\nimport torch\nfrom torch import nn\n\n\nclass MyModule(nn.Module):\n\n    def __init__(self):\n        super(MyModule, self).__init__()\n        self.maxpool = nn.MaxPool2d(kernel_size=3, ceil_mode=True)\n\n    def forward(self, input):\n        output = self.maxpool(input)\n        return output\n\ninput = torch.tensor(&#91;&#91;1, 2, 0, 3, 1],\n                      &#91;0, 1, 2, 3, 1],\n                      &#91;1, 2, 1, 0, 0],\n                      &#91;5, 2, 3, 1, 1],\n                      &#91;2, 1, 0, 1, 1]], dtype=torch.float32)\ninput = torch.reshape(input, &#91;-1, 1, 5, 5])\n\nmymodule = MyModule()\n\noutput = mymodule(input)\n\nprint(output)\n\n<\/code><\/pre>\n\n\n\n<p>\u56fe\u7247\u96c6<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">import torchvision.datasets<br>import torchvision.transforms<br>from torch import nn<br>from torch.utils.data import DataLoader<br>from torch.utils.tensorboard import SummaryWriter<br><br><br>class MyModule(nn.Module):<br>    def __init__(self):<br>        super(MyModule, self).__init__()<br>        self.maxpool = nn.MaxPool2d(kernel_size=3, ceil_mode=True)<br><br>    def forward(self, input):<br>        output = self.maxpool(input)<br>        return output<br><br>dataset = torchvision.datasets.CIFAR10(root=\"..\/data\", train=False, transform=torchvision.transforms.ToTensor(), download=True)<br><br>dataloader = DataLoader(dataset=dataset, batch_size=64)<br><br>mymodule = MyModule()<br><br>writer = SummaryWriter(\"..\/logs_maxpool\")<br><br>step = 1<br>for imgs, targets in dataloader:<br>    output_imgs = mymodule(imgs)<br>    writer.add_images(\"Input Imgs\", imgs, step)<br>    writer.add_images(\"Output Imgs\", output_imgs, step)<br>    step += 1<\/pre>\n\n\n\n<p style=\"font-size:24px\"><strong>P20:\u975e\u7ebf\u6027\u6fc0\u6d3b<\/strong><\/p>\n\n\n\n<p>\u77e9\u9635<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import torch\nfrom torch import nn\n\nclass MyModule(nn.Module):\n    def __init__(self):\n        super(MyModule, self).__init__()\n        self.relu = nn.ReLU()\n\n    def forward(self, input):\n        output = self.relu(input)\n        return output\n\ninput = torch.tensor(&#91;&#91;-2, -3],\n                      &#91;1, 4]])\n\ninput = torch.reshape(input, &#91;-1, 1, 2, 2])\n\nmymodule = MyModule()\n\noutput = mymodule(input)\n\nprint(output)<\/code><\/pre>\n\n\n\n<p>\u56fe\u7247\u96c6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import torchvision.datasets\nimport torchvision.transforms\nfrom torch import nn\nfrom torch.utils.data import DataLoader\nfrom torch.utils.tensorboard import SummaryWriter\n\n\nclass MyModule(nn.Module):\n    def __init__(self):\n        super(MyModule, self).__init__()\n        self.sigmoid = nn.Sigmoid()\n\n    def forward(self, input):\n        output = self.sigmoid(input)\n        return output\n\ndataset = torchvision.datasets.CIFAR10(root=\"..\/data\", train=False, transform=torchvision.transforms.ToTensor(), download=True)\n\ndataloader = DataLoader(dataset, batch_size=64)\n\nmymodule = MyModule()\n\nwriter = SummaryWriter(log_dir=\"..\/logs_sigmoid\")\n\nstep = 0\nfor imgs, targets in dataloader:\n    Output_imgs = mymodule(imgs)\n    writer.add_images(\"Input\", imgs, step)\n    writer.add_images(\"Output\", Output_imgs, step)\n    step += 1\n\nwriter.close()\n\n<\/code><\/pre>\n\n\n\n<p style=\"font-size:24px\"><strong>P21:\u7ebf\u6027\u5c42<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import torchvision\nfrom torch import nn, flatten\nfrom torch.utils.data import DataLoader\n\nclass MyModule(nn.Module):\n    def __init__(self):\n        super(MyModule, self).__init__()\n        self.linear = nn.Linear(196608, 10)\n\n    def forward(self, input):\n        output = self.linear(input)\n        return output\n\ndataset = torchvision.datasets.CIFAR10(root=\"..\/data\", train=False, transform=torchvision.transforms.ToTensor(), download=True)\n\ndataloader = DataLoader(dataset, batch_size=64)\n\nmymodule = MyModule()\n\nstep = 0\nfor imgs, targets in dataloader:\n    Output_imgs = flatten(imgs) # \u5c06\u8f93\u5165\u62c9\u5e73\u6210\u4e00\u7ef4\u6570\u636e\n    print(Output_imgs.shape)\n    Output_imgs = mymodule(Output_imgs)\n    print(Output_imgs.shape)\n    step += 1\n\n<\/code><\/pre>\n\n\n\n<p style=\"font-size:24px\"><strong>P22:\u795e\u7ecf\u7f51\u7edc\u7684\u642d\u5efa<\/strong><\/p>\n\n\n\n<p>\u4e2a\u4eba\u7406\u89e3\uff1a<\/p>\n\n\n\n<p><s>\u795e\u7ecf\u7f51\u7edc\u5c06\u6211\u4eec\u7684\u8f93\u5165\u7531\u5927\u91cf\u6570\u636e\uff08batches*channel*width*height\uff09\u7efc\u5408\u5230\u5c11\u91cf\u51e0\u4e2a\uff08\u5982\u4e0b\u4ee3\u7801\u4fbf\u662f10\u4e2a\uff09\uff0c\u800c\u8fd9\u4e9b\u8f93\u51fa\u7684\u6570\u636e\u4fbf\u50cf\u96c6\u5408 x[] \uff0c\u800c\u6211\u4eec\u7684target\u4fbf\u662fy\uff0c\u795e\u7ecf\u7f51\u7edc\u6a21\u578b\u4e2d\u7684\u53c2\u6570alpha\u5219\u5728\u4e00\u6b21\u6b21\u7684 x[] \u4e0e y\u7684\u5bf9\u6bd4\uff0c\u8ba1\u7b97loss\u4e2d\u4f18\u5316\u3002\uff08\u4ee3\u7801\u53c2\u8003\u672c\u6587P22 P23 P24\uff09<\/s><\/p>\n\n\n\n<p>\u795e\u7ecf\u7f51\u7edc\u6700\u540e\u7ebf\u6027\u5c42\u8f93\u51fa\u7684\u4e2a\u6570\u662f\u548c\u5206\u7c7b\u6570\u4e00\u81f4\u7684\uff0c\u7ecf\u8fc7softmax\u5904\u7406\u540e\u4fbf\u662f\u5404\u4e2a\u7c7b\u522b\u7684\u6982\u7387\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"653\" src=\"https:\/\/x2.mday.top\/wp-content\/uploads\/2022\/02\/image-1024x653.png\" alt=\"\" class=\"wp-image-367\" srcset=\"https:\/\/scutvk.cn\/wp-content\/uploads\/2022\/02\/image-1024x653.png 1024w, https:\/\/scutvk.cn\/wp-content\/uploads\/2022\/02\/image-300x191.png 300w, https:\/\/scutvk.cn\/wp-content\/uploads\/2022\/02\/image-768x490.png 768w, https:\/\/scutvk.cn\/wp-content\/uploads\/2022\/02\/image-769x491.png 769w, https:\/\/scutvk.cn\/wp-content\/uploads\/2022\/02\/image.png 1472w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>import torch.utils.data\nimport torchvision.datasets\nfrom torch import nn, ones\n\nimport ssl\nssl._create_default_https_context = ssl._create_unverified_context\n\nclass MyModule(nn.Module):\n    def __init__(self):\n        super(MyModule, self).__init__()\n        self.conv1 = nn.Conv2d(in_channels=3, out_channels=32, kernel_size=5, padding=2)\n        self.maxpool1 = nn.MaxPool2d(2)\n        self.conv2 = nn.Conv2d(in_channels=32, out_channels=32, kernel_size=5, padding=2)\n        self.maxpool2 = nn.MaxPool2d(2)\n        self.conv3 = nn.Conv2d(in_channels=32, out_channels=64, kernel_size=5, padding=2)\n        self.maxpool3 = nn.MaxPool2d(2)\n        self.fallten = nn.Flatten()\n        self.linear1 = nn.Linear(in_features=1024, out_features=64)\n        self.linear2 = nn.Linear(in_features=64, out_features=10)\n\n        self.model = nn.Sequential(\n            nn.Conv2d(in_channels=3, out_channels=32, kernel_size=5, padding=2),\n            nn.MaxPool2d(2),\n            nn.Conv2d(in_channels=32, out_channels=32, kernel_size=5, padding=2),\n            nn.MaxPool2d(2),\n            nn.Conv2d(in_channels=32, out_channels=64, kernel_size=5, padding=2),\n            nn.MaxPool2d(2),\n            nn.Flatten(),\n            nn.Linear(in_features=1024, out_features=64),\n            nn.Linear(in_features=64, out_features=10)\n        )\n\n    def forward(self, input):\n        # input = self.conv1(input)\n        # input = self.maxpool1(input)\n        # input = self.conv2(input)\n        # input = self.maxpool2(input)\n        # input = self.conv3(input)\n        # input = self.maxpool3(input)\n        # input = self.fallten(input)\n        # input = self.linear1(input)\n        # input = self.linear2(input)\n        input = self.model(input)\n        return input\n\nmymodule = MyModule()\n\n\ndataset = torchvision.datasets.CIFAR10(root=\"..\/data\", train=False, transform=torchvision.transforms.ToTensor(), download=True)\n\ndataloader = torch.utils.data.DataLoader(dataset, batch_size=64)\n\nfor imgs, targets in dataloader:\n    output = mymodule(imgs)\n    print(output)<\/code><\/pre>\n\n\n\n<p style=\"font-size:24px\"><strong>P23:\u635f\u5931\u51fd\u6570&amp;\u53cd\u5411\u4f20\u64ad<\/strong><\/p>\n\n\n\n<p>\u68af\u5ea6\u4e0b\u964d\u53c2\u8003\u8fd9\u7bc7\u6587\u7ae0 <a href=\"https:\/\/zhuanlan.zhihu.com\/p\/335191534\" target=\"_blank\" rel=\"noopener\">\u901a\u4fd7\u6613\u61c2\u8bb2\u89e3\u68af\u5ea6\u4e0b\u964d\u6cd5 &#8211; \u77e5\u4e4e (zhihu.com)<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import torch.utils.data\nimport torchvision.datasets\nfrom torch import nn, ones\n\nimport ssl\nssl._create_default_https_context = ssl._create_unverified_context\n\nclass MyModule(nn.Module):\n    def __init__(self):\n        super(MyModule, self).__init__()\n        self.conv1 = nn.Conv2d(in_channels=3, out_channels=32, kernel_size=5, padding=2)\n        self.maxpool1 = nn.MaxPool2d(2)\n        self.conv2 = nn.Conv2d(in_channels=32, out_channels=32, kernel_size=5, padding=2)\n        self.maxpool2 = nn.MaxPool2d(2)\n        self.conv3 = nn.Conv2d(in_channels=32, out_channels=64, kernel_size=5, padding=2)\n        self.maxpool3 = nn.MaxPool2d(2)\n        self.fallten = nn.Flatten()\n        self.linear1 = nn.Linear(in_features=1024, out_features=64)\n        self.linear2 = nn.Linear(in_features=64, out_features=10)\n\n        self.model = nn.Sequential(\n            nn.Conv2d(in_channels=3, out_channels=32, kernel_size=5, padding=2),\n            nn.MaxPool2d(2),\n            nn.Conv2d(in_channels=32, out_channels=32, kernel_size=5, padding=2),\n            nn.MaxPool2d(2),\n            nn.Conv2d(in_channels=32, out_channels=64, kernel_size=5, padding=2),\n            nn.MaxPool2d(2),\n            nn.Flatten(),\n            nn.Linear(in_features=1024, out_features=64),\n            nn.Linear(in_features=64, out_features=10)\n        )\n\n    def forward(self, input):\n        # input = self.conv1(input)\n        # input = self.maxpool1(input)\n        # input = self.conv2(input)\n        # input = self.maxpool2(input)\n        # input = self.conv3(input)\n        # input = self.maxpool3(input)\n        # input = self.fallten(input)\n        # input = self.linear1(input)\n        # input = self.linear2(input)\n        input = self.model(input)\n        return input\n\nmymodule = MyModule()\n\n\ndataset = torchvision.datasets.CIFAR10(root=\"..\/data\", train=False, transform=torchvision.transforms.ToTensor(), download=True)\n\ndataloader = torch.utils.data.DataLoader(dataset, batch_size=64)\n\nfor imgs, targets in dataloader:\n    output = mymodule(imgs)\n    print(output)<\/code><\/pre>\n\n\n\n<p style=\"font-size:24px\"><strong>P24:\u4f18\u5316\u5668<\/strong><\/p>\n\n\n\n<p>\uff081\uff09\u89e3\u91ca<\/p>\n\n\n\n<p>\u4e00\u8a00\u4ee5\u853d\u4e4b\uff0c\u4f18\u5316\u5668\u5c31\u662f\u5728\u6df1\u5ea6\u5b66\u4e60\u53cd\u5411\u4f20\u64ad\u8fc7\u7a0b\u4e2d\uff0c\u6307\u5f15\u635f\u5931\u51fd\u6570\uff08\u76ee\u6807\u51fd\u6570\uff09\u7684\u5404\u4e2a\u53c2\u6570\u5f80\u6b63\u786e\u7684\u65b9\u5411\u66f4\u65b0\u5408\u9002\u7684\u5927\u5c0f\uff0c\u4f7f\u5f97\u66f4\u65b0\u540e\u7684\u5404\u4e2a\u53c2\u6570\u8ba9\u635f\u5931\u51fd\u6570\uff08\u76ee\u6807\u51fd\u6570\uff09\u503c\u4e0d\u65ad\u903c\u8fd1\u5168\u5c40\u6700\u5c0f\u3002<\/p>\n\n\n\n<p>\u4f7f\u7528\u68af\u5ea6\u4e0b\u964d\u8fdb\u884c\u4f18\u5316\uff0c\u662f\u51e0\u4e4e\u6240\u6709\u4f18\u5316\u5668\u7684\u6838\u5fc3\u601d\u60f3\u3002<\/p>\n\n\n\n<p>\u5f15\u81ea\uff1a<a href=\"https:\/\/zhuanlan.zhihu.com\/p\/261695487\" target=\"_blank\" rel=\"noopener\">\u4f18\u5316\u5668(Optimizer) &#8211; \u77e5\u4e4e (zhihu.com)<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import torch.utils.data\nimport torchvision.datasets\nfrom torch import nn, ones\n\nimport ssl\nssl._create_default_https_context = ssl._create_unverified_context\n\nclass MyModule(nn.Module):\n    def __init__(self):\n        super(MyModule, self).__init__()\n        self.model = nn.Sequential(\n            nn.Conv2d(in_channels=3, out_channels=32, kernel_size=5, padding=2),\n            nn.MaxPool2d(2),\n            nn.Conv2d(in_channels=32, out_channels=32, kernel_size=5, padding=2),\n            nn.MaxPool2d(2),\n            nn.Conv2d(in_channels=32, out_channels=64, kernel_size=5, padding=2),\n            nn.MaxPool2d(2),\n            nn.Flatten(),\n            nn.Linear(in_features=1024, out_features=64),\n            nn.Linear(in_features=64, out_features=10)\n        )\n\n    def forward(self, input):\n        input = self.model(input)\n        return input\n\nmymodule = MyModule()\n\ndataset = torchvision.datasets.CIFAR10(root=\"..\/data\", train=False, transform=torchvision.transforms.ToTensor(), download=True)\ndataloader = torch.utils.data.DataLoader(dataset, batch_size=1)\n\nloss = nn.CrossEntropyLoss()\n\noptim = torch.optim.SGD(params=mymodule.parameters(), lr=0.01)\n\nfor i in range(20):\n    running_loss = 0.0\n    for imgs, targets in dataloader:\n        outputs = mymodule(imgs)\n        result_loss = loss(outputs, targets)\n        optim.zero_grad() #\u5c06\u4e0a\u4e00\u6b21\u7684\u68af\u5ea6\u53c2\u6570\u5f52\u96f6\n        result_loss.backward()\n        optim.step()\n        running_loss += result_loss\n    print(running_loss)<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u795e\u7ecf\u7f51\u7edc\u57fa\u672c\u9aa8\u67b6\u3001\u5377\u79ef P16:\u795e\u7ecf\u7f51\u7edc\u7684\u57fa\u672c\u9aa8\u67b6&hellip;<\/p>\n","protected":false},"author":1,"featured_media":170,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[10,12,2],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/scutvk.cn\/wp-content\/uploads\/2021\/10\/image-32.png","_links":{"self":[{"href":"https:\/\/scutvk.cn\/index.php?rest_route=\/wp\/v2\/posts\/168"}],"collection":[{"href":"https:\/\/scutvk.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scutvk.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scutvk.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scutvk.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=168"}],"version-history":[{"count":13,"href":"https:\/\/scutvk.cn\/index.php?rest_route=\/wp\/v2\/posts\/168\/revisions"}],"predecessor-version":[{"id":368,"href":"https:\/\/scutvk.cn\/index.php?rest_route=\/wp\/v2\/posts\/168\/revisions\/368"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/scutvk.cn\/index.php?rest_route=\/wp\/v2\/media\/170"}],"wp:attachment":[{"href":"https:\/\/scutvk.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=168"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scutvk.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=168"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scutvk.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}