import torch from torch import Tensor from torch import nn from typing import Dict import os import json class Dropout(nn.Module): """Dropout layer. :param dropout: Sets a dropout value for dense layer. """ def __init__(self, dropout: float = 0.2): super(Dropout, self).__init__() self.dropout = dropout self.dropout_layer = nn.Dropout(self.dropout) def forward(self, features: Dict[str, Tensor]): features.update({'sentence_embedding': self.dropout_layer(features['sentence_embedding'])}) return features def save(self, output_path): with open(os.path.join(output_path, 'config.json'), 'w') as fOut: json.dump({'dropout': self.dropout}, fOut) @staticmethod def load(input_path): with open(os.path.join(input_path, 'config.json')) as fIn: config = json.load(fIn) model = Dropout(**config) return model