数据集数组的可笑内存大小
Ridiculous memory size for dataset array
try:
with open(f'F:/Storage/readyDataset{IMG_SIZE}.pkl', 'rb') as save:
training_data = pickle.load(save)
print("Using dataset")
except:
for category in CATEGORIES:
path = os.path.join(DATADIR, category)
class_num = CATEGORIES.index(category)
print("Gathering Dataset: {}%".format(class_num*50))
for img in os.listdir(path):
img_array = cv2.imread(os.path.join(path,img))
new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
training_data.append([new_array, class_num])
print("Gathering Dataset: 100%\nSaving dataset")
with open(f'F:/Storage/readyDataset{IMG_SIZE}.pkl', 'wb') as save:
pickle.dump(training_data, save, protocol=4)
print("Compiling Data")
random.shuffle(training_data)
for features, label in training_data:
X.append(features)
Y.append(label)
X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 3) / 255
Y = np.array(Y)
print("Finished Compiling Data")
MemoryError:无法为形状为 (6800, 512, 512, 3) 且数据类型为 float64 的数组分配 39.8 GiB
我目前正在尝试在 TensorFlow v2 中使用包含 6800 张图像的自定义数据集。数据集小于 3 GB,但在编译数据后显示为 40GB。这怎么可能?我觉得我做错了。
您可以使用 tf.data.Dataset
创建数据集以优化内存消耗。
对于不同类型数据的TensorFlow输入管道,可以参考this官方文档。
try:
with open(f'F:/Storage/readyDataset{IMG_SIZE}.pkl', 'rb') as save:
training_data = pickle.load(save)
print("Using dataset")
except:
for category in CATEGORIES:
path = os.path.join(DATADIR, category)
class_num = CATEGORIES.index(category)
print("Gathering Dataset: {}%".format(class_num*50))
for img in os.listdir(path):
img_array = cv2.imread(os.path.join(path,img))
new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
training_data.append([new_array, class_num])
print("Gathering Dataset: 100%\nSaving dataset")
with open(f'F:/Storage/readyDataset{IMG_SIZE}.pkl', 'wb') as save:
pickle.dump(training_data, save, protocol=4)
print("Compiling Data")
random.shuffle(training_data)
for features, label in training_data:
X.append(features)
Y.append(label)
X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 3) / 255
Y = np.array(Y)
print("Finished Compiling Data")
MemoryError:无法为形状为 (6800, 512, 512, 3) 且数据类型为 float64 的数组分配 39.8 GiB
我目前正在尝试在 TensorFlow v2 中使用包含 6800 张图像的自定义数据集。数据集小于 3 GB,但在编译数据后显示为 40GB。这怎么可能?我觉得我做错了。
您可以使用 tf.data.Dataset
创建数据集以优化内存消耗。
对于不同类型数据的TensorFlow输入管道,可以参考this官方文档。