我是tensorflow的新手,我正在进行一些在线练习以熟悉tensorflow。我想做以下任务:
从任何正态分布创建形状300的两个张量
x
和y
。使用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]
试试这个:
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)