作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将多个参数传递给应通过超参数和多处理
进行优化的函数。
如果将 Enum
作为参数传递,则会失败。请参阅下面的代码。
在这种情况下如何传递Enum
?
from sklearn.model_selection import ParameterGrid
from multiprocessing import Pool
from enum import Enum
class MyStrategy(Enum):
var1 = 1
var2 = 2
var1 = MyStrategy(1)
var2 = MyStrategy(2)
abc = [1, 2]
xyz = [3, 4]
if True:
pg = [{'variant': var1,
'abc': abc,
'xyz': xyz, },
{'variant': var2,
'abc': abc, }]
else:
pg = [{'variant': '1',
'abc': abc,
'xyz': xyz, },
{'variant': '2',
'abc': abc, }]
parameterGrid = ParameterGrid(pg)
def myFunc(myParam):
print(myParam)
pool = Pool(1)
myList = pool.map(myFunc, parameterGrid)
如果False
则有效:
{'abc': 1, 'variant': '1', 'xyz': 3}
{'abc': 1, 'variant': '1', 'xyz': 4}
{'abc': 2, 'variant': '1', 'xyz': 3}
{'abc': 2, 'variant': '1', 'xyz': 4}
{'abc': 1, 'variant': '2'}
{'abc': 2, 'variant': '2'}
并失败并显示True
:
TypeError: object of type 'MyStrategy' has no len()
最佳答案
首先,您需要将枚举中的值更改为字符串,因为这与您在 False
block 中用于 variant
键的数据类型相同。像这样
from sklearn.model_selection import ParameterGrid
from multiprocessing import Pool
from enum import Enum
class MyStrategy(Enum):
var1 = '1' #<--------Notice the value is string not int
var2 = '2'
接下来,使用如下值:
var1 = MyStrategy.var1.value
var2 = MyStrategy.var2.value
关于python - 如何将枚举传递给 ParameterGrid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57156122/
我是一名优秀的程序员,十分优秀!