Я не понимаю значения входного размера и скрытого размера. Как таким образом определяется gate_input_size?
Я думал, что входом для ворот будут векторы как H (t-1), x (t) и W (x) . Я понимаю, что входные данные для каждого временного шага будут выглядеть примерно так (без сэмплов * первый элемент seq из сэмплов).
Приведенный выше код взят из репозитория pynq / lstm, где входной размер принят за 32, а скрытый размер за 100.
Пожалуйста, объясните мне, что означают эти расчеты
def lstm_ops_per_seq_element(self):
gate_input_size = self.input_size + self.hidden_size + 1 if self.bias_enabled else self.input_size + self.hidden_size
#2 accounts for mul and add separately, 4 is the number of gates
ops = 2 * gate_input_size * 4 * self.hidden_size
#element wise muls and peepholes
ops = ops + 3 * self.hidden_size * 2 if self.peepholes_enabled else ops + 3 * self.hidden_size
#directions
return ops * 2 if self.bidirectional_enabled else ops