нельзя использовать переменное разрешение ввода изображения в замороженном графике с помощью tf.reshape - PullRequest
0 голосов
/ 01 февраля 2019

Мой замороженный график в tenorflow выдает ошибку, если я использую разрешение изображения, отличное от того, которое использовалось для обучения в команде "tf.reshape".

Моя сеть полностью свернута, и до того, как мне пришлось использовать команду tf.reshape, я смог использовать входные изображения с разным разрешением в своем коде.

Теперь в моем коде есть функция, которая изменяет тензор (он просто выполняет случайное перемешивание, как в Shufflenet2), и теперь это вызывает ошибку.Я попытался получить форму динамически, используя tf.shape, и он все еще не работает.

def channel_shuffle( x, num_groups=2,name='channelshuf',reuse=False):
    with tf.variable_scope(name+'shuffle', reuse=reuse):
        #n, h, w, c = x.shape.as_list()
        n, h, w, c =  tf.shape(x)[0],tf.shape(x)[1],tf.shape(x)[2],tf.shape(x)[3]
        x_reshaped = tf.reshape(x, [n, h, w, num_groups, c // num_groups])
        x_transposed = tf.transpose(x_reshaped, [0, 1, 2, 4, 3])
        output = tf.reshape(x_transposed, [n, h, w, c])
        return output

Я получаю следующую ошибку:

InvalidArgumentError (см. Выше для отслеживания): Ввод для изменения формы - это тензор с 3340800 значениями, но запрошенная форма имеет 835200

спасибо!

...