Hi,
I used to use SpatialDoupout on embeddings like this:
import os
import numpy as np
from torch import nn
import torch
from torch.autograd import Variable
from torch.nn._functions.dropout import Dropout
from itertools import repeat
from torch.nn.modules.dropout import _DropoutNd
class _SpatialDropout(Dropout):
def __init__(self):
super(_SpatialDropout,self).__init__()
@staticmethod
def symbolic(g, input, p=0.5, train=False, inplace=False):
# See Note [Export inplace]
# NB: In inference mode, FeatureDropout is exported as an identity op.
from torch.onnx.symbolic import _unimplemented
if train:
return _unimplemented("FeatureDropout", "training mode")
return input
@staticmethod
def _make_noise(input):
print('input:')
print(input)
return input.new().resize_(input.size()[0],
*repeat(1, input.dim() - 2),
input.size()[2])
class SpatialDropout(_DropoutNd):
def __init__(self,p):
super(SpatialDropout,self).__init__()
self.p = p
self.function = _SpatialDropout()
def forward(self, input):
return self.function.apply(input, self.p, self.training, self.inplace)
My pytorch version is 0.4.1, when I use it in ver 1.0.0 I got:
ModuleNotFoundError: No module named ‘torch.nn._functions.dropout’
How can I migrate to version 1.0?
Thanks!