gpt4 book ai didi

python - TensorFlow:如何在急切执行期间将 DeferredTensor 转换为 Tensor(以执行组标准化)?

转载 作者:行者123 更新时间:2023-12-01 07:43:02 25 4
gpt4 key购买 nike

在 TensorFlow 1.10 到 1.12(使用即时执行)中,我有以下代码片段:

tensor = tf.keras.layers.Conv2D(128, (3, 3), padding='same')(tensor)
tensor = tf.contrib.layers.group_norm(tensor)

但是,调用 tf.contrib.layers.group_norm(tensor) 会出现以下错误:

ValueError: Attempt to convert a value (<DeferredTensor 'None' shape=(?, 16, 16, 128) dtype=float32>) with an unsupported type (<class 'tensorflow.python.keras.engine.base_layer.DeferredTensor'>) to a Tensor.

是否可以将DeferredTensor转换为TensorEagerTensor?我可以用另一种方式执行组标准化吗?

最佳答案

您需要从一开始就启用急切执行。看来您混合了 eager 和 deferred 导致了问题,所以我怀疑您的张量操作之一是在调用 tf.enable_eager_execution() 之前创建的。而不是有关调用 tf.contrib.layers.group_norm(tensor) 的任何具体信息.

例如,使用 v 1.12.2,我可以执行以下操作:

import tensorflow as tf

tf.enable_eager_execution()

tensor = tf.random.normal((1, 3,3, 3))
tensor = tf.keras.layers.Conv2D(128, (3, 3), padding='same')(tensor)
tensor = tf.contrib.layers.group_norm(tensor)

print(tf.__version__)
print(tensor)

并获得预期的输出:

1.12.2
tf.Tensor(
[[[[-0.46789345 0.05536499 -0.06537625 ... -0.612622 -0.80556583
0.39658052]
[-1.086592 -0.65128946 1.1523774 ... 0.70371515 -0.19514994
0.6261743 ]
[-0.68818045 1.0391753 0.61246586 ... 0.49158555 -0.23147273
-0.40839535]]

[[-0.27729145 -0.7241349 -0.45006287 ... -1.6836562 -2.0581594
-0.09571741]
[-2.7078617 1.6280639 0.29760775 ... 0.48920113 -2.148665
-0.17309377]
[ 2.41167 -0.29042014 -0.7241919 ... -0.0780689 1.451448
2.812067 ]]

[[ 0.04337802 1.5531337 0.838807 ... -0.164665 -0.28958386
-1.6659214 ]
[ 0.38814372 -0.1571713 0.16725369 ... 0.93523234 -0.2039619
0.6319514 ]
[ 0.09182647 0.19946824 -0.8600142 ... -0.5493502 -0.68655336
0.45441204]]]], shape=(1, 3, 3, 128), dtype=float32)

关于python - TensorFlow:如何在急切执行期间将 DeferredTensor 转换为 Tensor(以执行组标准化)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56595259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com