小编Fra*_*ese的帖子

为什么我们将 nn.Module 作为参数传递给神经网络的类定义?

我想理解为什么当我们为像 GAN 这样的神经网络定义类时,我们将 torch.nn.Module 作为参数传递

import torch
import torch.nn as nn

class Generator(nn.Module):
    def __init__(self, input_size, hidden_size, output_size, f):
        super(Generator, self).__init__()
        self.map1 = nn.Linear(input_size, hidden_size)
        self.map2 = nn.Linear(hidden_size, hidden_size)
        self.map3 = nn.Linear(hidden_size, output_size)
        self.f = f
Run Code Online (Sandbox Code Playgroud)

python module machine-learning pytorch

5
推荐指数
1
解决办法
1890
查看次数

为什么在神经网络类定义中使用多个 ReLU 对象?

最近我观察到,在定义神经网络时,我们很多时候为每一层定义单独的 ReLU 对象。为什么我们不能在需要的地方使用相同的 ReLU 对象。

例如,不要这样写-

def __init__(self):
    self.fc1     = nn.Linear(784, 500)
    self.ReLU_1  = nn.ReLU()
    self.fc2     = nn.Linear(500, 300)
    self.ReLU_2  = nn.ReLU()
    
def forward(x):
    x = self.fc1(x)
    x = self.ReLU_1(x)
    x = self.fc2(x)
    x = self.ReLU_2(x)

Run Code Online (Sandbox Code Playgroud)

为什么我们不能使用

def __init__(self):
    self.fc1    = nn.Linear(784, 500)
    self.ReLU   = nn.ReLU()
    self.fc2    = nn.Linear(500, 300)
    
def forward(x):
    x = self.fc1(x)
    x = self.ReLU(x)
    x = self.fc2(x)
    x = self.ReLU(x)

Run Code Online (Sandbox Code Playgroud)

这是 PyTorch 特有的东西吗?

neural-network pytorch relu

5
推荐指数
1
解决办法
676
查看次数