Tensorflow 存储在谷歌云上的巨大TF记录文件

Tensorflow 存储在谷歌云上的巨大TF记录文件,tensorflow,google-cloud-platform,google-colaboratory,tpu,google-cloud-tpu,Tensorflow,Google Cloud Platform,Google Colaboratory,Tpu,Google Cloud Tpu,我试图修改tensorflow项目,使其与TPU兼容 为此,我从网站上解释的代码开始 这里下载COCO数据集,首先使用InceptionV3模型提取其特征。 我想修改这段代码,使其支持TPU 为此,我根据链接添加了TPU的强制代码 在TPU策略范围内,我使用keras库创建了InceptionV3模型,并根据现有代码加载了带有ImageNet权重的模型 现在,由于TPU需要将数据存储在Google云存储上,我在link的帮助下使用tf.Example创建了一个tf记录文件 现在,我尝试以多种方式

我试图修改tensorflow项目,使其与TPU兼容

为此,我从网站上解释的代码开始

这里下载COCO数据集,首先使用InceptionV3模型提取其特征。 我想修改这段代码,使其支持TPU

为此,我根据链接添加了TPU的强制代码

在TPU策略范围内,我使用keras库创建了InceptionV3模型,并根据现有代码加载了带有ImageNet权重的模型

现在,由于TPU需要将数据存储在Google云存储上,我在link的帮助下使用tf.Example创建了一个tf记录文件

现在,我尝试以多种方式创建此文件,以便它具有TPU将通过TFRecordDataset找到的数据

起初,我直接将图像数据和图像路径添加到文件中,并将其上载到GCP bucket,但在读取此数据时,我意识到此图像数据没有用处,因为它不包含所需的形状/大小信息,并且在存储之前,我没有将其调整到所需的尺寸。这个文件大小变成了2.5GB,这还可以。 然后我认为让我们只在云端保留图像路径,所以我创建了另一个只包含图像路径的tf记录文件,然后我认为这可能不是一个优化的代码,因为TPU必须单独打开图像,将其大小调整为299299,然后馈送到模型,如果我通过TFRecordDataset中的.map()函数获得图像数据,效果会更好,所以我再次尝试,这次使用link,将R、G和B以及图像路径存储在tf记录文件中

然而,现在我看到tf记录文件的大小异常大,大约为40-45GB,最终,我停止了执行,因为我在Google Colab TPU上的内存被填满了

原来的尺寸不是那么大。它几乎像13GB。。因此,数据集的创建仅包含前30000条记录。所以40GB看起来很奇怪


我可以知道这种功能存储方式有什么问题吗?是否有更好的方法将图像数据存储在TF记录文件中,然后通过TFRecordDataset进行提取。

我认为在GCS上作为TFRecords处理的COCO数据集应该在24-25 GB左右。请注意,TFRecords并不意味着充当压缩的一种形式,它们将数据表示为ProtoBuf,因此可以最佳地将其加载到TensorFlow程序中

如果您参考:(可以找到相应的脚本)将COCO(或子集)转换为TFRecords,您可能会获得更大的成功


此外,我们使用针对GPU/TPU优化的TF2/Keras实现了COCO检测模型,您可能会发现这对于优化输入管道很有用。可以找到一个示例教程。谢谢

太好了。。非常感谢你的回答。。由于没有得到任何回复,我继续在GCP上加载图像,然后在提取有效特征的同时阅读。。但我还是喜欢将图像数据直接存储在云上,而不是图像本身。我一定会通过链接,一旦我完成了我的剩余工作的模型。很高兴这是为你工作!澄清一下,这是否意味着您的输入管道是这样的?原始图像->加载到TF->预处理?如果是,那么您可能会遇到瓶颈,即预处理比每个批次的TPU培训花费的时间更长。如果您觉得TPU培训比预期慢,以上链接可能会有所帮助!事实上,我不是在做这个级别的训练。我只需要从30k图像的初始模型中提取图像特征,没有TPU几乎需要3-4个小时。但现在我用TPU在几分钟内完成了它。现在,下一个代码与实际的训练部分相关,使用这些特性和很少的输入。