首页 > 解决方案 > TensorFlow:损失函数模块化设计

问题描述

我想要一些损失函数,例如:

    def loss_equation(x, a, b):
        """L2 loss for matrix equation `a=bx`."""
        a_test = tf.matmul(x, b)
        return tf.reduce_sum(tf.square(a-a_test))

    def loss_regular(x):
        """L2 loss regularizing entries of `x`."""
        return tf.reduce_sum(tf.square(x))

并且能够找到x将损失优化到自定义优化函数的最佳方法:

    x_optimal = some_optimizer( 
        { "loss": loss_equation,
          "args": [param_a, param_b]
        },
        { "loss": loss_equation,
          "args": []
        })

优化器应该找到x最小化指定损失总和的最佳方法(例如,在一个实验中我有两个损失,每个都有自己的参数,在另一个实验中我有五个)。如何在 TensorFlow 中对这种模块化行为进行编程?

标签: pythontensorflowmodularityloss-functionmodular-design

解决方案


x = ...

def loss_overall(x):
    return loss_equation(x, param_a, param_b) + loss_regular(x)
loss = loss_overall(x)
opt = tf.train.AdamOptimizer(1e-3)
with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):
    train_op = opt.minimize(loss)
with tf.Session() as sess:
    while True:
        sess.run(train_op)
    ...

首先,您应该创建损失张量
其次,您应该定义优化器
第三次调用最小化方法来获得火车运行


推荐阅读