Возможно, но Keras не сделает этого за вас, так как он перемешивает данные и метки вместе.Предполагая, что у вас есть метки, я нашел эту функцию весьма полезной для ваших целей:
import numpy as np
def create_pairs(data, labels):
# Exclude batch dimension
pairs = np.empty(0, 2, *data.shape[1:])
for label in np.unique(labels):
idxs = np.where(labels == label)[0]
# Indexes must be even in order to create pairs
idxs = idxs if len(idxs) % 2 == 0 else idxs[:-1]
np.random.shuffle(idxs)
samples = data[idxs].reshape((-1, 2, *data.shape[1:]))
pairs = np.vstack((pairs, samples))
return pairs[:, 0], pairs[:, 1]
Теперь, когда данные перемешаны и разделены на пары, вы можете обучить вашу модель:
x_train, y_train = create_pairs(data, labels)
history = model.fit(
x_train, y_train,
batch_size=32,
epochs=1000,
shuffle=True,
callbacks=[checkpoint, early_stopping],
validation_split=0.2)