我正在使用初始分数,这是生成模型中非常重要的评估指标,尤其是GAN社区 . 它涉及pre-trained model . 但它的静态批处理大小为1,这使得推理极其缓慢 .

因此,我们需要将静态批处理大小修改为None以加速 .

它曾被以下代码处理,即通过tensor._shape = new_shape改变张量形状 .

ops = self.inception_graph.get_operations()
for op_idx, op in enumerate(ops):
    for o in op.outputs:
        shape = o.get_shape()
        shape = [s.value for s in shape]
        new_shape = []
        for j, s in enumerate(shape):
            if s == 1 and j == 0:
                new_shape.append(None)
            else:
                new_shape.append(s)
        #o._shape = tf.TensorShape(new_shape)

以上操作仅适用于tensorflow 1.5及更早版本 . 但是对于后一版本,例如tensorflow 1.9,不再允许o._shape = tf.TensorShape(new_shape),并且set_shape()函数仅合并形状,但不支持将已知元素修改为None .

tensorflow GitHub 5680中存在相关问题 .

故意没有办法使张量的形状不那么具体 . 这使得TensorFlow在以后的形状推断中使用张量的当前静态形状是安全的,并且还使特定形状的图形专门化 .

在这里重置形状似乎是必要的,我想知道如何在预训练的初始模型中将静态批量大小1修改为无?

当前迫使我使用张量流高达1.5版 . 非常感谢!