对于我的输入fn,我正在填充tf.Data.Dataset.from_tensor_slices((np.array1,np.array2,np.array3)
我正在通过调用dataset.map解析它们。结果,我要返回我的数据集。
我将理解数据集的初始化可能会很慢,但是当我调用tf.estimator train_and_evaluate函数来训练和评估模型时,它的表现非常糟糕。可能是每个时期都在填充数据。请问是什么原因?我该如何克服这个问题。您有什么建议?
谢谢。
答案 0 :(得分:0)
问题是您正在执行c ++ Python往返。如果可以的话,请尽量避免使用numpy。也许尝试使用tf记录。
您在地图功能中到底在做什么?
答案 1 :(得分:0)
要提高数据提取的效率,您可以尝试以下三种方法:
使用tf记录可能是解决此问题的最简单,最有效的方法。将数据集转换为tf记录数据集后,它可以大大加快速度
如果您不想转换数据集,则会遇到另外两种方法:
使用生成器并使用tfdataset.from_generator函数(https://www.tensorflow.org/api_docs/python/tf/data/Dataset)创建数据集。因为您没有使用优化的C ++阅读器,但是这会减慢您的数据接收速度,但是如果您使用一点点麻木的魔术,就可以创建很好的阅读器。如果您想快速浏览数据集,请使用此方法。
如果您想要与tfrecords相似的速度,则必须为tf数据集创建自定义阅读器。您可以在此处找到说明:https://www.tensorflow.org/extend/new_data_formats 为此,您需要一点点c ++知识。
总共:
Tf记录是否要转换
from_generator,如果您想快速变脏,而性能不是最重要的
如果您想正确使用自己的阅读器功能
我希望我能有所帮助:)