#numpy #tensorflow #ram #imbalanced-data #smote
Вопрос:
Я работал над несбалансированным набором данных с почти 17 тысячами изображений и пытался реализовать метод передискретизации, такой как SMOTE, используя библиотеку несбалансированного обучения. Изображения и метки загружаются в виде тензоров, в то время как методы, доступные в библиотеке несбалансированного обучения, требуют массивов numpy. Я уже пытался извлечь изображения из набора данных tensorflow, но примерно после 10 тысяч изображений моя сессия в Google colab завершается сбоем, потому что у меня заканчивается оперативная память. Я также пытался найти другой подход, но не смог найти ничего другого. Вот почему я хотел бы знать, есть ли у вас какие-либо предложения, которые действительно могли бы помочь мне преодолеть эту проблему.
Я следую следующему шагу:
Я импортирую данные с помощью каталога tf.keras.предварительная обработка.image_dataset_from_directory.
def create_dataset(folder_path, name, split, seed, shuffle=True):
return tf.keras.preprocessing.image_dataset_from_directory(
folder_path, labels='inferred', label_mode='categorical', color_mode='rgb',
batch_size=32, image_size=(320, 320), shuffle=shuffle, interpolation='bilinear',
validation_split=split, subset=name, seed=seed)
valid_split = 0.3
train_set = create_dataset(dir_path, 'training', valid_split, 42, shuffle=True).prefetch(1)
valid_set = create_dataset(dir_path, 'validation', valid_split, 42, shuffle=True).prefetch(1)
# output:
# Found 16718 files belonging to 38 classes.
# Using 11703 files for training.
# Found 16718 files belonging to 38 classes.
# Using 5015 files for validation.
Затем я запускаю эту строку кода, чтобы получить изображения из набора данных tf в виде массива numpy, но, как я уже говорил, в этот момент мой сеанс завершается сбоем.
X_train = np.concatenate([x for x, y in train_set], axis=0)
Спасибо за вашу поддержку.
Комментарии:
1. Может быть, вы могли бы обернуть его с помощью функции numpy_function