RuntimeError:无法序列化消息

时间:2020-05-21 00:51:19

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

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

具有90k图像,尺寸为225 * 225 * 1。如果我尝试运行此代码而收到此错误

RuntimeError:无法序列化消息`

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

1 个答案:

答案 0 :(得分:0)

那是由于内存的可用性。

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

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

在使用TFRecord-Walkthrough: Reading and writing image data读写图像时,请仔细阅读本文档。

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