dropout在pytorch
时间: 2023-09-17 08:10:25 浏览: 96
在 PyTorch 中,可以通过在模型定义的过程中添加 `torch.nn.Dropout` 层来实现 dropout。例如,下面是一个包含两个全连接层和一个 dropout 层的模型:
```
import torch
import torch.nn as nn
class MyModel(nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.fc1 = nn.Linear(784, 512)
self.fc2 = nn.Linear(512, 10)
self.dropout = nn.Dropout(p=0.5)
def forward(self, x):
x = torch.flatten(x, 1)
x = self.fc1(x)
x = nn.functional.relu(x)
x = self.dropout(x)
x = self.fc2(x)
return x
```
在上述代码中,`nn.Dropout(p=0.5)` 表示 dropout 层的概率为 0.5。在模型的前向传播过程中,对 `fc1` 的输出应用了 ReLU 激活函数后,将其输入到 dropout 层中进行随机失活。 最后,将 dropout 层的输出输入到 `fc2` 中。
在训练模型时,可以使用 `model.train()` 方法来启用 dropout 层。在评估模型时,可以使用 `model.eval()` 方法来关闭 dropout 层。例如:
```
model = MyModel()
...
model.train() # 启用 dropout 层
outputs = model(inputs)
...
model.eval() # 关闭 dropout 层
outputs = model(inputs)
```
阅读全文