【问题标题】:RuntimeError: Failed to serialize messageRuntimeError:无法序列化消息
【发布时间】:2020-09-07 13:00:16
【问题描述】:

我试图在 google colab 中使用 TPU,所以在以 numpy 格式进行一些预处理后,我试图通过使用转换为 tensorflow 格式 train_setx = tf.data.Dataset.from_tensor_slices(trainx)

有 90k 大小为 225*225*1 的图像。如果我尝试运行此代码,我会收到此错误

RuntimeError: 无法序列化消息`

但是如果我转换另一个包含 10k 图像的数据集,它可以工作,我在 github 上看到它是因为数据集很大。是这样吗?那么如何转换具有 90k 图像的数据集?

【问题讨论】:

    标签: image tensorflow deep-learning google-colaboratory tpu


    【解决方案1】:

    那是因为内存的可用性。

    如果要训练模型,可以直接使用numpy 数组。否则,您也可以使用TFRecordTFRecord 有助于有效地读取数据,将数据序列化并将其存储在一组文件(每个 100-200MB)中,每个文件都可以线性读取。如果数据通过网络传输,则尤其如此。这对于缓存任何数据预处理也很有用。 TFRecord 格式是一种用于存储二进制记录序列的简单格式。

    如果您正在处理大型数据集,则使用二进制文件格式存储数据可能会对导入管道的性能产生重大影响,从而影响模型的训练时间。二进制数据占用的磁盘空间更少,复制时间更短,并且可以更高效地从磁盘读取。

    请阅读此文档,了解如何使用 TFRecord - Walkthrough: Reading and writing image data 读取和写入图像。

    希望这能回答您的问题。快乐学习。

    【讨论】:

    • @Vengenzz Vicky - 希望我们已经回答了您的问题。如果您对答案感到满意,请您接受并投票。
    猜你喜欢
    • 2019-08-15
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    相关资源
    最近更新 更多