在Tensorflow中的预训练模型中将静态最小批量大小修改为无

时间:2018-07-16 08:13:03

标签: python tensorflow pre-trained-model updatebatchsize

我使用的是Inception Score,这是生成模型(尤其是GANs社区)中非常重要的评估指标。它涉及pre-trained model。但是它的静态批处理大小为1,这使得推论极其缓慢。

因此,我们需要将静态批处理大小修改为“无”以加快速度。

它曾经由以下代码处理,即通过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修改为“无”。

当前迫使我使用tensorflow直到1.5版本。非常感谢!

0 个答案:

没有答案