不能在带有tf.reshape的冻结图中使用可变图像输入分辨率

时间:2019-01-31 21:49:00

标签: python tensorflow dynamic reshape shapes

如果我使用与“ 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

谢谢!

0 个答案:

没有答案