小编rox*_*ana的帖子

ValueError:形状必须为0,但“ cond_11 / Switch”为1(运算符:“ Switch”)

实际上,我们不能在if语句中使用tf.var作为布尔值,而不是使用tf.cond。我为规范化的输入数据编写此代码,并得到令人困惑的错误,我在哪里做错了?

   def global_contrast_normalize(X, scale=1., subtract_mean=True,use_std=False,
       sqrt_bias=0., min_divisor=1e-8):
       mean=tf.reduce_mean(X,axis=1)
       if subtract_mean:
         X = X - mean[:, numpy.newaxis]  # Makes a copy.
      else:
         X = tf.copy.copy(X)
      if X.get_shape()[1]==1:
        #ddof = 0
        mean, var = tf.nn.moments(X, axes=[1])

        normalizers = tf.sqrt(sqrt_bias + var) / scale

      else:
        normalizers = tf.sqrt(sqrt_bias + tf.reduce_sum((X ** 2),axis=1)) / scale
        Normalizers= tf.Variable(normalizers,'float32')
        M=tf.Variable(min_divisor,'float32')

      tf.cond( tf.less_equal(Normalizers,M),lambda:tf.assign(Normalizers,  [1]),lambda:tf.assign(Normalizers,normalizers))
      X /= Normalizers[:, tf.newaxis]  # Does not make a copy.
      return X
Run Code Online (Sandbox Code Playgroud)

错误:

在_call_cpp_shape_fn_impl中引发ValueError(err.message)

ValueError:形状必须为等级0,但对于输入形状为[1],[1]的“ cond_11 / Switch”(op:“ Switch”),等级为1。

tensorflow

5
推荐指数
1
解决办法
9863
查看次数

标签 统计

tensorflow ×1