求解张量流中的约束优化问题

2024-04-26 19:10:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解决Tensorflow中的一个约束优化问题

我想在我的损失函数中添加条件theta_r <= min(theta_tf)theta_s >= max(theta_tf)n > 1Ks > 0。你知道我如何在损失函数中添加这些约束吗?我正在使用L-BFGS优化器

下面是我的损失函数的样子

self.loss =  tf.reduce_mean(tf.square(self.theta_tf - self.theta_pred)) + \
                     tf.reduce_mean(tf.square(self.fbd_predict)) + \
                     tf.reduce_mean(tf.square(self.f_pred)) + \
                     self.weights_L2 + self.biases_L2 +\
                     1.0e-7 * (self.theta_r**2 + self.theta_s**2 + self.alpha**2 + self.n**2 + self.K_s**2)

Tags: 函数selfreducetftensorflowminmean条件
1条回答
网友
1楼 · 发布于 2024-04-26 19:10:15

可以通过^{}^{}表示边界。然后,您可以选择一个自定义损耗函数(例如,MSE),该函数将应用于这些损耗函数,并将它们相加

min_theta_tf = tf.math.reduce_min(theta_tf)
max_theta_tf = tf.math.reduce_max(theta_tf)

loss_theta_r = tf.square(
    tf.math.maximum(theta_r, min_theta_tf)  # bound to 'min_theta_tf'
    - min_theta_tf
)
loss_theta_s = tf.square(
    tf.math.minimum(theta_s, max_theta_tf)  # bound to 'max_theta_tf'
    - max_theta_tf
)
loss_n = tf.square(tf.math.minimum(n, 1) - 1)
loss_Ks = tf.square(tf.math.minimum(Ks, 0))

loss = loss_theta_r + loss_theta_s + loss_n + loss_Ks

相关问题 更多 >