本文整理匯總了Python中torch.nn.LSTM屬性的典型用法代碼示例。如果您正苦於以下問題:Python nn.LSTM屬性的具體用法?Python nn.LSTM怎麽用?Python nn.LSTM使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類torch.nn
的用法示例。
在下文中一共展示了nn.LSTM屬性的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self,n_bins,ip_bin_size,hm,args):
super(recurrent_encoder,self).__init__()
self.bin_rnn_size=args.bin_rnn_size
self.ipsize=ip_bin_size
self.seq_length=n_bins
self.num_directions=2 if args.bidirectional else 1
if (hm==False):
self.bin_rnn_size=args.bin_rnn_size
else:
self.bin_rnn_size=args.bin_rnn_size // 2
self.bin_rep_size=self.bin_rnn_size*self.num_directions
self.rnn=nn.LSTM(self.ipsize,self.bin_rnn_size,num_layers=args.num_layers,dropout=args.dropout,bidirectional=args.bidirectional)
self.bin_attention=rec_attention(hm,args)
示例2: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self, **kwargs):
super(BiLSTM, self).__init__()
for k in kwargs:
self.__setattr__(k, kwargs[k])
V = self.embed_num
D = self.embed_dim
C = self.label_num
paddingId = self.paddingId
self.embed = nn.Embedding(V, D, padding_idx=paddingId)
if self.pretrained_embed:
self.embed.weight.data.copy_(self.pretrained_weight)
else:
init_embedding(self.embed.weight)
self.dropout_embed = nn.Dropout(self.dropout_emb)
self.dropout = nn.Dropout(self.dropout)
self.bilstm = nn.LSTM(input_size=D, hidden_size=self.lstm_hiddens, num_layers=self.lstm_layers,
bidirectional=True, batch_first=True, bias=True)
self.linear = nn.Linear(in_features=self.lstm_hiddens * 2, out_features=C, bias=True)
init_linear(self.linear)
示例3: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self, input_size=50, hidden_size=256, dropout=0, bidirectional=False, num_layers=1, activation_function="tanh"):
"""
Args:
input_size: dimention of input embedding
hidden_size: hidden size
dropout: dropout layer on the outputs of each RNN layer except the last layer
bidirectional: if it is a bidirectional RNN
num_layers: number of recurrent layers
activation_function: the activation function of RNN, tanh/relu
"""
super().__init__()
if bidirectional:
hidden_size /= 2
self.lstm = nn.LSTM(input_size,
hidden_size,
num_layers,
nonlinearity=activation_function,
dropout=dropout,
bidirectional=bidirectional)
示例4: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self, vocab_size, embed_size, hidden_size, dropout=None, \
bidirectional=False, shared_embed=None, init_word_embed=None, rnn_type='lstm', use_cuda=True):
super(EncoderRNN, self).__init__()
if not rnn_type in ('lstm', 'gru'):
raise RuntimeError('rnn_type is expected to be lstm or gru, got {}'.format(rnn_type))
if bidirectional:
print('[ Using bidirectional {} encoder ]'.format(rnn_type))
else:
print('[ Using {} encoder ]'.format(rnn_type))
if bidirectional and hidden_size % 2 != 0:
raise RuntimeError('hidden_size is expected to be even in the bidirectional mode!')
self.dropout = dropout
self.rnn_type = rnn_type
self.use_cuda = use_cuda
self.hidden_size = hidden_size // 2 if bidirectional else hidden_size
self.num_directions = 2 if bidirectional else 1
self.embed = shared_embed if shared_embed is not None else nn.Embedding(vocab_size, embed_size, padding_idx=0)
model = nn.LSTM if rnn_type == 'lstm' else nn.GRU
self.model = model(embed_size, self.hidden_size, 1, batch_first=True, bidirectional=bidirectional)
if shared_embed is None:
self.init_weights(init_word_embed)
示例5: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self, vocab_size, label_size, mode='elman', bidirectional=False, cuda=False, is_training=True):
super(SlotFilling, self).__init__()
self.is_training = is_training
embedding_dim = 100
hidden_size = 75
self.embedding = nn.Embedding(vocab_size, embedding_dim)
if mode == 'lstm':
self.rnn = nn.LSTM(input_size=embedding_dim,
hidden_size=hidden_size,
bidirectional=bidirectional,
batch_first=True)
else:
self.rnn = RNN(input_size=embedding_dim,
hidden_size=hidden_size,
mode=mode,
cuda=cuda,
bidirectional=bidirectional,
batch_first=True)
if bidirectional:
self.fc = nn.Linear(2*hidden_size, label_size)
else:
self.fc = nn.Linear(hidden_size, label_size)
示例6: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self, hidden_size, output_size, n_layers=1, dropout=0.1):
super(PtrDecoderRNN, self).__init__()
self.hidden_size = hidden_size
self.output_size = output_size ### Vocab size
self.n_layers = n_layers
self.dropout = dropout
self.embedding = nn.Embedding(output_size, hidden_size)
self.embedding_dropout = nn.Dropout(dropout)
self.lstm = nn.LSTM(2*hidden_size, hidden_size, n_layers, dropout=dropout)
self.W1 = nn.Linear(2*hidden_size, hidden_size)
self.v = nn.Parameter(torch.rand(hidden_size))
stdv = 1. / math.sqrt(self.v.size(0))
self.v.data.normal_(mean=0, std=stdv)
self.concat = nn.Linear(hidden_size * 2, hidden_size)
self.U = nn.Linear(hidden_size, output_size)
self.W = nn.Linear(hidden_size, 1)
if USE_CUDA:
self.embedding = self.embedding.cuda()
self.embedding_dropout = self.embedding_dropout.cuda()
self.lstm = self.lstm.cuda()
self.W1 = self.W1.cuda()
self.v = self.v.cuda()
self.U = self.U.cuda()
self.W = self.W.cuda()
示例7: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self, vocab_size, embed_size, hidden_size, input_dropout_p=0, dropout_p=0, n_layers=1,
rnn_cell='GRU', variable_lengths=False, embedding=None, update_embedding=True):
super(Encoder, self).__init__()
self.vocab_size = vocab_size
self.hidden_size = hidden_size
self.n_layers = n_layers
self.input_dropout = nn.Dropout(p=input_dropout_p)
if rnn_cell == 'LSTM':
self.rnn_cell = nn.LSTM
elif rnn_cell == 'GRU':
self.rnn_cell = nn.GRU
else:
raise ValueError("Unsupported RNN Cell: {0}".format(rnn_cell))
self.variable_lengths = variable_lengths
self.embedding = nn.Embedding(vocab_size, embed_size)
if embedding is not None:
self.embedding.weight = nn.Parameter(embedding)
self.embedding.weight.requires_grad = update_embedding
self.rnn = self.rnn_cell(embed_size, hidden_size, n_layers, batch_first=True, dropout=dropout_p)
示例8: whatCellType
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def whatCellType(input_size, hidden_size, cell_type, dropout_rate):
if cell_type == 'rnn':
cell = nn.RNN(input_size, hidden_size, dropout=dropout_rate, batch_first=False)
init_gru(cell)
return cell
elif cell_type == 'gru':
cell = nn.GRU(input_size, hidden_size, dropout=dropout_rate, batch_first=False)
init_gru(cell)
return cell
elif cell_type == 'lstm':
cell = nn.LSTM(input_size, hidden_size, dropout=dropout_rate, batch_first=False)
init_lstm(cell)
return cell
elif cell_type == 'bigru':
cell = nn.GRU(input_size, hidden_size, bidirectional=True, dropout=dropout_rate, batch_first=False)
init_gru(cell)
return cell
elif cell_type == 'bilstm':
cell = nn.LSTM(input_size, hidden_size, bidirectional=True, dropout=dropout_rate, batch_first=False)
init_lstm(cell)
return cell
示例9: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self, batch=32, bidirectional=True):
super(BLSTM, self).__init__()
self.bidirectional = bidirectional
self.hidden = self.init_hidden(batch)
self.lstm = nn.LSTM(257, 50, num_layers=2, bidirectional=True)
self.fc = nn.Linear(50*2,1)
## Weights initialization
def _weights_init(m):
if isinstance(m, nn.Conv2d or nn.Linear or nn.GRU or nn.LSTM):
init.xavier_normal_(m.weight)
m.bias.data.zero_()
elif isinstance(m, nn.BatchNorm2d or nn.BatchNorm1d):
m.weight.data.fill_(1)
m.bias.data.zero_()
self.apply(_weights_init)
示例10: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self, N_word, N_h, N_depth, use_ca):
super(AggPredictor, self).__init__()
self.use_ca = use_ca
self.agg_lstm = nn.LSTM(input_size=N_word, hidden_size=N_h/2,
num_layers=N_depth, batch_first=True,
dropout=0.3, bidirectional=True)
if use_ca:
print "Using column attention on aggregator predicting"
self.agg_col_name_enc = nn.LSTM(input_size=N_word,
hidden_size=N_h/2, num_layers=N_depth,
batch_first=True, dropout=0.3, bidirectional=True)
self.agg_att = nn.Linear(N_h, N_h)
else:
print "Not using column attention on aggregator predicting"
self.agg_att = nn.Linear(N_h, 1)
self.agg_out = nn.Sequential(nn.Linear(N_h, N_h),
nn.Tanh(), nn.Linear(N_h, 6))
self.softmax = nn.Softmax()
示例11: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self, N_word, N_h, N_depth, max_col_num, max_tok_num, gpu):
super(Seq2SQLCondPredictor, self).__init__()
print "Seq2SQL where prediction"
self.N_h = N_h
self.max_tok_num = max_tok_num
self.max_col_num = max_col_num
self.gpu = gpu
self.cond_lstm = nn.LSTM(input_size=N_word, hidden_size=N_h/2,
num_layers=N_depth, batch_first=True,
dropout=0.3, bidirectional=True)
self.cond_decoder = nn.LSTM(input_size=self.max_tok_num,
hidden_size=N_h, num_layers=N_depth,
batch_first=True, dropout=0.3)
self.cond_out_g = nn.Linear(N_h, N_h)
self.cond_out_h = nn.Linear(N_h, N_h)
self.cond_out = nn.Sequential(nn.Tanh(), nn.Linear(N_h, 1))
self.softmax = nn.Softmax()
示例12: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self, N_word, N_h, N_depth, max_tok_num, use_ca):
super(SelPredictor, self).__init__()
self.use_ca = use_ca
self.max_tok_num = max_tok_num
self.sel_lstm = nn.LSTM(input_size=N_word, hidden_size=N_h/2,
num_layers=N_depth, batch_first=True,
dropout=0.3, bidirectional=True)
if use_ca:
print "Using column attention on selection predicting"
self.sel_att = nn.Linear(N_h, N_h)
else:
print "Not using column attention on selection predicting"
self.sel_att = nn.Linear(N_h, 1)
self.sel_col_name_enc = nn.LSTM(input_size=N_word, hidden_size=N_h/2,
num_layers=N_depth, batch_first=True,
dropout=0.3, bidirectional=True)
self.sel_out_K = nn.Linear(N_h, N_h)
self.sel_out_col = nn.Linear(N_h, N_h)
self.sel_out = nn.Sequential(nn.Tanh(), nn.Linear(N_h, 1))
self.softmax = nn.Softmax()
示例13: forward
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def forward(self, inputs, hidden):
def select_layer(h_state, i): # To work on both LSTM / GRU, RNN
if isinstance(h_state, tuple):
return tuple([select_layer(s, i) for s in h_state])
else:
return h_state[i]
next_hidden = []
for i, layer in enumerate(self.layers):
next_hidden_i = layer(inputs, select_layer(hidden, i))
output = next_hidden_i[0] if isinstance(next_hidden_i, tuple) \
else next_hidden_i
if i + 1 < self.num_layers:
output = self.dropout(output)
if self.residual and inputs.size(-1) == output.size(-1):
inputs = output + inputs
else:
inputs = output
next_hidden.append(next_hidden_i)
if isinstance(hidden, tuple):
next_hidden = tuple([torch.stack(h) for h in zip(*next_hidden)])
else:
next_hidden = torch.stack(next_hidden)
return inputs, next_hidden
開發者ID:nadavbh12,項目名稱:Character-Level-Language-Modeling-with-Deeper-Self-Attention-pytorch,代碼行數:26,代碼來源:recurrent.py
示例14: forward
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def forward(self, inp, previous_hidden=None):
"""
inp: shape batch_size, seq_len, input_size
previous_hidden: if given shape n_layers * num_directions,
batch_size, embedding_dim.
Initialized automatically if None
return: embedded
"""
inp = inp.permute(1, 0, 2)
batch_size = inp.size()[1]
if previous_hidden is None:
previous_hidden = self.init_hidden(batch_size)
if self.layer == 'LSTM':
cell = self.init_cell(batch_size)
previous_hidden = (previous_hidden, cell)
output, _ = self.rnn(inp, previous_hidden)
embedded = output[-1, :, :].squeeze(0)
return embedded, previous_hidden
示例15: __init__
# 需要導入模塊: from torch import nn [as 別名]
# 或者: from torch.nn import LSTM [as 別名]
def __init__(self, num_layers, bidirectional, rnn_size, dropout,
sample_rate, window_size):
super(AudioEncoder, self).__init__()
self.num_layers = num_layers
self.num_directions = 2 if bidirectional else 1
self.hidden_size = rnn_size
self.layer1 = nn.Conv2d(1, 32, kernel_size=(41, 11),
padding=(0, 10), stride=(2, 2))
self.batch_norm1 = nn.BatchNorm2d(32)
self.layer2 = nn.Conv2d(32, 32, kernel_size=(21, 11),
padding=(0, 0), stride=(2, 1))
self.batch_norm2 = nn.BatchNorm2d(32)
input_size = int(math.floor((sample_rate * window_size) / 2) + 1)
input_size = int(math.floor(input_size - 41) / 2 + 1)
input_size = int(math.floor(input_size - 21) / 2 + 1)
input_size *= 32
self.rnn = nn.LSTM(input_size, rnn_size,
num_layers=num_layers,
dropout=dropout,
bidirectional=bidirectional)