首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tensorflow,可以降低某些数据项的梯度

Tensorflow,可以降低某些数据项的梯度
EN

Stack Overflow用户
提问于 2021-09-28 22:17:13
回答 1查看 11关注 0票数 0

假设我有一个多输出模型,输出为y_0和y_1。对于一些数据示例,我确信y_0是正确的,但我知道y_1可能完全是猜测。我的想法是使用自定义训练循环并乘以计算出的权重,但这似乎不起作用。有没有比这更简单的方法来通过keras api来做这件事呢?

代码语言:javascript
运行
复制
            @tf.function
            def train_on_batch(x,y):

                y_true = y[:, 0]
                weights = y[:,1]

                with tf.GradientTape() as tape:
                    y_pred = model(x, training=True)
                    print("ytrainpred ", y_pred)
                    loss_value_pre = loss(y_true, y_pred)   
                    loss_value = loss_value_pre * weights

                # compute gradient 
                grads = tape.gradient(loss_value, model.trainable_weights)

                # update weights
                optimizer.apply_gradients(zip(grads, model.trainable_weights))

                # update metrics
                loss_1_train.update_state(y_true[:, 0], loss_value[:,0])
                loss_2_train.update_state(y_true[:, 1], loss_value[:,1)

                return loss_value

EN

Stack Overflow用户

发布于 2021-09-28 23:45:31

在keras对象的compile方法中,您有一个名为loss weights的参数来执行此操作,您只需要实现损失函数,这些函数接受一个或另一个输出,并作为损失数组传递给loss参数,但是如果您有许多

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69369036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档