当前位置: 首页 > 面试题库 >

TensorFlow运算符重载

万明辉
2023-03-14
问题内容

之间有什么区别

   tf.add(x, y)

   x + y

在TensorFlow中?用+代替构造图形时,计算图形会有什么不同tf.add()

更一般而言, +张量或其他运算是否过载?


问题答案:

如果x或中的至少一个ytf.Tensor对象,则表达式tf.add(x, y)x + y是等效的。您可能使用的主要原因tf.add()name为创建的op指定一个显式的关键字参数,这对于重载的运算符版本是不可能的。

请注意,如果x也不y是(tf.Tensor例如,如果它们是NumPy数组),那么x + y将不会创建TensorFlow
op。tf.add()总是创建一个TensorFlow
op并将其参数转换为tf.Tensor对象。因此,如果编写的库函数可能同时接受张量和NumPy数组,则您可能更喜欢使用tf.add()

TensorFlow Python API中的以下运算符已重载:

  • __neg__(一元-
  • __abs__abs()
  • __invert__(一元~
  • __add__(二进制+
  • __sub__(二进制-
  • __mul__(二进制元素*
  • __div__/Python 2中的二进制)
  • __floordiv__//Python 3中的二进制)
  • __truediv__/Python 3中的二进制)
  • __mod__(二进制%
  • __pow__(二进制**
  • __and__(二进制&
  • __or__(二进制|
  • __xor__(二进制^
  • __lt__(二进制<
  • __le__(二进制<=
  • __gt__(二进制>
  • __ge__(二进制>=

请注意,__eq__(binary ==没有 过载。x == y将简单地返回一个Python布尔值是否xy引用相同的张量。您需要tf.equal()显式使用以检查元素方式的相等性。不相等__ne__(二进制!=)也是如此。



 类似资料:
  • Rust可以让我们对某些运算符进行重载,这其中大部分的重载都是对std::ops下的trait进行重载而实现的。 重载加法 我们现在来实现一个只支持加法的阉割版复数: use std::ops::Add; #[derive(Debug)] struct Complex { a: f64, b: f64, } impl Add for Complex { type Outpu

  • 问题内容: 我知道golang不会提供运算符重载,因为它认为这会增加复杂性。 所以我想直接对结构实现。 https://play.golang.org/p/1U8omyF8-V 通过上面的代码, AddValue 可以按我的方式工作。但是,我唯一关心的是它是按值传递的,因此我每次必须返回新添加的值。 还有其他更好的方法,以避免返回汇总变量。 问题答案: 是的,使用指针接收器: 通过使用指针接收器,

  • 问题内容: 我已经使用JavaScript了几天,现在我想为定义的对象重载运算符。 在Google搜索了一段时间后,您似乎无法正式执行此操作,但是仍有一些人声称采取了一些漫长的方法来执行此操作。 基本上,我制作了Vector2类,并希望能够执行以下操作: 相反,我必须这样做: 我可以采用什么方法在Vector2类中重载运算符?因为这看起来很丑陋。 问题答案: 如您所见,JavaScript不支持运

  • 主要内容:运算符重载的实现,可重载与不可重载的运算符C# 中支持运算符重载,所谓运算符重载就是我们可以使用自定义类型来重新定义 C# 中大多数运算符的功能。运算符重载需要通过 operator 关键字后跟运算符的形式来定义的,我们可以将被重新定义的运算符看作是具有特殊名称的函数,与其他函数一样,该函数也有返回值类型和参数列表,如下例所示: public static Box operator+ (Box b, Box c) {     Box bo

  • 本文向大家介绍c++ *运算符重载,包括了c++ *运算符重载的使用技巧和注意事项,需要的朋友参考一下 运算符重载,对象和指向对象的指针 直接上code 运行结果: t是指向test对象的指针,(*t) 也就是一个test对象。 所以只有 *t才真正的调用了 运算符的重载函数。

  • 我试图重载结构中映射的运算符<<,但得到一个编译错误: 不存在从“std::_rb_tree_const_iterator >”到“std::_rb_tree_iterator >”的合适的用户定义转换