ValueError:使用Tensorflow

时间:2018-07-22 00:39:12

标签: python arrays numpy tensorflow sequence

我正在尝试重现deep video portrait (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.

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

1 个答案:

答案 0 :(得分:2)

np.float32调用是问题所在。除非在急切的执行模式下,否则Numpy函数无法与张量配合使用。

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

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