之间有什么区别
tf.add(x, y)
和
x + y
在TensorFlow中?用+
代替构造图形时,计算图形会有什么不同tf.add()
?
更一般而言, +
张量或其他运算是否过载?
如果x
或中的至少一个y
是tf.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布尔值是否x
和y
引用相同的张量。您需要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 >”的合适的用户定义转换