Я хочу обучить ансамбль моделей, используя tf.keras
. Прямой проход выглядит примерно так:
def call(self, inputs, training=None, mask=None):
mean_predictions = []
variance_predictions = []
for idx in range(self.num_models):
predictions = self.model[idx](inputs, training=training)
mean_predictions.append(predictions[:, 0])
variance_predictions.append(tf.math.softplus(predictions[:, 1]))
mean_stack = tf.stack(mean_predictions)
variance_stack = tf.stack(variance_predictions)
model_output = tf.stack([mean_stack, variance_stack]) # [2, num_models, None]
model_output = tf.transpose(model_output, perm=[0, 2, 1]) # [2, None, num_models]
return model_output
Однако я бы хотел, чтобы каждый ансамбль использовал разные подмножества данных в каждом прямом проходе. Это возможно? В приведенном выше фрагменте все модели используют один и тот же пакет, поскольку это inputs
, переданное через метод tf.keras.Models.fit()
.