首页 > 解决方案 > ValueError:使用 Tensorflow 设置具有序列的数组元素

问题描述

我正在尝试重现深度视频肖像(2018 年),他们指的是实现 patchGAN的Isola(2017 年) 。

在 patchGAN 中,[batch_size, patch_width, patch_height, 1]张量的判别器返回,我想将此张量提供给我的损失,定义如下:

EcGAN = tf.reduce_mean(tf.log(D_real)+ tf.log(np.float32(1. - D_fake))) 

所以我包含了以下伪操作检查器并运行:

sheudo_input = tf.Variable(np.float32(np.random.uniform(low=-1., high=1., size=[16, 30, 30, 1]))) 
EcGAN = tf.reduce_mean(tf.log(sheudo_input)+ tf.log(np.float32(1. - sheudo_input))) 

EcGAN不是这样计算并返回错误:

ValueError: setting an array element with a sequence.

可能的问题是什么以及如何解决?

标签: pythonarraysnumpytensorflowsequence

解决方案


np.float32电话是问题。除非在急切执行模式下,否则 Numpy 函数不能很好地处理张量。

尝试投射时,您应该使用tf.cast. 或者在这种情况下,结果应该是浮点数所以这就足够了:

tf.log(sheudo_input) + tf.log(1. - sheudo_input)

推荐阅读