gpt4 book ai didi

python - 如何从函数列表[f1,f2,f3,... fn]组成嵌套函数g = fn(...(f3(f2(f1()))...)

转载 作者:行者123 更新时间:2023-12-03 16:09:00 25 4
gpt4 key购买 nike

问题
有没有现成的Python方法可以从函数列表[f1,f2,f3]中组成多个嵌套的函数g = f3(f2(f1())),其中列表中还有更多函数。
如果有的话,我可以做:

g = lambda x: f3(f2(f1(x)))
但是,当我在深度神经网络中有数十个功能(例如层)时,它是无法管理的。最好不要创建另一个函数来编写g,而是要找到可用的方法。

更新
基于@Chris的答案。对于顺序神经网络层 [ batchnorm, matmul, activation, softmaxloss ],每个层都有 forward(X)方法来计算其输出到下一层,损失函数L和损失将为:
L = reduce(lambda f, g: lambda X: g(f(X)),  [ layer.forward for layer in layers ] )   # Loss function
network_loss = L(X)

最佳答案

一种使用functools.reduce的方法:

from functools import reduce

f1 = lambda x: x+1
f2 = lambda x: x*2
f3 = lambda x: x+3
funcs = [f1, f2, f3]

g = reduce(lambda f, g: lambda x: g(f(x)), funcs)
输出:
g(1)==7 # ((1+1) * 2) + 3
g(2)==9 # ((2+1) * 2) + 3
洞察力: functools.reduce将根据其第一个参数(此处为 funcs)链接其第二个参数(此处为 lambda)。
话虽如此,它将开始将 f1f2链接为 f_21(x) = f2(f1(x)),然后将 f3f_21链接为 f3(f_21(x)),成为 g(x)

关于python - 如何从函数列表[f1,f2,f3,... fn]组成嵌套函数g = fn(...(f3(f2(f1()))...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66149076/

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