pytoch dropoutの使い方
2398 ワード
リンク:https://www.zhihu.com/question/67209417/answer/302434279
踏んだばかりの穴が、もう少しで泣きそうになりましたTT.---百個のdropoutを加えたのに、どうして全然変わってないですか?
F.dropout(nn.functional.dropout)を使用する場合、そのtriningという状態パラメータを設定する必要があります。モデル全体と一致します。
たとえば: このコードのF.dropoutは実際には何の役にも立たないです。そのtrining状態は常にデフォルト値Falseです。F.dropoutは参照の外部関数に相当します。モデル全体のtrining状態が変化してもF.dropoutという関数のtrining状態が変化しないので、ここのout=F.dropout(out)はReout=Reoutです。 https://github.com/pytorch/pytorch/blob/master/torch/nn/functional.py#L535
正確な使用方法は、モデル全体のtrining状態パラメータをdropout関数に導入する。
またはnn.Dropout()(nn.Dropout()を直接使用して、実際にはF.dropoutに対するパッケージであり、self.triningも入ってきました。)Ref: https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/dropout.py#L46
踏んだばかりの穴が、もう少しで泣きそうになりましたTT.---百個のdropoutを加えたのに、どうして全然変わってないですか?
F.dropout(nn.functional.dropout)を使用する場合、そのtriningという状態パラメータを設定する必要があります。モデル全体と一致します。
たとえば:
Class DropoutFC(nn.Module):
def __init__(self):
super(DropoutFC, self).__init__()
self.fc = nn.Linear(100,20)
def forward(self, input):
out = self.fc(input)
out = F.dropout(out, p=0.5)
return out
Net = DropoutFC()
Net.train()
# train the Net
正確な使用方法は、モデル全体のtrining状態パラメータをdropout関数に導入する。
Class DropoutFC(nn.Module):
def __init__(self):
super(DropoutFC, self).__init__()
self.fc = nn.Linear(100,20)
def forward(self, input):
out = self.fc(input)
out = F.dropout(out, p=0.5, training=self.training)
return out
Net = DropoutFC()
Net.train()
# train the Net
またはnn.Dropout()(nn.Dropout()を直接使用して、実際にはF.dropoutに対するパッケージであり、self.triningも入ってきました。)Ref: https://github.com/pytorch/pytorch/blob/master/torch/nn/modules/dropout.py#L46
Class DropoutFC(nn.Module):
def __init__(self):
super(DropoutFC, self).__init__()
self.fc = nn.Linear(100,20)
self.dropout = nn.Dropout(p=0.5)
def forward(self, input):
out = self.fc(input)
out = self.dropout(out)
return out
Net = DropoutFC()
Net.train()