【问题标题】:How do I define my own operators in TensorFlow如何在 TensorFlow 中定义自己的运算符
【发布时间】:2015-11-27 10:24:22
【问题描述】:
在 TensorFlow 中,我们可以使用 tf.nn.l2_loss() 进行 L2 正则化。假设我想为 L1 正则化定义自己的正则化运算符(称为 tf.nn.l1_loss())。我该怎么做?我很难在 TensorFlow 源代码中找到运算符定义。
【问题讨论】:
标签:
python
deep-learning
tensorflow
【解决方案1】:
正如评论所建议的,adding an op to TensorFlow 有一个操作指南。本指南介绍了添加一个用 C++ 实现的新操作。一般来说,您应该在以下情况下这样做:
- 无法使用现有的 TensorFlow 操作来实现该操作(例如,
l1_loss 可以使用现有的element-wise 和 reduction 运算符作为 Python 函数来实现)。
- 出于性能(或内存消耗)的原因,C++ 实现是必要的。
- 运算可以实现为运算的组合,但它具有比逐个运算计算梯度更有效(或具有更好的数值稳定性)计算的梯度。 (这就是为什么
tf.nn.l2_loss 在 C++ 中被实现为一个融合操作。)