В используемой мной реализации lstm инициализируется следующим образом:
l_lstm = Bidirectional(LSTM(64, return_sequences=True))(embedded_sequences)
Что я на самом деле не понимаю, и это может быть из-за недостатка опыта в Python в целом:запись l_lstm= Bidirectional(LSTM(...))(embedded_sequences)
.Я не понимаю, что я передаю embedded_sequences
?Потому что это не параметр LSTM()
, но он также не является аргументом для Bidirectional()
в отдельности.
Вот документация для двунаправленного:
def __init__(self, layer, merge_mode='concat', weights=None, **kwargs):
if merge_mode not in ['sum', 'mul', 'ave', 'concat', None]:
raise ValueError('Invalid merge mode. '
'Merge mode should be one of '
'{"sum", "mul", "ave", "concat", None}')
self.forward_layer = copy.copy(layer)
config = layer.get_config()
config['go_backwards'] = not config['go_backwards']
self.backward_layer = layer.__class__.from_config(config)
self.forward_layer.name = 'forward_' + self.forward_layer.name
self.backward_layer.name = 'backward_' + self.backward_layer.name
self.merge_mode = merge_mode
if weights:
nw = len(weights)
self.forward_layer.initial_weights = weights[:nw // 2]
self.backward_layer.initial_weights = weights[nw // 2:]
self.stateful = layer.stateful
self.return_sequences = layer.return_sequences
self.return_state = layer.return_state
self.supports_masking = True
self._trainable = True
super(Bidirectional, self).__init__(layer, **kwargs)
self.input_spec = layer.input_spec
self._num_constants = None