如何在Lightweight MMM中为CustomScaler配置自定义Lambda除法操作?
解决Lightweight MMM中CustomScaler自定义除法操作的问题
你需要直接将自定义的Lambda函数作为参数传递给divide_operation,不需要单独定义后错误引用变量或关键字。正确代码如下:
media_scaler = preprocessing.CustomScaler(divide_operation=lambda x: jnp.mean(x[x > 0]))
错误写法分析
- 第一种错误:单独定义Lambda函数后,你引用的
x是Lambda的参数名,并非函数本身的变量,会触发x未定义的报错。 - 第二种错误:
lambda是Python关键字,不能直接作为参数传递,必须写出完整的Lambda表达式,或是把函数赋值给变量后再传入。
如果觉得Lambda表达式可读性不足,也可以先将自定义逻辑封装成普通函数,再传入参数,写法如下:
def positive_mean(x): return jnp.mean(x[x > 0]) media_scaler = preprocessing.CustomScaler(divide_operation=positive_mean)
这种写法更适合逻辑复杂的自定义操作,可读性更强。
内容的提问来源于stack exchange,提问作者Nneka
相关产品推荐
相关产品推荐

