Изменение статического размера мини-пакета на None в предварительно обученной модели в Tensorflow
Я использую начальный балл, который является очень важным показателем оценки в порождающих моделях, особенно в сообществе GAN. Это предполагает предварительно обученную модель. Но он имеет статический размер пакета 1, что делает вывод очень медленным.
Итак, нам нужно изменить статический размер пакета на None для ускорения.
Он использовался для обработки следующим кодом, то есть изменением формы тензора с помощью tenor._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)
Вышеуказанная операция работает только для tenorflow 1.5 и более ранних версий. Но для последней версии, такой как тензор потока 1.9, o._shape = tf.TensorShape(new_shape) больше не разрешается, а функция set_shape() только объединяет фигуры, но не поддерживает изменение известного элемента в None.
В тензорном потоке GitHub 5680 есть связанная проблема.
Умышленно нет способа сделать тензорную форму менее специфичной. Это позволяет TensorFlow использовать текущую статическую форму тензора в последующем выводе формы, а также специализировать график для конкретной формы.
Сброс формы здесь кажется необходимым, и мне интересно, как мне изменить статический размер партии 1 на None в предварительно обученной начальной модели?
Тока заставляет меня использовать tenorflow до версии 1.5. Большое спасибо!