【问题标题】:Python: how to save training datasetsPython:如何保存训练数据集
【发布时间】:2026-01-02 14:35:02
【问题描述】:

我有训练数据集,它们是 xtrain、ytrain、xtest 和 ytest。它们都是 numpy 数组。我想将它们一起保存到一个文件中,以便我可以将它们加载到工作区中,就像在 keras 中为 mnist.load_data 所做的那样:

(xtrain, ytrain), (xtest, ytest) = mnist.load_data(filepath)

在 python 中,有没有办法将我的训练数据集保存到这样一个文件中?或者有没有其他的欣赏方法来拯救它们?

【问题讨论】:

  • 查找泡菜模块。
  • 你能参加考试吗?我是python的初学者。谢谢!
  • Pickle 允许您将任何对象转储到 .dat 文件并将其重新加载到文件中。请注意,可能有更好的方法可以做到这一点,因此请检查答案。

标签: python


【解决方案1】:

泡菜是个好方法:

import pickle as pkl

#to save it
with open("train.pkl", "w") as f:
    pkl.dump([train_x, train_y], f)

#to load it
with open("train.pkl", "r") as f:
    train_x, train_y = pkl.load(f)

如果您的数据集很大,我建议您查看@Lukasz Tracewski 提到的 hdf5。

【讨论】:

【解决方案2】:

您有多种选择:

Keras 提供了将模型保存到 hdf5 的选项。另外,请注意,在这三种格式中,它是唯一可互操作的格式。

【讨论】:

  • 我不打算保存模型,只保存以后会重复使用的训练数据。这里的特别之处是将它们一起保存到一个文件中。
  • 没关系,我提到这个是为了让你知道使用的是什么库。您可以以结构良好的方式将训练和测试数据保存到单个 hdf5 文件中。
  • 我尝试使用 h5py 将它们保存到一个元组中,这会产生错误消息:TypeError: Object dtype dtype('O') has no native HDF5 equivalent。可能不支持元组格式。您对将数据结构化在一起有什么建议吗(xtrain 和 xtest 在维度上不一样)。谢谢!
【解决方案3】:

我发现 hickle 是将它们全部保存到字典中的一种非常好的方法:

import hickle as hkl
data = {'xtrain': xtrain, 'xtest': xtest,'ytrain': ytrain,'ytest':ytest}
hkl.dump(data,'data.hkl')

【讨论】:

    【解决方案4】:

    你可以简单地使用 numpy.save

    np.save('xtrain.npy', xtrain)

    或以人类可读的格式

    np.savetxt('xtrain.txt', xtrain)

    【讨论】:

    • 我的训练数据集非常大。我想在内存中更经济地保存它们