如何在每个步骤中从优化中获得生成的损失,而不必额外调用损失函数?

问题描述

我有一个带有自定义损失函数的自定义TensorFlow 2.x模型,其中我正在使用标准的最小化函数。

如何获得每一步所产生的损失而不必额外调用损失函数?

这是我的代码:

    optimizer = tf.keras.optimizers.Adam()
    for i in range(50):
        t_interior,X_interior,t_terminal,X_terminal = sampler(1000,50)
        for _ in range(steps_per_sample):
            with tf.GradientTape(persistent=True) as g:
                g.watch(t_interior)
                g.watch(X_interior)
                g.watch(t_terminal)
                g.watch(X_terminal)
                with tf.GradientTape(persistent=True) as gg:
                    gg.watch(X_interior)
                    V = model(t_interior,X_interior)
                dV_dX = gg.gradient(V,X_interior)
                dV_dt = gg.gradient(V,t_interior)
            d2V_dX2 = g.gradient(dV_dX,X_interior)
            optimizer.minimize(lambda : my_loss(model,dV_dt,dV_dX,d2V_dX2,X_terminal),model.trainable_variables)            
            act_loss = my_loss(model,X_terminal)
            loss_list.append(act_loss)
            print(act_loss,i)

基本上,我想避免再次调用my_loss。对于标准损失函数和tensorflow 1.x,答案已经是here,但我想在TF2和自定义损失函数中看到它。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...