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

tok*_*rmw 4 python deep-learning tensorflow

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

mrr*_*rry 8

正如评论所建议的那样,有一个向TensorFlow添加操作的操作指南.本指南介绍了如何添加用C++实现的新操作.通常,您应该在以下情况下执行此操作:

  • op不能使用现有的TensorFlow操作来实现(例如,l1_loss 可以使用现有的逐元素简化运算符作为Python函数来实现).
  • 出于性能(或内存消耗)的原因,C++实现是必需的.
  • op可以实现为ops的组合,但是它具有可以比逐个算术计算梯度更有效(或具有更好的数值稳定性)的梯度.(这就是为什么tf.nn.l2_loss在C++中实现为融合操作.)