Sacred - pass all parameters as one
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
When using Sacred
it is necessary to pass all variables from the experiment config, into the main function, for example
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:])
As you can see, in this experiment there are 2 variables, C
and gamma
, and they are passed into the main function.
In real scenarios, there are dozens of experiment variables, and the passing all of them into the main function gets really cluttered.
Is there a way to pass them all as a dictionary? Or maybe as an object with attributes?
A good solution will result in something like follows:
@ex.automain
def run(config):
config.C # Option 1
config['C'] # Option 2
python python-sacred
add a comment |
When using Sacred
it is necessary to pass all variables from the experiment config, into the main function, for example
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:])
As you can see, in this experiment there are 2 variables, C
and gamma
, and they are passed into the main function.
In real scenarios, there are dozens of experiment variables, and the passing all of them into the main function gets really cluttered.
Is there a way to pass them all as a dictionary? Or maybe as an object with attributes?
A good solution will result in something like follows:
@ex.automain
def run(config):
config.C # Option 1
config['C'] # Option 2
python python-sacred
Not sure about sacred, but in python you can! this is what is often refered to **kwargs you can check here for some example: book.pythontips.com/en/latest/args_and_kwargs.html
– RomainL.
Nov 22 '18 at 12:52
Yep, I'm aware of that. The problem is that I am not the one passing the variables from thecfg
function into therun
function so I'm not responsible for sending them as positional / key-word arguments
– bluesummers
Nov 22 '18 at 12:55
add a comment |
When using Sacred
it is necessary to pass all variables from the experiment config, into the main function, for example
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:])
As you can see, in this experiment there are 2 variables, C
and gamma
, and they are passed into the main function.
In real scenarios, there are dozens of experiment variables, and the passing all of them into the main function gets really cluttered.
Is there a way to pass them all as a dictionary? Or maybe as an object with attributes?
A good solution will result in something like follows:
@ex.automain
def run(config):
config.C # Option 1
config['C'] # Option 2
python python-sacred
When using Sacred
it is necessary to pass all variables from the experiment config, into the main function, for example
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:])
As you can see, in this experiment there are 2 variables, C
and gamma
, and they are passed into the main function.
In real scenarios, there are dozens of experiment variables, and the passing all of them into the main function gets really cluttered.
Is there a way to pass them all as a dictionary? Or maybe as an object with attributes?
A good solution will result in something like follows:
@ex.automain
def run(config):
config.C # Option 1
config['C'] # Option 2
python python-sacred
python python-sacred
asked Nov 22 '18 at 12:41
bluesummersbluesummers
2,57612650
2,57612650
Not sure about sacred, but in python you can! this is what is often refered to **kwargs you can check here for some example: book.pythontips.com/en/latest/args_and_kwargs.html
– RomainL.
Nov 22 '18 at 12:52
Yep, I'm aware of that. The problem is that I am not the one passing the variables from thecfg
function into therun
function so I'm not responsible for sending them as positional / key-word arguments
– bluesummers
Nov 22 '18 at 12:55
add a comment |
Not sure about sacred, but in python you can! this is what is often refered to **kwargs you can check here for some example: book.pythontips.com/en/latest/args_and_kwargs.html
– RomainL.
Nov 22 '18 at 12:52
Yep, I'm aware of that. The problem is that I am not the one passing the variables from thecfg
function into therun
function so I'm not responsible for sending them as positional / key-word arguments
– bluesummers
Nov 22 '18 at 12:55
Not sure about sacred, but in python you can! this is what is often refered to **kwargs you can check here for some example: book.pythontips.com/en/latest/args_and_kwargs.html
– RomainL.
Nov 22 '18 at 12:52
Not sure about sacred, but in python you can! this is what is often refered to **kwargs you can check here for some example: book.pythontips.com/en/latest/args_and_kwargs.html
– RomainL.
Nov 22 '18 at 12:52
Yep, I'm aware of that. The problem is that I am not the one passing the variables from the
cfg
function into the run
function so I'm not responsible for sending them as positional / key-word arguments– bluesummers
Nov 22 '18 at 12:55
Yep, I'm aware of that. The problem is that I am not the one passing the variables from the
cfg
function into the run
function so I'm not responsible for sending them as positional / key-word arguments– bluesummers
Nov 22 '18 at 12:55
add a comment |
2 Answers
2
active
oldest
votes
Yes, you can use the special value _config
value for that:
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
@ex.automain
def run(_config):
C = _config['C']
gamma = _config['gamma']
add a comment |
Most elegant solution I could find
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
params = {'C': C, 'gamma': gamma}
@ex.automain
def run(params):
iris = datasets.load_iris()
per = permutation(iris.target.size)
iris.data = iris.data[per]
iris.target = iris.target[per]
clf = svm.SVC(params['C'], 'rbf', gamma=params['gamma'])
clf.fit(iris.data[:90],
iris.target[:90])
return clf.score(iris.data[90:],
iris.target[90:])
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431283%2fsacred-pass-all-parameters-as-one%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Yes, you can use the special value _config
value for that:
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
@ex.automain
def run(_config):
C = _config['C']
gamma = _config['gamma']
add a comment |
Yes, you can use the special value _config
value for that:
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
@ex.automain
def run(_config):
C = _config['C']
gamma = _config['gamma']
add a comment |
Yes, you can use the special value _config
value for that:
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
@ex.automain
def run(_config):
C = _config['C']
gamma = _config['gamma']
Yes, you can use the special value _config
value for that:
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
@ex.automain
def run(_config):
C = _config['C']
gamma = _config['gamma']
answered Mar 4 at 11:44
QlausQlaus
739312
739312
add a comment |
add a comment |
Most elegant solution I could find
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
params = {'C': C, 'gamma': gamma}
@ex.automain
def run(params):
iris = datasets.load_iris()
per = permutation(iris.target.size)
iris.data = iris.data[per]
iris.target = iris.target[per]
clf = svm.SVC(params['C'], 'rbf', gamma=params['gamma'])
clf.fit(iris.data[:90],
iris.target[:90])
return clf.score(iris.data[90:],
iris.target[90:])
add a comment |
Most elegant solution I could find
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
params = {'C': C, 'gamma': gamma}
@ex.automain
def run(params):
iris = datasets.load_iris()
per = permutation(iris.target.size)
iris.data = iris.data[per]
iris.target = iris.target[per]
clf = svm.SVC(params['C'], 'rbf', gamma=params['gamma'])
clf.fit(iris.data[:90],
iris.target[:90])
return clf.score(iris.data[90:],
iris.target[90:])
add a comment |
Most elegant solution I could find
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
params = {'C': C, 'gamma': gamma}
@ex.automain
def run(params):
iris = datasets.load_iris()
per = permutation(iris.target.size)
iris.data = iris.data[per]
iris.target = iris.target[per]
clf = svm.SVC(params['C'], 'rbf', gamma=params['gamma'])
clf.fit(iris.data[:90],
iris.target[:90])
return clf.score(iris.data[90:],
iris.target[90:])
Most elegant solution I could find
ex = Experiment('iris_rbf_svm')
@ex.config
def cfg():
C = 1.0
gamma = 0.7
params = {'C': C, 'gamma': gamma}
@ex.automain
def run(params):
iris = datasets.load_iris()
per = permutation(iris.target.size)
iris.data = iris.data[per]
iris.target = iris.target[per]
clf = svm.SVC(params['C'], 'rbf', gamma=params['gamma'])
clf.fit(iris.data[:90],
iris.target[:90])
return clf.score(iris.data[90:],
iris.target[90:])
answered Dec 4 '18 at 17:17
bluesummersbluesummers
2,57612650
2,57612650
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53431283%2fsacred-pass-all-parameters-as-one%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Not sure about sacred, but in python you can! this is what is often refered to **kwargs you can check here for some example: book.pythontips.com/en/latest/args_and_kwargs.html
– RomainL.
Nov 22 '18 at 12:52
Yep, I'm aware of that. The problem is that I am not the one passing the variables from the
cfg
function into therun
function so I'm not responsible for sending them as positional / key-word arguments– bluesummers
Nov 22 '18 at 12:55