gpt4 book ai didi

python - 通过张量损失时需要磁带

转载 作者:行者123 更新时间:2023-12-04 15:20:16 25 4
gpt4 key购买 nike

我有以下损失:

loss = loss(y_train_left_noc[:,:,0], soft_argmin).tolist()

其中 type(loss) 是

但是,在像这样在优化器中使用此损失时:

train = tf.keras.optimizers.Adam().minimize(loss, [k1, k2, k3])

其中 k1、k2 和 k3 是卷积核,我得到以下错误:

Traceback (most recent call last):
File "train.py", line 277, in <module>
k3
File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py", line 385, in minimize
loss, var_list=var_list, grad_loss=grad_loss, tape=tape)
File "/usr/local/lib/python3.7/site-packages/tensorflow/python/keras/optimizer_v2/optimizer_v2.py", line 440, in _compute_gradients
raise ValueError("`tape` is required when a `Tensor` loss is passed.")
ValueError: `tape` is required when a `Tensor` loss is passed.

如果loss是float类型的,那为什么Tensorflow会说一个Tensor loss passed?

最佳答案

回答来自 here 的解决方案作者 @nikitamaia,为了社区的利益。

您看到的错误消息是 here in the source code :

if not callable(loss) and tape is None:
raise ValueError("`tape` is required when a `Tensor` loss is passed.")

此错误消息似乎只出现在 tf-nightly 中,如果您在 TF 2.3 中运行代码,您会注意到一个略有不同的错误消息 TypeError: 'float' object is not callable 这可能是一条更明确的消息。无论哪种方式,由于您传递的是标量损失值,而不是可调用值,因此预计会出现错误。如果您想使用标量损失值而不传递可调用函数,那么您应该使用 GradientTape,如错误消息中所述。

关于python - 通过张量损失时需要磁带,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63461478/

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