Skip to content

Commit 4f90708

Browse files
kit1980agunapal
andauthored
Update deprecated TorchVision and PyTorch APIs (#3074)
* Use weights parameter for vision models * Update torch.qr * More pre-commit --------- Co-authored-by: Ankith Gunapal <[email protected]>
1 parent f9e5862 commit 4f90708

File tree

3 files changed

+77
-57
lines changed

3 files changed

+77
-57
lines changed
+13-8
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
from torchvision.models.segmentation.deeplabv3 import DeepLabV3
2-
from torchvision.models import resnet
3-
from intermediate_layer_getter import IntermediateLayerGetter
41
from deeplabv3 import DeepLabHead
52
from fcn import FCNHead
3+
from intermediate_layer_getter import IntermediateLayerGetter
4+
from torchvision import models
5+
from torchvision.models import resnet
6+
from torchvision.models.segmentation.deeplabv3 import DeepLabV3
67

78

89
class DeepLabV3ImageSegmenter(DeepLabV3):
@@ -11,15 +12,19 @@ class DeepLabV3ImageSegmenter(DeepLabV3):
1112
"""
1213

1314
def __init__(self, num_classes=21, **kwargs):
14-
backbone = resnet.resnet101(pretrained=True,
15-
replace_stride_with_dilation=[False, True, True])
16-
return_layers = {'layer4': 'out'}
17-
return_layers['layer3'] = 'aux'
15+
backbone = resnet.resnet101(
16+
weights=models.ResNet101_Weights.IMAGENET1K_V1,
17+
replace_stride_with_dilation=[False, True, True],
18+
)
19+
return_layers = {"layer4": "out"}
20+
return_layers["layer3"] = "aux"
1821
backbone = IntermediateLayerGetter(backbone, return_layers=return_layers)
1922

2023
inplanes = 1024
2124
aux_classifier = FCNHead(inplanes, num_classes)
2225
inplanes = 2048
2326
classifier = DeepLabHead(inplanes, num_classes)
2427

25-
super(DeepLabV3ImageSegmenter, self).__init__(backbone, classifier, aux_classifier)
28+
super(DeepLabV3ImageSegmenter, self).__init__(
29+
backbone, classifier, aux_classifier
30+
)

examples/image_segmenter/fcn/model.py

+10-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
from torchvision.models.segmentation.fcn import FCN
2-
from torchvision.models import resnet
3-
from intermediate_layer_getter import IntermediateLayerGetter
41
from fcn import FCNHead
2+
from intermediate_layer_getter import IntermediateLayerGetter
3+
from torchvision import models
4+
from torchvision.models import resnet
5+
from torchvision.models.segmentation.fcn import FCN
56

67

78
class FCNImageSegmenter(FCN):
@@ -10,10 +11,12 @@ class FCNImageSegmenter(FCN):
1011
"""
1112

1213
def __init__(self, num_classes=21, **kwargs):
13-
backbone = resnet.resnet101(pretrained=True,
14-
replace_stride_with_dilation=[False, True, True])
15-
return_layers = {'layer4': 'out'}
16-
return_layers['layer3'] = 'aux'
14+
backbone = resnet.resnet101(
15+
weights=models.ResNet101_Weights.IMAGENET1K_V1,
16+
replace_stride_with_dilation=[False, True, True],
17+
)
18+
return_layers = {"layer4": "out"}
19+
return_layers["layer3"] = "aux"
1720
backbone = IntermediateLayerGetter(backbone, return_layers=return_layers)
1821

1922
inplanes = 1024

examples/text_to_speech_synthesizer/waveglow_model.py

+54-42
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
#
2626
# *****************************************************************************
2727
import torch
28-
from torch.autograd import Variable
2928
import torch.nn.functional as F
29+
from torch.autograd import Variable
3030

3131

3232
@torch.jit.script
@@ -48,11 +48,12 @@ class Invertible1x1Conv(torch.nn.Module):
4848

4949
def __init__(self, c):
5050
super(Invertible1x1Conv, self).__init__()
51-
self.conv = torch.nn.Conv1d(c, c, kernel_size=1, stride=1, padding=0,
52-
bias=False)
51+
self.conv = torch.nn.Conv1d(
52+
c, c, kernel_size=1, stride=1, padding=0, bias=False
53+
)
5354

5455
# Sample a random orthonormal matrix to initialize weights
55-
W = torch.qr(torch.FloatTensor(c, c).normal_())[0]
56+
W = torch.linalg.qr(torch.FloatTensor(c, c).normal_())[0]
5657

5758
# Ensure determinant is 1.0 not -1.0
5859
if torch.det(W) < 0:
@@ -67,18 +68,25 @@ def forward(self, z, reverse=False):
6768
W = self.conv.weight.squeeze()
6869

6970
if reverse:
70-
if not hasattr(self, 'W_inverse'):
71+
if not hasattr(self, "W_inverse"):
7172
# Reverse computation
7273
W_inverse = W.float().inverse()
7374
W_inverse = Variable(W_inverse[..., None])
74-
if z.type() == 'torch.cuda.HalfTensor' or z.type() == 'torch.HalfTensor':
75+
if (
76+
z.type() == "torch.cuda.HalfTensor"
77+
or z.type() == "torch.HalfTensor"
78+
):
7579
W_inverse = W_inverse.half()
7680
self.W_inverse = W_inverse
7781
z = F.conv1d(z, self.W_inverse, bias=None, stride=1, padding=0)
7882
return z
7983
else:
8084
# Forward computation
81-
log_det_W = batch_size * n_of_groups * torch.logdet(W.unsqueeze(0).float()).squeeze()
85+
log_det_W = (
86+
batch_size
87+
* n_of_groups
88+
* torch.logdet(W.unsqueeze(0).float()).squeeze()
89+
)
8290
z = self.conv(z)
8391
return z, log_det_W
8492

@@ -90,19 +98,20 @@ class WN(torch.nn.Module):
9098
also no dilation size reset. The dilation only doubles on each layer
9199
"""
92100

93-
def __init__(self, n_in_channels, n_mel_channels, n_layers, n_channels,
94-
kernel_size):
101+
def __init__(
102+
self, n_in_channels, n_mel_channels, n_layers, n_channels, kernel_size
103+
):
95104
super(WN, self).__init__()
96-
assert(kernel_size % 2 == 1)
97-
assert(n_channels % 2 == 0)
105+
assert kernel_size % 2 == 1
106+
assert n_channels % 2 == 0
98107
self.n_layers = n_layers
99108
self.n_channels = n_channels
100109
self.in_layers = torch.nn.ModuleList()
101110
self.res_skip_layers = torch.nn.ModuleList()
102111
self.cond_layers = torch.nn.ModuleList()
103112

104113
start = torch.nn.Conv1d(n_in_channels, n_channels, 1)
105-
start = torch.nn.utils.weight_norm(start, name='weight')
114+
start = torch.nn.utils.weight_norm(start, name="weight")
106115
self.start = start
107116

108117
# Initializing last layer to 0 makes the affine coupling layers
@@ -113,15 +122,20 @@ def __init__(self, n_in_channels, n_mel_channels, n_layers, n_channels,
113122
self.end = end
114123

115124
for i in range(n_layers):
116-
dilation = 2 ** i
125+
dilation = 2**i
117126
padding = int((kernel_size * dilation - dilation) / 2)
118-
in_layer = torch.nn.Conv1d(n_channels, 2 * n_channels, kernel_size,
119-
dilation=dilation, padding=padding)
120-
in_layer = torch.nn.utils.weight_norm(in_layer, name='weight')
127+
in_layer = torch.nn.Conv1d(
128+
n_channels,
129+
2 * n_channels,
130+
kernel_size,
131+
dilation=dilation,
132+
padding=padding,
133+
)
134+
in_layer = torch.nn.utils.weight_norm(in_layer, name="weight")
121135
self.in_layers.append(in_layer)
122136

123137
cond_layer = torch.nn.Conv1d(n_mel_channels, 2 * n_channels, 1)
124-
cond_layer = torch.nn.utils.weight_norm(cond_layer, name='weight')
138+
cond_layer = torch.nn.utils.weight_norm(cond_layer, name="weight")
125139
self.cond_layers.append(cond_layer)
126140

127141
# last one is not necessary
@@ -130,8 +144,7 @@ def __init__(self, n_in_channels, n_mel_channels, n_layers, n_channels,
130144
else:
131145
res_skip_channels = n_channels
132146
res_skip_layer = torch.nn.Conv1d(n_channels, res_skip_channels, 1)
133-
res_skip_layer = torch.nn.utils.weight_norm(
134-
res_skip_layer, name='weight')
147+
res_skip_layer = torch.nn.utils.weight_norm(res_skip_layer, name="weight")
135148
self.res_skip_layers.append(res_skip_layer)
136149

137150
def forward(self, forward_input):
@@ -142,12 +155,13 @@ def forward(self, forward_input):
142155
acts = fused_add_tanh_sigmoid_multiply(
143156
self.in_layers[i](audio),
144157
self.cond_layers[i](spect),
145-
torch.IntTensor([self.n_channels]))
158+
torch.IntTensor([self.n_channels]),
159+
)
146160

147161
res_skip_acts = self.res_skip_layers[i](acts)
148162
if i < self.n_layers - 1:
149-
audio = res_skip_acts[:, :self.n_channels, :] + audio
150-
skip_acts = res_skip_acts[:, self.n_channels:, :]
163+
audio = res_skip_acts[:, : self.n_channels, :] + audio
164+
skip_acts = res_skip_acts[:, self.n_channels :, :]
151165
else:
152166
skip_acts = res_skip_acts
153167

@@ -159,14 +173,15 @@ def forward(self, forward_input):
159173

160174

161175
class WaveGlow(torch.nn.Module):
162-
def __init__(self, n_mel_channels, n_flows, n_group, n_early_every,
163-
n_early_size, WN_config):
176+
def __init__(
177+
self, n_mel_channels, n_flows, n_group, n_early_every, n_early_size, WN_config
178+
):
164179
super(WaveGlow, self).__init__()
165180

166-
self.upsample = torch.nn.ConvTranspose1d(n_mel_channels,
167-
n_mel_channels,
168-
1024, stride=256)
169-
assert(n_group % 2 == 0)
181+
self.upsample = torch.nn.ConvTranspose1d(
182+
n_mel_channels, n_mel_channels, 1024, stride=256
183+
)
184+
assert n_group % 2 == 0
170185
self.n_flows = n_flows
171186
self.n_group = n_group
172187
self.n_early_every = n_early_every
@@ -196,9 +211,9 @@ def forward(self, forward_input):
196211

197212
# Upsample spectrogram to size of audio
198213
spect = self.upsample(spect)
199-
assert(spect.size(2) >= audio.size(1))
214+
assert spect.size(2) >= audio.size(1)
200215
if spect.size(2) > audio.size(1):
201-
spect = spect[:, :, :audio.size(1)]
216+
spect = spect[:, :, : audio.size(1)]
202217

203218
spect = spect.unfold(2, self.n_group, self.n_group).permute(0, 2, 1, 3)
204219
spect = spect.contiguous().view(spect.size(0), spect.size(1), -1)
@@ -211,8 +226,8 @@ def forward(self, forward_input):
211226

212227
for k in range(self.n_flows):
213228
if k % self.n_early_every == 0 and k > 0:
214-
output_audio.append(audio[:, :self.n_early_size, :])
215-
audio = audio[:, self.n_early_size:, :]
229+
output_audio.append(audio[:, : self.n_early_size, :])
230+
audio = audio[:, self.n_early_size :, :]
216231

217232
audio, log_det_W = self.convinv[k](audio)
218233
log_det_W_list.append(log_det_W)
@@ -233,7 +248,6 @@ def forward(self, forward_input):
233248
return torch.cat(output_audio, 1), log_s_list, log_det_W_list
234249

235250
def infer(self, spect, sigma=1.0):
236-
237251
spect = self.upsample(spect)
238252
# trim conv artifacts. maybe pad spec to kernel multiple
239253
time_cutoff = self.upsample.kernel_size[0] - self.upsample.stride[0]
@@ -243,9 +257,9 @@ def infer(self, spect, sigma=1.0):
243257
spect = spect.contiguous().view(spect.size(0), spect.size(1), -1)
244258
spect = spect.permute(0, 2, 1)
245259

246-
audio = torch.randn(spect.size(0),
247-
self.n_remaining_channels,
248-
spect.size(2), device=spect.device).to(spect.dtype)
260+
audio = torch.randn(
261+
spect.size(0), self.n_remaining_channels, spect.size(2), device=spect.device
262+
).to(spect.dtype)
249263

250264
audio = torch.autograd.Variable(sigma * audio)
251265

@@ -263,16 +277,14 @@ def infer(self, spect, sigma=1.0):
263277
audio = self.convinv[k](audio, reverse=True)
264278

265279
if k % self.n_early_every == 0 and k > 0:
266-
z = torch.randn(spect.size(0), self.n_early_size, spect.size(
267-
2), device=spect.device).to(spect.dtype)
280+
z = torch.randn(
281+
spect.size(0), self.n_early_size, spect.size(2), device=spect.device
282+
).to(spect.dtype)
268283
audio = torch.cat((sigma * z, audio), 1)
269284

270-
audio = audio.permute(
271-
0, 2, 1).contiguous().view(
272-
audio.size(0), -1).data
285+
audio = audio.permute(0, 2, 1).contiguous().view(audio.size(0), -1).data
273286
return audio
274287

275-
276288
@staticmethod
277289
def remove_weightnorm(model):
278290
waveglow = model

0 commit comments

Comments
 (0)