【问题标题】:Is it possible to change my existing code for different parameter list是否可以为不同的参数列表更改我现有的代码
【发布时间】:2021-09-18 08:48:13
【问题描述】:

下面给出的代码工作正常。在这里,我正在做并行化,我也使用了param_gridParameterSampler

def analyse(
    generate_dataset: Any,
    regressor: Any,
    method: Method,
    test_size: Tuple[float, float],
    k: int,
    n_reps: int,
    param_iters: int = 2,
) -> DataFrame:
    args = dict(
        generate_dataset=generate_dataset,
        regressor=regressor,
        method=method,
        test_size=test_size,
        k=k,
        n_reps=n_reps,
        param_iters=param_iters
    )

    param_grid = { "test_size": np.random.uniform(test_size[0], test_size[1], param_iters)  }
    sampler = list(ParameterSampler(param_grid, n_iter=param_iters))

    args = [Namespace(**{**args, **dict(params=params)}) for params in sampler]
   
    rows, _ = list(
        zip(*process_map(inner_loop, args, total=len(args), desc=f"Computing ECs for method '{method}'"))
    )

    df: DataFrame = pd.concat(rows, axis=0, ignore_index=True)
    return df

现在,我不想使用param_gridParameterSampler。相反,我想在没有这两个(param_gridParameterSampler)的情况下通过args。不过,我不确定我的想法是否可行。

在没有param_gridParameterSampler 的情况下传递参数有什么想法吗?

【问题讨论】:

  • args 完全依赖于sampler,因此依赖于param_gridParameterSampler。如果不是来自这些来源的数据,您希望 args 保存什么?
  • @Carcigenicate 谢谢。我想通过generate_dataset, regressor, method, k, n_reps 正在通过def analyse()。有可能吗?

标签: python python-3.x parallel-processing parameter-passing


【解决方案1】:

不是 100% 肯定,但可以给你一些关于改变的想法。根据您需要在代码中进行更多更改的想法。

  1. 使用来自itertoolsrepeat

  2. n_reps 更改为repetitions

  3. 删除args = dict()

  4. args代码改为

   args = Namespace(
        **dict(generate_dataset=generate_dataset, regressor=regressor, reg_name=reg_name, method=method, k=k, repetitions=repetitions)
        )
  1. rows, _更改为
    rows, _ = list(
        zip(
            *process_map(
                inner_loop,
                repeat(args, repetitions),
                total=repetitions,
                desc=f"Computing ECs for method '{method}'",
            )
        )
    )

您需要删除您在程序中使用的所有位置的param_itersparamstest_size。否则会报错!

【讨论】:

  • 谢谢,这行得通。是的,我不得不改变很多地方,但这个想法奏效了。
猜你喜欢
  • 2018-01-29
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
相关资源
最近更新 更多