我有一个不寻常的学习任务:"标签"对于我的例子(即图像)实际上是特定图像之间的关系。例如,假设每个批次包含2*n
张图片,其中(i, j)
对标签为1
,而(j, i)
对标签为-1
。假设从图像集中可能的大多数(即,浩大的多数)对缺少任何标签,并且因此随机采样将很少产生甚至单个关系来训练。因此,在此示例中,每个批处理包含一组2N
图像,N
对已知具有某种关系。
TensorFlow非常灵活,可以轻松设计可以计算适当损失函数的网络。但是,创建输入是有问题的。我不能很好地记住C ++以实现自定义输入操作,因此我必须以适当的方式将数据读入python并将其提供给TensorFlow(简单但缓慢)或将一些操作粘合在一起以获得它尽可能地工作。
实现这一点看起来非常笨拙,需要很多队列对象(为什么读者只接受TensorFlow中的队列?!)。假设我有一些序列化示例的文件集,每个都是{file1: <...>, file2: <...>, label: <...>}
形式的列表,有一种简单的方法可以将它们作为形状张量2N * W * H * C
提供给网络(带图像i)并且图像i + 1属于单个关系,其中i是(0, 2, 4, 6, ...)
,即[relation_n_image_1, relation_n_image_2, relation_m_image_1, ...]
)?我目前的创作,其中的各个组成部分只在理论上起作用,但它们使用了5种不同类型的队列对象,并且没有完美的随机播放。