如何在 TensorFlow 中定义自己的运算符

How do I define my own operators in TensorFlow

在 TensorFlow 中,我们可以使用 tf.nn.l2_loss() 进行 L2 正则化。假设我想为 L1 正则化定义自己的正则化运算符(称之为 tf.nn.l1_loss())。我该怎么办?我很难在 TensorFlow 源代码中找到运算符定义。

正如评论所建议的那样,adding an op to TensorFlow 有一个操作指南。本指南介绍如何添加用 C++ 实现的新操作。一般来说,你应该在以下情况下这样做:

  • 该运算无法使用现有的 TensorFlow 运算来实现(例如,l1_loss 可以 使用现有的 element-wise and reduction 运算符作为 Python 函数).
  • 出于性能(或内存消耗)原因,需要 C++ 实现。
  • op 可以作为 op 的组合来实现,但是它的梯度可以比计算梯度 op 更有效地计算(或具有更好的数值稳定性)-通过操作。 (这就是为什么 tf.nn.l2_loss 在 C++ 中被实现为一个融合操作。)