Tensorflow错误:形状必须为0级,但对于'cond_1 / Switch'为1级

时间:2017-12-15 21:41:25

标签: python if-statement machine-learning tensorflow

我是tensorflow的新手,我正在进行一些在线练习以熟悉tensorflow。我想做以下任务:

  

从任何法线创建两个形状为300的张量xy   分配。使用tf.cond()返回:

     
      
  • (x - y)的均方误差,如果(x - y)中所有元素的平均值为负数。

  •   
  • 张量(x - y)中所有元素的绝对值之和。

  •   

我的实施:

x = tf.random_normal([300])
y = tf.random_normal([300])
mse = lambda: tf.losses.mean_squared_error(y, x)
absval = lambda: tf.abs(tf.subtract(x, y))
out = tf.cond(tf.less(x, y), mse, absval)

错误:

Shape must be rank 0 but is rank 1 for 'cond_1/Switch' (op: 'Switch') with input shapes: [300], [300]

1 个答案:

答案 0 :(得分:3)

试试这个:

x = tf.random_normal([300])
y = tf.random_normal([300])
mse = lambda: tf.losses.mean_squared_error(y, x)
absval = lambda: tf.reduce_sum(tf.abs(tf.subtract(x, y)))
out = tf.cond(tf.reduce_mean(x - y) < 0, mse, absval)