我有两个TFRecordsA
和B
,大小不同,包含不同的数据元素。你知道吗
我需要从A
和B
中获取所有可能的记录对。因此,在训练或测试期间,我希望epoch的信号只有在所有组合都已用尽时才结束,然后该过程应继续到下一个epoch。你知道吗
当然,在这样做时,我想指定一个batchsize
。你知道吗
我浏览了tf.data.Dataset
的文档,没有发现这样的东西。你知道吗
当然,如果我要编写python生成器,这是可以完成的。但不幸的是,这是没有用的,因为根据文档,python生成器将被GIL
约束,即global interpreter lock
。你知道吗
因此,假设
A
包含{image1, image2, image3}
,而B
包含{im1, im2, im3, im4, im5, im6}
。我已经指定了一个2
的batchsize。然后我希望输出如下:
(image1, im1) and (image2, im4)
(image3, im2) and (image1, im2)
(image2, im1) and (image2, im3)
..............
15 more combinations
然后下一个时代开始了。你知道吗
如何在TensorFlow中实现这一点?你知道吗
有一些关于如何使用Numpy或Tensorflow计算两个数组的笛卡尔积的文章。你知道吗
如果您的数组对于内存中的计算来说是两个大的数组,那么您的最佳选择可能是使用两个
tf.data.Dataset
(对于每个数组为on)并进行双循环:使用^{} ,在数据集上循环是很快的。你知道吗
您可以使用
tf.data.Dataset.from_generator
函数,其中生成器函数将实现您的逻辑,例如,其他两个数据集的叉积。为了从压缩的数据集db1
和db2
随机抽取一对样本,我对每个数据集分别进行了洗牌。你知道吗相关问题 更多 >
编程相关推荐