gpt4 book ai didi

tensorflow - 张量类型的变量初始值设定项必须包装在 init_scope 或可调用中

转载 作者:行者123 更新时间:2023-12-03 14:44:56 73 4
gpt4 key购买 nike

我为 crf 写了一个自定义的 keras 损失损失计算。

def myLoss(self,y_true, y_pred):
"""
Args:
y_true: a tensor of shape batch_size X num_labels
y_pred: a tensor of shape batch_size X seq_length X num_labels

"""
with tf.init_scope():
self.seqlen = tf.constant(self.batch_size, shape=(self.seq_length,))
log_likelihood, transtion = tfa.text.crf.crf_log_likelihood(y_pred,y_true,self.seqlen )# logits, labels, seq_length
loss = tf.reduce_sum(-log_likelihood)
return loss
但是上面的代码引发了以下问题:
ValueError: Tensor-typed variable initializers must either be wrapped in an init_scope or callable (e.g., `tf.Variable(lambda : tf.truncated_normal([10, 40]))`) when building functions. Please file a feature request if this restriction inconveniences you.
根据错误,我尝试用 init_scope 包装张量计算,但不确定这是否是正确的方法。建议?

最佳答案

我遇到了类似的问题,但在不同的上下文中。使变量初始值设定项可调用对我有用。
只需添加一个 lambda在您调用之前 self.seqlen在像这样的代码中,看看它是否有效:

tfa.text.crf.crf_log_likelihood(y_pred, y_true, lambda: self.seqlen)

关于tensorflow - 张量类型的变量初始值设定项必须包装在 init_scope 或可调用中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59229898/

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