Что значат 2 набора скобок при обращении к классу в python?
Например:
x = layers.Conv2D(filters=32, kernel_size=(3, 3), activation="relu")(x)
Или это:
x = layers.GlobalAveragePooling2D()(x)
Никак не могу понять что это за (x) передается и чему в конце
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Скорее всего тут ситуация, когда функция возвращает в качестве результата другую функцию. И вот эта функция-результат потом вызывается с аргументом. На этом же принципе построены декораторы в питоне. Простейший пример:
def func(a):
def f(x):
return a+x
return f
print(func(1)(2))
print(func(42))
Вывод:
3
<function func.<locals>.f at 0x7fafb43a2050>
Как видим, func(...) возвращает функцию, а func(...)(...) возвращает результат работы этой функции. В принципе, такие цепочки могут быть и длиннее, чем два звена.