使用Sacred
时,必须将实验配置中的所有变量传递到主函数中,例如
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
@ex.automain
def run(C, gamma):
iris = datasets.load_iris()
per = permutation(iris.target.size)
iris.data = iris.data[per]
iris.target = iris.target[per]
clf = svm.SVC(C, 'rbf', gamma=gamma)
clf.fit(iris.data[:90],
iris.target[:90])
return clf.score(iris.data[90:],
iris.target[90:])
如您所见,在这个实验中,有 2 个变量,C
和gamma
,它们被传递到主函数中。
在实际场景中,有几十个实验变量,将它们全部传递到主函数中会变得非常混乱。有没有办法将它们全部作为字典传递?或者也许作为具有属性的对象?
一个好的解决方案将导致如下所示:
@ex.automain
def run(config):
config.C # Option 1
config['C'] # Option 2