[英]Python - Parameter declaration for vectorized functions
我目前正在开发一个 Python 框架,用于训练具有应用于训练数据的不同噪声函数的 ML 模型。 这是这个噪声函数的一个例子。
def add_gauss(x, a=0, b=0.1)
return x + np.random.normal(a,b)
然后我建立一个包含几个这样的函数的列表
functions = [add_gauss, add_laplace]
然后将其用于训练函数,进行矢量化并应用于训练数据:
data = [1, 2, 3, 4]
modified_data_list = []
for function in functions:
v_function = numpy.vectorize(function)
modified_data_list.append(v_function(data))
在这种情况下,这会产生一个列表,其中包含两个数据集,一个具有高斯噪声,一个具有拉普拉斯噪声。 我当前的问题:此设置仅有效,因为我为我制作的函数提供了默认参数。 我不确定是否有办法声明它们,以便我得到类似的东西:
functions = [add_gauss(*, 0, 0.1), add_laplace(*, 0, 0.1)]
其中“*”表示每个数据条目的值,因为它被矢量化函数修改。
这是可能的还是我应该改变方法?
一种可能性是编写一个返回函数的函数:
def add_gauss_func(a, b):
def f(x)
return x + np.random.normal(a,b)
return f
如果您有兴趣了解更多信息,这将使用一个称为“闭包”的概念。
现在你可以做
functions = [add_gauss(0, 0.1), add_gauss(0, 0.2)]
对于具有不同高斯噪声的两个不同函数。
类似的技术可以用于拉普拉斯噪声函数。
实际上,如果您想真正花哨的话,这可能可以推广到def add_noise(f, *params)
或类似的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.