我正在尝试修改一个tensorflow项目,使其与TPU兼容。
为此,我从this站点上解释的代码开始。
这里下载COCO数据集,并首先使用InceptionV3模型提取其特征。我想修改这段代码,使其支持TPU。
为此,我根据this链接添加了TPU的强制代码。
在TPU策略范围内,我使用keras库创建了InceptionV3模型,并按照现有代码使用ImageNet权重加载模型。
现在,由于TPU需要将数据存储在Google Cloud存储上,在this链接的帮助下,我使用tf.Example创建了一个tf记录文件。
现在,我试着用几种方法创建这个文件,这样它就有了TPU可以通过TFRecordDataset找到的数据。
起初,我直接将图像数据和图像路径添加到文件中,并将其上传到GCP存储桶中,但在读取此数据时,我意识到此图像数据没有任何用处,因为它不包含需要的形状/大小信息,并且我在存储之前没有将其调整到所需的尺寸。这个文件大小变成了2.5 was,这是可以的。然后我想让我们只保持图像路径在云中,所以我创建了另一个tf记录文件,只有图像路径,然后我认为这可能不是一个优化的代码,因为TPU将不得不打开图像单独调整到299,299,然后馈送到模型,如果我有图像数据通过TFRecordDataset内的.map()函数会更好,所以我再次尝试,这一次通过使用this链接,通过存储R,G和B以及tf记录文件内的图像路径。
然而,现在我看到tf记录文件的大小异常大,像40-45 up,最终,我停止了执行,因为我的内存在Google Colab TPU上被填满了。
COCO dataset的原始大小并没有那么大。它几乎就像13 It ..由此创建的数据集仅包含前30,000条记录。所以40 so看起来很奇怪的数字。
我想知道这种特征存储方式有什么问题吗?有没有更好的方法将图像数据存储在TF记录文件中,然后通过TFRecordDataset提取。
发布于 2020-08-04 01:43:58
我认为在GCS上,COCO数据集作为TFRecords处理应该在24-25 GB左右。请注意,TFRecords并不意味着充当一种压缩形式,它们将数据表示为协议以便能够以最佳方式将其加载到TensorFlow程序中。
如果您参考:https://cloud.google.com/tpu/docs/coco-setup (可以在here中找到相应的脚本)将COCO (或子集)转换为TFRecords,您可能会更成功。
此外,我们使用针对GPU/TPU here优化的TF2/Keras实现了COCO的检测模型,您可能会发现这对优化输入管道很有用。示例教程可以在here中找到。谢谢!
https://stackoverflow.com/questions/63208808
复制相似问题