Итак, я запускаю tenorflow 2+ python в Google Colab.
Каждый из моих файлов данных представляет собой трехмерное изображение с формой [563, 563, 563, 1], поэтому загружаю их все выдает ошибку исчерпания ресурса.
Я потратил дни и часы на поиски способа загрузки только пакета моего набора данных в качестве тензора и выгрузки / загрузки нового пакета на каждой итерации. Я предполагаю, что может быть способ использовать tf.data.Dataset.list_files, но я не могу найти точный путь.
Есть ли какие-либо хорошие предложения о том, как это сделать, или какие-либо документы, которые я мог бы читать читать? Я прочитал документ tf.data из tenorflow, но не смог найти нужную мне информацию.
Спасибо!
Редактировать
, так что это функция I хочу использовать для загрузки моего изображения
def load_image(ind):
file_brain = "/content/drive/My Drive/brain/" + str(ind) + ".mgz"
file_mask = "/content/drive/My Drive/mask/" + str(ind) + ".mgz"
data_brain, affine = load_nifti(file_brain)
data_mask, affine = load_nifti(file_mask)
data_brain = affine_transform(data_brain, affine)
data_mask = affine_transform(data_mask, affine)
data_brain = normalize(data_brain)
data_brain = zoom(data_brain, (563/256, 563/256, 563/256))
data_brain = tf.expand_dims(data_brain, axis=-1)
data_mask = tf.expand_dims(data_mask, axis=-1)
return data_brain, data_mask
, и таким образом я загружал набор данных раньше, что исчерпало ресурс;
def create_dataset():
train_data = []
train_label = []
test_data = []
test_label = []
test_n = np.random.randint(1, 10, 1)
for i in range(1, 10):
data_brain, data_mask = load_image(i)
if i in test_n:
test_data.append(data_brain)
test_label.append(data_mask)
continue
train_data.append(data_brain)
train_label.append(data_mask)
shifted_data = data_brain + tf.random.uniform(shape=(), minval=-0.05, maxval=0.05)
scaled_data = data_brain * tf.random.uniform(shape=(), minval=0.85, maxval=1.3)
train_data.append(shifted_data)
train_label.append(data_mask)
train_data.append(scaled_data)
train_label.append(data_mask)
"""
train_data = tf.data.Dataset.from_tensor_slices(train_data)
train_label = tf.data.Dataset.from_tensor_slices(train_label)
test_data = tf.data.Dataset.from_tensor_slices(test_data)
test_label = tf.data.Dataset.from_tensor_slices(test_label)
return train_data, train_label, test_data, test_label
"""