Можно ли определить функцию функции активации? Я пытался сделать:
def activation():
# return nn.Sin()
# return nn.Tanh()
# return nn.Sigmoid()
# return nn.Tanhshrink()
return nn.HardTanh(-1,1)
# return nn.Hardswish()
# return nn.functionnal.silu()
Но я получаю сообщение об ошибке при попытке вызвать его. Вот пример:
def f():
return nn.Tanh()
input = torch.randn(2)
output = f(input)
print(output)
Он выводит «TypeError: f() принимает 0 позиционных аргументов, но был задан 1». Это не работает, даже я дал ему аргумент x.
2 ответа
Вы можете использовать объектно-ориентированный подход:
>>> f = nn.Tanh()
>>> output = f(x)
Или функциональный подход, где вы найдете эквивалент для nn.Tanh
внутри nn.functional
как tanh
.
>>> f = nn.functional.tanh
>>> output = f(x)
f()(input)
.
Действительно, вы не предоставляете аргумент функции. Это то, что вы пытаетесь сделать?
def f(x):
return nn.Tanh(x)
def f(): return nn.Tanh() input = torch.randn(2) output = f()(input) print(output)
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.
f = nn.Tanh
?def f(): return nn.Tanh() input = torch.randn(2) output = f()(input) print(output)
, потому что f возвращает объект.