我们从Python开源项目中,提取了以下4个代码示例,用于说明如何使用torch.nn.Hardtanh()。
def hard_tanh(min_val=-1, max_val=1, inplace=False): return nn.Hardtanh(min_value=min_val, max_value=max_val, inplace=inplace)
def __init__(self): super(BinaryTanh, self).__init__() self.hardtanh = nn.Hardtanh()
def __init__(self, rnn_type=nn.LSTM, labels="abc", rnn_hidden_size=768, nb_layers=5, audio_conf=None, bidirectional=True, context=20): super(DeepSpeech, self).__init__() # model metadata needed for serialization/deserialization if audio_conf is None: audio_conf = {} self._version = '0.0.1' self._hidden_size = rnn_hidden_size self._hidden_layers = nb_layers self._rnn_type = rnn_type self._audio_conf = audio_conf or {} self._labels = labels self._bidirectional = bidirectional sample_rate = self._audio_conf.get("sample_rate", 16000) window_size = self._audio_conf.get("window_size", 0.02) num_classes = len(self._labels) self.conv = nn.Sequential( nn.Conv2d(1, 32, kernel_size=(41, 11), stride=(2, 2), padding=(0, 10)), nn.BatchNorm2d(32), nn.Hardtanh(0, 20, inplace=True), nn.Conv2d(32, 32, kernel_size=(21, 11), stride=(2, 1), ), nn.BatchNorm2d(32), nn.Hardtanh(0, 20, inplace=True) ) # Based on above convolutions and spectrogram size using conv formula (W - F + 2P)/ S+1 rnn_input_size = int(math.floor((sample_rate * window_size) / 2) + 1) rnn_input_size = int(math.floor(rnn_input_size - 41) / 2 + 1) rnn_input_size = int(math.floor(rnn_input_size - 21) / 2 + 1) rnn_input_size *= 32 rnns = [] rnn = BatchRNN(input_size=rnn_input_size, hidden_size=rnn_hidden_size, rnn_type=rnn_type, bidirectional=bidirectional, batch_norm=False) rnns.append(('0', rnn)) for x in range(nb_layers - 1): rnn = BatchRNN(input_size=rnn_hidden_size, hidden_size=rnn_hidden_size, rnn_type=rnn_type, bidirectional=bidirectional) rnns.append(('%d' % (x + 1), rnn)) self.rnns = nn.Sequential(OrderedDict(rnns)) self.lookahead = nn.Sequential( # consider adding batch norm? Lookahead(rnn_hidden_size, context=context), nn.Hardtanh(0, 20, inplace=True) ) if not bidirectional else None fully_connected = nn.Sequential( nn.BatchNorm1d(rnn_hidden_size), nn.Linear(rnn_hidden_size, num_classes, bias=False) ) self.fc = nn.Sequential( SequenceWise(fully_connected), ) self.inference_softmax = InferenceBatchSoftmax()
def __init__(self, rnn_type=nn.LSTM, labels="abc", rnn_hidden_size=768, nb_layers=5, audio_conf=None, bidirectional=True): super(DeepSpeech, self).__init__() # model metadata needed for serialization/deserialization if audio_conf is None: audio_conf = {} self._version = '0.0.1' self._hidden_size = rnn_hidden_size self._hidden_layers = nb_layers self._rnn_type = rnn_type self._audio_conf = audio_conf or {} self._labels = labels sample_rate = self._audio_conf.get("sample_rate", 16000) window_size = self._audio_conf.get("window_size", 0.02) num_classes = len(self._labels) self.conv = nn.Sequential( nn.Conv2d(1, 32, kernel_size=(41, 11), stride=(2, 2)), nn.BatchNorm2d(32), nn.Hardtanh(0, 20, inplace=True), nn.Conv2d(32, 32, kernel_size=(21, 11), stride=(2, 1)), nn.BatchNorm2d(32), nn.Hardtanh(0, 20, inplace=True) ) # Based on above convolutions and spectrogram size using conv formula (W - F + 2P)/ S+1 rnn_input_size = int(math.floor((sample_rate * window_size) / 2) + 1) rnn_input_size = int(math.floor(rnn_input_size - 41) / 2 + 1) rnn_input_size = int(math.floor(rnn_input_size - 21) / 2 + 1) rnn_input_size *= 32 rnns = [] rnn = BatchRNN(input_size=rnn_input_size, hidden_size=rnn_hidden_size, rnn_type=rnn_type, bidirectional=bidirectional, batch_norm=False) rnns.append(('0', rnn)) for x in range(nb_layers - 1): rnn = BatchRNN(input_size=rnn_hidden_size, hidden_size=rnn_hidden_size, rnn_type=rnn_type, bidirectional=bidirectional) rnns.append(('%d' % (x + 1), rnn)) self.rnns = nn.Sequential(OrderedDict(rnns)) fully_connected = nn.Sequential( nn.BatchNorm1d(rnn_hidden_size), nn.Linear(rnn_hidden_size, num_classes, bias=False) ) self.fc = nn.Sequential( SequenceWise(fully_connected), ) self.inference_log_softmax = InferenceBatchLogSoftmax()