python - 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 中对这种模块化行为进行编程?
解决方案
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)
...
首先,您应该创建损失张量
其次,您应该定义优化器
第三次调用最小化方法来获得火车运行
推荐阅读
- ruby-on-rails - 如何创建 schema.rb 文件的 CSV/Excel
- swift - swift代码中的不兼容或真正错误
- python - tkinter 和 pygame.midi 之间的冲突
- scala - 在 Scala 中使用 Cats 库中的 Validated
- excel - 如何使用 VBA 从工作表创建多个 Excel 工作簿
- c# - 构建和运行时出现 dotnet new blazor 错误
- django - django过滤器没有匹配
- python - 解析包含逻辑的字符串以创建 Django Q 对象
- angular - Angular 5+等待返回承诺的服务
- ios - xamarin.forms webview.focused 事件在 Android 上引发,但不在 iOS 上