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