打印和查看功能在 pytorch 中如何工作?
How is the print and view functions works in pytorch?
这是我在网上找到的一个卷积神经网络
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 10, kernel_size=5)
self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
self.conv2_drop = nn.Dropout2d()
self.fc1 = nn.Linear(500, 50)
self.fc2 = nn.Linear(50, 64)
def forward(self, x):
x = F.relu(F.max_pool2d(self.conv1(x), 2))
x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
x = x.view(-1, 500)
x = F.relu(self.fc1(x))
x = F.dropout(x, training=self.training)
x = self.fc2(x)
return F.log_softmax(x)
及其摘要
print(net)
Net(
(conv1): Conv2d(3, 10, kernel_size=(5, 5), stride=(1, 1))
(conv2): Conv2d(10, 20, kernel_size=(5, 5), stride=(1, 1))
(conv2_drop): Dropout2d(p=0.5)
(fc1): Linear(in_features=500, out_features=50, bias=True)
(fc2): Linear(in_features=50, out_features=64, bias=True)
)
x.view
是做什么的?是不是类似于keras中的Flatten
函数。另一个查询是关于 pytorch 如何打印模型的摘要。尽管该模型使用了两个 dropouts nn.Dropout2d()
和 F.dropout
。打印模型时我们只能看到一个 (conv2_drop): Dropout2d(p=0.5)
,为什么?。最后一个问题是为什么pytorch不打印F.max_pool2d
层?
1) x.view
可以做的不仅仅是展平:它会在重塑维度的同时保留相同的数据。所以使用 x.view(batch_size, -1)
将等同于 Flatten
2) 在nn.Module
的__repr__
函数中,打印的元素是self._modules.items()
中的子模块。
F.dropout
和F.max_pool2d
是函数而不是nn.Module
的子函数,因此它们不是层,不会被打印。然而,对于汇集和丢弃,torch.nn
中有一个模块,您已经将其用于第一个丢弃。
这是我在网上找到的一个卷积神经网络
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 10, kernel_size=5)
self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
self.conv2_drop = nn.Dropout2d()
self.fc1 = nn.Linear(500, 50)
self.fc2 = nn.Linear(50, 64)
def forward(self, x):
x = F.relu(F.max_pool2d(self.conv1(x), 2))
x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
x = x.view(-1, 500)
x = F.relu(self.fc1(x))
x = F.dropout(x, training=self.training)
x = self.fc2(x)
return F.log_softmax(x)
及其摘要
print(net)
Net(
(conv1): Conv2d(3, 10, kernel_size=(5, 5), stride=(1, 1))
(conv2): Conv2d(10, 20, kernel_size=(5, 5), stride=(1, 1))
(conv2_drop): Dropout2d(p=0.5)
(fc1): Linear(in_features=500, out_features=50, bias=True)
(fc2): Linear(in_features=50, out_features=64, bias=True)
)
x.view
是做什么的?是不是类似于keras中的Flatten
函数。另一个查询是关于 pytorch 如何打印模型的摘要。尽管该模型使用了两个 dropouts nn.Dropout2d()
和 F.dropout
。打印模型时我们只能看到一个 (conv2_drop): Dropout2d(p=0.5)
,为什么?。最后一个问题是为什么pytorch不打印F.max_pool2d
层?
1) x.view
可以做的不仅仅是展平:它会在重塑维度的同时保留相同的数据。所以使用 x.view(batch_size, -1)
将等同于 Flatten
2) 在nn.Module
的__repr__
函数中,打印的元素是self._modules.items()
中的子模块。
F.dropout
和F.max_pool2d
是函数而不是nn.Module
的子函数,因此它们不是层,不会被打印。然而,对于汇集和丢弃,torch.nn
中有一个模块,您已经将其用于第一个丢弃。