如何在Keras自定义损失函数中使用张量?

圣斧

我需要训练一个带有自定义损失函数的模型,该模型还将在预测后立即更新一些外部函数,如下所示:

def loss_fct(y_true, y_pred):
    global feeder
 
    # Change values of feeder given y_pred
    for value in y_pred:
        feeder.do_something(value)
    
    return K.mean(y_true - y_pred, axis=-1)

但是,这不起作用,因为TF无法遍历AutoGraph中的张量:

OperatorNotAllowedInGraphError: iterating over `tf.Tensor` is not allowed: AutoGraph did convert this function. This might indicate you are trying to use an unsupported feature.

我的模特看起来像这样

model = Sequential()
model.add(Input(shape=(DIM, )))
model.add(Dense(DIM, activation=None))
model.add(Dense(16, activation=None))
model.add(Dense(4, activation="softmax"))
model.compile(optimizer="adam", loss=loss_fct)
model.summary()

它是这样训练的:

model.fit(x=feeder.feed,
    epochs=18,
    verbose=1,
    callbacks=None,
)

feeder.feed生成2个NumPy数组的生成器在哪里


圣斧

经过大量研究,我遇到了这个答案该方法似乎没有什么问题,但这是一个Tensorflow >= 2.2.0错误,默认情况下启用了Eager Execution

最后,要解决此问题model.compile(..., run_eagerly=True),可以在训练过程中使用和迭代以及访问张量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

张量的矢量化运算,而不是在keras自定义损失函数中使用for循环

如何在mxnet中使用自定义损失函数?

如何在自定义损失函数中遍历张量?

Keras:无法在模型中使用自定义损失函数

如何在keras中测试自定义损失函数?

Keras自定义损失函数打印张量值

在Keras中的自定义损失函数中重塑张量

如何使用Keras构建自定义损失函数

如何使用opencv创建自定义keras损失函数?

Keras:如何在自定义损失中获得张量尺寸?

如何在Keras中使用“有状态”变量/张量创建自定义图层?

如何在TensorFlow中的自定义损失函数中标准化张量?

如何在张量流中表达此自定义损失函数?

如何使用过滤自定义张量流损失函数?

如何使用张量流更正此自定义损失函数?

您如何在 Keras 中编译自定义损失函数,将预测与来自输入张量的信息连接起来?

使用检查点在 Keras 中使用自定义损失函数恢复训练

如何在简单的数学运算中定义keras自定义损失函数

如何在tf.keras自定义损失函数中触发python函数?

在Keras中设计自定义损失函数(在Keras中以张量为单位的索引)

自定义损失函数以在Python中使用Keras进行奖励

在Keras / Tensorflow自定义损失函数中使用其他**可**变量

在Keras中使用自定义损失函数时的批次大小问题

在 Keras 中使用多个间接值的自定义损失函数

如何在使用自定义损失函数在 Python 中训练的 DL4J 中加载 Keras 模型文件

在keras自定义损失中使用图层输出

如何从Keras中的自定义损失函数获取结果?

如何在 keras 中创建自定义损失函数?(自定义加权二元交叉熵)

如何在自定义Keras / Tensorflow损失函数中对值进行排序?