如何尝试一个函数的所有可能参数组合并收集结果值?

2024-06-02 06:48:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我的函数形式如下:

def NN(epochs = None, hidden_nodes = None):
    # ... calculations...
    return score

我想通过一组可能的参数组合来记录它的返回值:

epochs = [10, 100]
architecture = [
    [5, 10],
    [5, 10],
    [5, 10]
]

我的意思是,我希望使用以下方式指定的参数集组合多次运行函数,并收集结果值:

NN(epochs = 10, hidden_nodes = [5])
NN(epochs = 10, hidden_nodes = [10])
NN(epochs = 10, hidden_nodes = [5,   5])
NN(epochs = 10, hidden_nodes = [5,  10])
NN(epochs = 10, hidden_nodes = [10,  5])
NN(epochs = 10, hidden_nodes = [10, 10])
NN(epochs = 10, hidden_nodes = [5,   5,  5])
NN(epochs = 10, hidden_nodes = [5,   5, 10])
NN(epochs = 10, hidden_nodes = [5,  10, 10])
NN(epochs = 10, hidden_nodes = [10, 10, 10])
NN(epochs = 10, hidden_nodes = [5,  10,  5])
...

NN(epochs = 100, hidden_nodes = [ 5])
NN(epochs = 100, hidden_nodes = [10])
NN(epochs = 100, hidden_nodes = [5,   5])
...

对于这样的问题,有什么好的、可读的解决方法


Tags: 函数none参数returndef记录nn形式
1条回答
网友
1楼 · 发布于 2024-06-02 06:48:43

您可以使用以下itertools:

import itertools

epochs = [10, 100]
architecture = [5, 10]

for epock in epochs:
    for nodes_count in xrange(1, 4):
        combinations = itertools.product(architecture, repeat=nodes_count)
        for combination in combinations:
            print epock, list(combination)

输出:

10 [5]
10 [10]
10 [5, 5]
10 [5, 10]
10 [10, 5]
10 [10, 10]
10 [5, 5, 5]
10 [5, 5, 10]
10 [5, 10, 5]
10 [5, 10, 10]
10 [10, 5, 5]
10 [10, 5, 10]
10 [10, 10, 5]
10 [10, 10, 10]
100 [5]
100 [10]
100 [5, 5]
100 [5, 10]
100 [10, 5]
100 [10, 10]
100 [5, 5, 5]
100 [5, 5, 10]
100 [5, 10, 5]
100 [5, 10, 10]
100 [10, 5, 5]
100 [10, 5, 10]
100 [10, 10, 5]
100 [10, 10, 10]

相关问题 更多 >