python-3.x - 数据集数组的可笑内存大小
问题描述
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,但在编译数据后显示为 40 GB。这怎么可能?我觉得我做错了。
解决方案
您可以使用tf.data.Dataset
创建数据集来优化内存消耗。
对于具有不同类型数据的 TensorFlow 输入管道,您可以遵循此官方文档。
推荐阅读
- python-3.x - How to get the gmpy2 module in RPI2 Buildroot
- python - 使用 Python 查找最相似的行
- azure - 通过 Azure 混合连接访问共享文件夹
- visual-studio-code - 输入“哟代码”后,选项信息无法显示,只有一个图标
- visual-studio-code - 如何禁止''ipch''在c ++工作场所自动生成(我正在使用vscode,但在vs2010中找不到相同的设置)
- javascript - 吊装过程中会发生什么?
- sql-server - 如何在spring boot应用程序的sql server application.properties中添加createDatabaseIfNotExist
- spring-cloud-stream - test stream-rabbitmq 出现错误:Dispatcher has no subscribers for channel
- javascript - 如何在 JavaScript 中动态生成表单?
- reactjs - React 组件在一次使用后消失