gpt4 book ai didi

python - python 中的静态 lambda

转载 作者:太空狗 更新时间:2023-10-30 00:49:08 26 4
gpt4 key购买 nike

我有这样的 python 类

 import numpy as np
class BackPropogationNetwork:
# Static lambdas
sigmoid = lambda x : 1/(1+np.exp(-x))
sigmoid_prime = lambda sigmoid: sigmoid(1-sigmoid)

这是构造函数

 def __init__(self):
self.some_attr = self.sigmoid(2)

我收到这个错误

TypeError: <lambda>() takes exactly 1 argument (2 given)

如果我这样调用

self.some_attr = ClassName.sigmoid()

我收到这个错误

TypeError: unbound method <lambda>() must be called with BackPropogationNetwork instance as first argument (got int instance instead)

最佳答案

您需要将 lambda 表达式包装在 staticmethod objects 中:

class BackPropogationNetwork:
sigmoid = staticmethod(lambda x : 1/(1+np.exp(-x)))
sigmoid_prime = staticmethod(lambda sigmoid: sigmoid(1-sigmoid))

lambda 表达式仍然产生函数对象,只是使用了不同的(有限的)语法。与在类中定义函数的规则相同;如果你想让它成为一个静态方法,那么你仍然需要包装它们。

关于python - python 中的静态 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33307012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com