TensorFlow — несоответствие формы ввода SimpleRNN
У меня есть набор данных с 30 временными шагами и 1 входом. Он имеет двоичную метку (т. е. цель). Итак, основываясь на последовательности, я хотел бы предсказать, является ли последовательность «1» или «0». Простой!
Я строю такую модель:
n_steps = 30
n_inputs = 1
model = keras.models.Sequential([
keras.layers.SimpleRNN(8, return_sequences=True, input_shape=[n_steps, n_inputs] ),
keras.layers.SimpleRNN(8, return_sequences=True),
keras.layers.SimpleRNN(8),
keras.layers.Dense(1, activation='sigmoid')
])
Это работает просто отлично. Когда я пытаюсь сделать прогноз, требуется аналогичный экземпляр (с 30 временными шагами и 1 входом) — и это нормально.
Хотя я тоже могу построить такую же модель (без input_shape):
n_steps = 30
n_inputs = 1
model = keras.models.Sequential([
keras.layers.SimpleRNN(8, return_sequences=True),
keras.layers.SimpleRNN(8, return_sequences=True),
keras.layers.SimpleRNN(8),
keras.layers.Dense(1, activation='sigmoid')
])
Это также хорошо тренируется (и генерирует такое же значение точности). Хотя теперь я могу предсказать экземпляр с разными временными шагами. Например, я могу предсказать экземпляр с 3 временными шагами и 1 вводом.
Как это происходит??? Где я могу найти больше информации об этом? Почему в этом случае модели не требуется экземпляр с 30 временными шагами? Если я отправлю экземпляр только с 3 временными шагами, как модель учитывает недостающие 27 временных шагов? Любая информация очень ценится.