我想比较两种不同大型图像数据集的以下CNN类型的性能。目标是测量两个图像之间的相似性,这两个图像在训练期间都没有看到。我可以访问2个GPU和16个CPU核心。
对于Softmax,我可以以二进制格式存储数据(顺序存储标签和图像)。然后用TensorFlow阅读器阅读。
要对Triplet和Siamese Networks使用相同的方法,我必须提前生成组合并将它们存储到磁盘。这将导致创建文件和磁盘空间所需的时间都很大。怎么能在飞行中完成?
另一个简单的方法是使用feed_dict,但这会很慢。因此,如果能够运行我并行用于feed_dict的相同函数并将结果转换为TensorFlow张量作为最后一步,则问题将得到解决。但据我所知,这样的转换不存在,因此首先必须使用TensorFlow读取器读取文件,并使用TensorFlow方法完成整个过程。这是对的吗?
答案 0 :(得分:1)
简短回答在线创建对/三元组numpy不需要将其转换为张量,因为feed_dict参数已经接受了numpy数组。
最好的方法是使用现有批次中的tf.nn.embedding_lookup()
与itertools
组合来创建对的索引,但对于一个天真的非最佳解决方案,您可以查看gen_batches_siamese.py脚本在my github repository。我重新实现了咖啡暹罗的例子。
显然它比使用tensorflow队列效率低,但我的建议是在转到纯张量流解决方案之前先尝试这个基线。