|
27 | 27 | <meta property="og:description" content="本笔记从小土堆Pytorch教程中记录一些实用的Pytorch相关操作. 1. 加载数据1.1 PILPIL类可以用于加载图像、保存图像等操作 12from PIL import Imageimg = Image.open('data/hymenoptera_data/train/ants/342438950_a3da61deab.jpg') 1.2 DataSetDataSe"> |
28 | 28 | <meta property="og:locale" content="zh_CN"> |
29 | 29 | <meta property="article:published_time" content="2025-04-02T12:32:28.000Z"> |
30 | | -<meta property="article:modified_time" content="2025-04-16T14:16:03.359Z"> |
| 30 | +<meta property="article:modified_time" content="2025-05-08T13:41:08.956Z"> |
31 | 31 | <meta property="article:tag" content="交通"> |
32 | 32 | <meta name="twitter:card" content="summary_large_image"> |
33 | 33 |
|
@@ -331,7 +331,7 @@ <h2 id="5-3-Sequential的使用"><a href="#5-3-Sequential的使用" class="heade |
331 | 331 | </ul> |
332 | 332 | <figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><code class="hljs python"><span class="hljs-keyword">import</span> torch.nn <span class="hljs-keyword">as</span> nn<br><span class="hljs-keyword">from</span> collections <span class="hljs-keyword">import</span> OrderedDict<br>model = nn.Sequential(OrderedDict([<br> (<span class="hljs-string">'conv1'</span>, nn.Conv2d(<span class="hljs-number">1</span>,<span class="hljs-number">20</span>,<span class="hljs-number">5</span>)),<br> (<span class="hljs-string">'relu1'</span>, nn.ReLU()),<br> (<span class="hljs-string">'conv2'</span>, nn.Conv2d(<span class="hljs-number">20</span>,<span class="hljs-number">64</span>,<span class="hljs-number">5</span>)),<br> (<span class="hljs-string">'relu2'</span>, nn.ReLU())<br> ]))<br> <br><span class="hljs-built_in">print</span>(model)<br><span class="hljs-string">'''运行结果为:</span><br><span class="hljs-string">Sequential(</span><br><span class="hljs-string"> (conv1): Conv2d(1, 20, kernel_size=(5, 5), stride=(1, 1))</span><br><span class="hljs-string"> (relu1): ReLU()</span><br><span class="hljs-string"> (conv2): Conv2d(20, 64, kernel_size=(5, 5), stride=(1, 1))</span><br><span class="hljs-string"> (relu2): ReLU()</span><br><span class="hljs-string">)</span><br><span class="hljs-string">'''</span><br></code></pre></td></tr></table></figure> |
333 | 333 | <p>我们可以将前面所学的层组合起来,形成深层神经网络的架构,例如我们可以编写一个自己的网络如下:</p> |
334 | | -<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><code class="hljs python"><span class="hljs-keyword">class</span> <span class="hljs-title class_">MyNeuralNetwork</span>(nn.Module):<br> <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, *args, **kwargs</span>) -> <span class="hljs-literal">None</span>:<br> <span class="hljs-built_in">super</span>().__init__(*args, **kwargs)<br> <span class="hljs-variable language_">self</span>.model = nn.Sequential(<br> nn.Conv2d(<span class="hljs-number">3</span>,<span class="hljs-number">64</span>,<span class="hljs-number">3</span>,<span class="hljs-number">1</span>,<span class="hljs-number">1</span>), <span class="hljs-comment"># 【1,64,64,64】 备注:ks=3,stride=1,padding = 1</span><br> <span class="hljs-comment"># Hout(64) = (Hin(64) + 2×padding - dilation×[ks - 1] × 1 )/stride + 1</span><br> nn.ReLU(),<br> nn.Conv2d(<span class="hljs-number">64</span>,<span class="hljs-number">32</span>,<span class="hljs-number">3</span>,<span class="hljs-number">1</span>,<span class="hljs-number">1</span>), <span class="hljs-comment"># 1,32,64,64</span><br> nn.ReLU(),<br> nn.Conv2d(<span class="hljs-number">32</span>, <span class="hljs-number">16</span>, <span class="hljs-number">3</span>,<span class="hljs-number">1</span>,<span class="hljs-number">1</span>), <span class="hljs-comment"># 1,16,64,64</span><br> nn.ReLU(),<br> nn.MaxPool2d(<span class="hljs-number">2</span>), <span class="hljs-comment"># 1,16,32,32</span><br> nn.ReLU(),<br> nn.Linear(<span class="hljs-number">32</span>,<span class="hljs-number">1024</span>), <span class="hljs-comment"># 1,16,32,1024</span><br> nn.ReLU(),<br> nn.Linear(<span class="hljs-number">1024</span>, <span class="hljs-number">1024</span>), <span class="hljs-comment"># 1,16,1024,1024</span><br> nn.ReLU(),<br> nn.Flatten(), <span class="hljs-comment"># 1,524288</span><br> nn.Linear(<span class="hljs-number">524288</span>,<span class="hljs-number">10</span>), <span class="hljs-comment"># 1,10</span><br> nn.Softmax(dim= -<span class="hljs-number">1</span>)<br> )<br><br>mnn = MyNeuralNetwork()<br><br>a = torch.randn(<span class="hljs-number">1</span>,<span class="hljs-number">3</span>,<span class="hljs-number">64</span>,<span class="hljs-number">64</span>)<br><br>res = mnn.model(a)<br><br><span class="hljs-built_in">print</span>(res.shape) <span class="hljs-comment"># torch.Size([1, 10])</span><br><span class="hljs-built_in">print</span>(res) <span class="hljs-comment">#tensor([[0.0991, 0.0982, 0.0997, 0.0996, 0.1009, 0.1030, 0.0988, 0.1027, 0.0991,0.0988]], grad_fn=<SoftmaxBackward0>)</span><br></code></pre></td></tr></table></figure> |
| 334 | +<figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><code class="hljs python"><span class="hljs-keyword">class</span> <span class="hljs-title class_">MyNeuralNetwork</span>(nn.Module):<br> <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, *args, **kwargs</span>) -> <span class="hljs-literal">None</span>:<br> <span class="hljs-built_in">super</span>().__init__(*args, **kwargs)<br> <span class="hljs-variable language_">self</span>.model = nn.Sequential(<br> nn.Conv2d(<span class="hljs-number">3</span>,<span class="hljs-number">64</span>,<span class="hljs-number">3</span>,<span class="hljs-number">1</span>,<span class="hljs-number">1</span>), <span class="hljs-comment"># 【1,64,64,64】 备注:ks=3,stride=1,padding = 1</span><br> <span class="hljs-comment"># Hout(64) = (Hin(64) + 2×padding - dilation×[ks - 1] × 1 )/stride + 1</span><br> nn.ReLU(),<br> nn.Conv2d(<span class="hljs-number">64</span>,<span class="hljs-number">32</span>,<span class="hljs-number">3</span>,<span class="hljs-number">1</span>,<span class="hljs-number">1</span>), <span class="hljs-comment"># 1,32,64,64</span><br> nn.ReLU(),<br> nn.Conv2d(<span class="hljs-number">32</span>, <span class="hljs-number">16</span>, <span class="hljs-number">3</span>,<span class="hljs-number">1</span>,<span class="hljs-number">1</span>), <span class="hljs-comment"># 1,16,64,64</span><br> nn.ReLU(),<br> nn.MaxPool2d(<span class="hljs-number">2</span>), <span class="hljs-comment"># 1,16,32,32</span><br> nn.ReLU(),<br> nn.Linear(<span class="hljs-number">32</span>,<span class="hljs-number">1024</span>), <span class="hljs-comment"># 1,16,32,1024</span><br> nn.ReLU(),<br> nn.Linear(<span class="hljs-number">1024</span>, <span class="hljs-number">1024</span>), <span class="hljs-comment"># 1,16,32,1024</span><br> nn.ReLU(),<br> nn.Flatten(), <span class="hljs-comment"># 1,524288</span><br> nn.Linear(<span class="hljs-number">524288</span>,<span class="hljs-number">10</span>), <span class="hljs-comment"># 1,10</span><br> nn.Softmax(dim= -<span class="hljs-number">1</span>)<br> )<br><br>mnn = MyNeuralNetwork()<br><br>a = torch.randn(<span class="hljs-number">1</span>,<span class="hljs-number">3</span>,<span class="hljs-number">64</span>,<span class="hljs-number">64</span>)<br><br>res = mnn.model(a)<br><br><span class="hljs-built_in">print</span>(res.shape) <span class="hljs-comment"># torch.Size([1, 10])</span><br><span class="hljs-built_in">print</span>(res) <span class="hljs-comment">#tensor([[0.0991, 0.0982, 0.0997, 0.0996, 0.1009, 0.1030, 0.0988, 0.1027, 0.0991,0.0988]], grad_fn=<SoftmaxBackward0>)</span><br></code></pre></td></tr></table></figure> |
335 | 335 |
|
336 | 336 | <p>通过使用Sequential()的方式可以便捷的完成网络的定义,快速实现网络。</p> |
337 | 337 | <h2 id="5-4-小网络搭建实战"><a href="#5-4-小网络搭建实战" class="headerlink" title="5.4 小网络搭建实战"></a>5.4 小网络搭建实战</h2><p>以vgg16这个网络(图待补充)为例,搭建模型如下(暂未添加Relu层),其实和我们之前写的模型很像</p> |
|
0 commit comments