Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python usinf TF数据集API大幅减速的原因_Python_Performance_Tensorflow_Dataset - Fatal编程技术网

Python usinf TF数据集API大幅减速的原因

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

我试图为三重态丢失生成批次,因为批次中总是有对。下面的代码实现了这一点,但速度非常非常慢。特别是choose_from_数据集方法似乎是缓慢的根源

我的代码中是否存在导致减速的错误?还是有更聪明的方法

我试着从样本数据集中切换到样本数据集,但这没有帮助

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的格式预处理和存储数据,然后使用数据管道以优化的方式读取数据

参考此官方示例,哪种方法适用于涉及三重态损耗的类似问题: