在 Python 中的变量后面使用圆括号有什么作用?
What do parentheses do when used after a variable in Python?
这个问题可能很愚蠢,但我对 Python 的了解还不够了解发生了什么。
所以我试图学习 TensorFlow 并注意到这个奇怪的调用:
model = Sequential(
# ...
)
predictions = model(x_train[:1]).numpy()
有人可以解释一下 model(x_train[:1])
在这里做什么吗?据我所知,模型是上面已经构造的对象吗?这是将对象用作 method/function 吗?还是这里发生了其他事情?
在这种情况下,Tensorflow 作者在 tf.keras.Sequential
class 层次结构中提供了 __call__
“魔术方法”的实现。
这允许您调用对象的实例as-if它是一个函数。对 model = Sequential(...)
的调用通过 __init__
构造函数初始化 class 本身。 model()
调用 __call__
魔法方法。
Tensorflow 和 torch 将其用作通过网络进行前向传递的便利包装器(在大多数情况下)。
这个问题可能很愚蠢,但我对 Python 的了解还不够了解发生了什么。 所以我试图学习 TensorFlow 并注意到这个奇怪的调用:
model = Sequential(
# ...
)
predictions = model(x_train[:1]).numpy()
有人可以解释一下 model(x_train[:1])
在这里做什么吗?据我所知,模型是上面已经构造的对象吗?这是将对象用作 method/function 吗?还是这里发生了其他事情?
在这种情况下,Tensorflow 作者在 tf.keras.Sequential
class 层次结构中提供了 __call__
“魔术方法”的实现。
这允许您调用对象的实例as-if它是一个函数。对 model = Sequential(...)
的调用通过 __init__
构造函数初始化 class 本身。 model()
调用 __call__
魔法方法。
Tensorflow 和 torch 将其用作通过网络进行前向传递的便利包装器(在大多数情况下)。