Python usinf TF数据集API大幅减速的原因
我试图为三重态丢失生成批次,因为批次中总是有对。下面的代码实现了这一点,但速度非常非常慢。特别是choose_from_数据集方法似乎是缓慢的根源 我的代码中是否存在导致减速的错误?还是有更聪明的方法 我试着从样本数据集中切换到样本数据集,但这没有帮助Python usinf TF数据集API大幅减速的原因,python,performance,tensorflow,dataset,Python,Performance,Tensorflow,Dataset,我试图为三重态丢失生成批次,因为批次中总是有对。下面的代码实现了这一点,但速度非常非常慢。特别是choose_from_数据集方法似乎是缓慢的根源 我的代码中是否存在导致减速的错误?还是有更聪明的方法 我试着从样本数据集中切换到样本数据集,但这没有帮助 def batch_pairs3(dataset, num_classes, shuffle=True, num_classes_per_batch=10, num_images_per_class=2): # Isolate each
def batch_pairs3(dataset, num_classes, shuffle=True, num_classes_per_batch=10, num_images_per_class=2):
# Isolate each class into its own dataset
datasets = []
for cl in range(num_classes):
this_dataset = dataset.filter(lambda xx, yy: tf.equal(tf.reshape(yy, []), cl))
if shuffle:
this_dataset = this_dataset.shuffle(100)
datasets += [this_dataset]
# if shuffle:
# random.shuffle(datasets)
selector = tf.contrib.data.Counter().map(
lambda x: generator3(x, num_classes, num_classes_per_batch, num_images_per_class))
selector = selector.apply(tf.contrib.data.unbatch())
dataset = tf.contrib.data.choose_from_datasets(datasets, selector)
# Batch
batch_size = num_classes_per_batch * num_images_per_class
return dataset.batch(batch_size)
tf数据管道不能处理这样的应用程序,在这些应用程序中,您可以通过很好的迭代来动态处理数据,除非您可以独立地映射每个数据点来进行此类处理。对于您正在做的事情,您最好以类似tfrecord的格式预处理和存储数据,然后使用数据管道以优化的方式读取数据 参考此官方示例,哪种方法适用于涉及三重态损耗的类似问题: