python - 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.
可能的问题是什么以及如何解决?
解决方案
np.float32
电话是问题。除非在急切执行模式下,否则 Numpy 函数不能很好地处理张量。
尝试投射时,您应该使用tf.cast
. 或者在这种情况下,结果应该是浮点数,所以这就足够了:
tf.log(sheudo_input) + tf.log(1. - sheudo_input)
推荐阅读
- yii2 - Yii2 API Rest 查询参数或条件
- node.js - 如何在 Firebase 云功能中添加 i18n(或获取请求语言环境)
- javascript - 从js中的数组中删除逗号
- reactjs - Typescript 将通用服务与功能组件反应
- java - 计算大 O 表示法 O(n) 和 O(n^2)
- typescript - 无法使用语法创建对象
{} 了? - c# - 为什么以下 EF to SQL 无法按名称过滤
- json - Swift 5:如何从 NSSingleObjectArray 获取数据?
- hive - 我们可以从现有的创建镶木地板吗?
- pytorch - 了解后向钩子