GC ML Engine outputs the same result with two different models
I have developed two different versions of a model in Keras and converted them to Tensorflow like this:
import keras.backend as K
from keras.models import load_model, Sequential
from tensorflow.python.saved_model import builder as saved_model_builder
from tensorflow.python.saved_model import tag_constants, signature_constants
from tensorflow.python.saved_model.signature_def_utils_impl import predict_signature_def
# reset session
K.clear_session()
sess = tensorflow.Session()
K.set_session(sess)
# disable loading of learning nodes
K.set_learning_phase(0)
# load model
model = load_model('model.h5')
config = model.get_config()
weights = model.get_weights()
new_Model = Sequential.from_config(config)
new_Model.set_weights(weights)
# export saved model
export_path = 'export-pb-variables'
builder = saved_model_builder.SavedModelBuilder(export_path) #builder = tf.saved_model.builder.SavedModelBuilder(export_path)
signature = predict_signature_def(inputs={'input': new_Model.input},
outputs={'output': new_Model.output})
with K.get_session() as sess:
builder.add_meta_graph_and_variables(
sess=sess,
tags=[tag_constants.SERVING],
signature_def_map={
signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature}
)
builder.save()
Each model resulted in .pb file together with variables folder. I have then tested that I can use these files to restore the model and get predictions in this way:
# reset session
keras.backend.clear_session()
sess = tf.Session()
keras.backend.set_session(sess)
with keras.backend.get_session() as sess:
tf.saved_model.loader.load(sess, [tag_constants.SERVING], path_to_exported_model)
result = sess.run('dense_1/Sigmoid:0', feed_dict={'lstm1_input_1:0': one_input_example})
print(result)
Locally the two versions are reproducible and give me different results for different input parameters, as it should be. However, after I upload them to GC to make predictions using ML Engine, these two versions produce the same result (which differs significantly from the results of either of two versions locally). If I test other input examples, the results are again the same (but not exactly the same among different inputs)
Can you advise what can be a possible reason for this.
tensorflow keras google-cloud-ml
add a comment |
I have developed two different versions of a model in Keras and converted them to Tensorflow like this:
import keras.backend as K
from keras.models import load_model, Sequential
from tensorflow.python.saved_model import builder as saved_model_builder
from tensorflow.python.saved_model import tag_constants, signature_constants
from tensorflow.python.saved_model.signature_def_utils_impl import predict_signature_def
# reset session
K.clear_session()
sess = tensorflow.Session()
K.set_session(sess)
# disable loading of learning nodes
K.set_learning_phase(0)
# load model
model = load_model('model.h5')
config = model.get_config()
weights = model.get_weights()
new_Model = Sequential.from_config(config)
new_Model.set_weights(weights)
# export saved model
export_path = 'export-pb-variables'
builder = saved_model_builder.SavedModelBuilder(export_path) #builder = tf.saved_model.builder.SavedModelBuilder(export_path)
signature = predict_signature_def(inputs={'input': new_Model.input},
outputs={'output': new_Model.output})
with K.get_session() as sess:
builder.add_meta_graph_and_variables(
sess=sess,
tags=[tag_constants.SERVING],
signature_def_map={
signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature}
)
builder.save()
Each model resulted in .pb file together with variables folder. I have then tested that I can use these files to restore the model and get predictions in this way:
# reset session
keras.backend.clear_session()
sess = tf.Session()
keras.backend.set_session(sess)
with keras.backend.get_session() as sess:
tf.saved_model.loader.load(sess, [tag_constants.SERVING], path_to_exported_model)
result = sess.run('dense_1/Sigmoid:0', feed_dict={'lstm1_input_1:0': one_input_example})
print(result)
Locally the two versions are reproducible and give me different results for different input parameters, as it should be. However, after I upload them to GC to make predictions using ML Engine, these two versions produce the same result (which differs significantly from the results of either of two versions locally). If I test other input examples, the results are again the same (but not exactly the same among different inputs)
Can you advise what can be a possible reason for this.
tensorflow keras google-cloud-ml
My naive guess is that I'm not exporting the model correctly.
– Daria
Nov 26 '18 at 8:58
add a comment |
I have developed two different versions of a model in Keras and converted them to Tensorflow like this:
import keras.backend as K
from keras.models import load_model, Sequential
from tensorflow.python.saved_model import builder as saved_model_builder
from tensorflow.python.saved_model import tag_constants, signature_constants
from tensorflow.python.saved_model.signature_def_utils_impl import predict_signature_def
# reset session
K.clear_session()
sess = tensorflow.Session()
K.set_session(sess)
# disable loading of learning nodes
K.set_learning_phase(0)
# load model
model = load_model('model.h5')
config = model.get_config()
weights = model.get_weights()
new_Model = Sequential.from_config(config)
new_Model.set_weights(weights)
# export saved model
export_path = 'export-pb-variables'
builder = saved_model_builder.SavedModelBuilder(export_path) #builder = tf.saved_model.builder.SavedModelBuilder(export_path)
signature = predict_signature_def(inputs={'input': new_Model.input},
outputs={'output': new_Model.output})
with K.get_session() as sess:
builder.add_meta_graph_and_variables(
sess=sess,
tags=[tag_constants.SERVING],
signature_def_map={
signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature}
)
builder.save()
Each model resulted in .pb file together with variables folder. I have then tested that I can use these files to restore the model and get predictions in this way:
# reset session
keras.backend.clear_session()
sess = tf.Session()
keras.backend.set_session(sess)
with keras.backend.get_session() as sess:
tf.saved_model.loader.load(sess, [tag_constants.SERVING], path_to_exported_model)
result = sess.run('dense_1/Sigmoid:0', feed_dict={'lstm1_input_1:0': one_input_example})
print(result)
Locally the two versions are reproducible and give me different results for different input parameters, as it should be. However, after I upload them to GC to make predictions using ML Engine, these two versions produce the same result (which differs significantly from the results of either of two versions locally). If I test other input examples, the results are again the same (but not exactly the same among different inputs)
Can you advise what can be a possible reason for this.
tensorflow keras google-cloud-ml
I have developed two different versions of a model in Keras and converted them to Tensorflow like this:
import keras.backend as K
from keras.models import load_model, Sequential
from tensorflow.python.saved_model import builder as saved_model_builder
from tensorflow.python.saved_model import tag_constants, signature_constants
from tensorflow.python.saved_model.signature_def_utils_impl import predict_signature_def
# reset session
K.clear_session()
sess = tensorflow.Session()
K.set_session(sess)
# disable loading of learning nodes
K.set_learning_phase(0)
# load model
model = load_model('model.h5')
config = model.get_config()
weights = model.get_weights()
new_Model = Sequential.from_config(config)
new_Model.set_weights(weights)
# export saved model
export_path = 'export-pb-variables'
builder = saved_model_builder.SavedModelBuilder(export_path) #builder = tf.saved_model.builder.SavedModelBuilder(export_path)
signature = predict_signature_def(inputs={'input': new_Model.input},
outputs={'output': new_Model.output})
with K.get_session() as sess:
builder.add_meta_graph_and_variables(
sess=sess,
tags=[tag_constants.SERVING],
signature_def_map={
signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature}
)
builder.save()
Each model resulted in .pb file together with variables folder. I have then tested that I can use these files to restore the model and get predictions in this way:
# reset session
keras.backend.clear_session()
sess = tf.Session()
keras.backend.set_session(sess)
with keras.backend.get_session() as sess:
tf.saved_model.loader.load(sess, [tag_constants.SERVING], path_to_exported_model)
result = sess.run('dense_1/Sigmoid:0', feed_dict={'lstm1_input_1:0': one_input_example})
print(result)
Locally the two versions are reproducible and give me different results for different input parameters, as it should be. However, after I upload them to GC to make predictions using ML Engine, these two versions produce the same result (which differs significantly from the results of either of two versions locally). If I test other input examples, the results are again the same (but not exactly the same among different inputs)
Can you advise what can be a possible reason for this.
tensorflow keras google-cloud-ml
tensorflow keras google-cloud-ml
edited Nov 23 '18 at 15:22
Daria
asked Nov 23 '18 at 13:49
DariaDaria
184
184
My naive guess is that I'm not exporting the model correctly.
– Daria
Nov 26 '18 at 8:58
add a comment |
My naive guess is that I'm not exporting the model correctly.
– Daria
Nov 26 '18 at 8:58
My naive guess is that I'm not exporting the model correctly.
– Daria
Nov 26 '18 at 8:58
My naive guess is that I'm not exporting the model correctly.
– Daria
Nov 26 '18 at 8:58
add a comment |
0
active
oldest
votes
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%2f53447932%2fgc-ml-engine-outputs-the-same-result-with-two-different-models%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
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%2f53447932%2fgc-ml-engine-outputs-the-same-result-with-two-different-models%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
My naive guess is that I'm not exporting the model correctly.
– Daria
Nov 26 '18 at 8:58