我正在使用初始分数,这是生成模型中非常重要的评估指标,尤其是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版 . 非常感谢!