38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
import torch.nn as nn
|
|
|
|
def remove_padding(tensors, lengths):
|
|
return [tensor[:tensor_length] for tensor, tensor_length in zip(tensors, lengths)]
|
|
|
|
class AutoParams(nn.Module):
|
|
def __init__(self, **kargs):
|
|
try:
|
|
for param in self.needed_params:
|
|
if param in kargs:
|
|
setattr(self, param, kargs[param])
|
|
else:
|
|
raise ValueError(f"{param} is needed.")
|
|
except :
|
|
pass
|
|
|
|
try:
|
|
for param, default in self.optional_params.items():
|
|
if param in kargs and kargs[param] is not None:
|
|
setattr(self, param, kargs[param])
|
|
else:
|
|
setattr(self, param, default)
|
|
except :
|
|
pass
|
|
super().__init__()
|
|
|
|
|
|
# taken from joeynmt repo
|
|
def freeze_params(module: nn.Module) -> None:
|
|
"""
|
|
Freeze the parameters of this module,
|
|
i.e. do not update them during training
|
|
|
|
:param module: freeze parameters of this module
|
|
"""
|
|
for _, p in module.named_parameters():
|
|
p.requires_grad = False
|