2017-08-11 43 views
2

我有一個簡單的LinearModel,它具有兩個稀疏實數特徵和兩個實值特徵。我訓練了它,現在我想用export_savedmodel將它導出。引用來源很少,我想出了沿着線的東西:Tensorflow中export_savedmodel的input_alternative錯誤

feature_spec = create_feature_spec_for_parsing(
    [ 
     real_valued_column_1, real_valued_column_2, 
     sparse_column_1, sparce_column_2 
    ] 
) 
input_receiver_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(feature_spec) 
my_estimator.export_savedmodel('my_model/', serving_input_fn=input_receiver_fn) 

其中:

real_valued_column_1 = tf.contrib.layers.real_valued_column(
    'avg_consumption_h') 
sparse_column_1 = tf.contrib.layers.sparse_column_with_integerized_feature("sparse_1", bucket_size=24) 

不幸的是我在export_savedmodel得到ValueError: A default input_alternative must be provided.。我深入瞭解張量流的代碼庫,看起來build_parsing_serving_input_receiver_fn總是返回ServingInputReceiver,但是如果傳遞給export_savedmodel的serving_input_fn不是InputFnOps類型,那麼提取input_alternatives的方法總是將它們創建爲空。

build_parsing_serving_input_receiver_fnbuild_parsing_serving_input_receiver_fn以某種方式被棄用,在提取input_alternative的過程中出現錯誤,或者我誤解了整個過程並做錯了什麼?

我使用python 3.6與tensorflow 1.2,我的模型是一個簡單的tf.contrib.learn.LinearRegressor

+0

[export_savedmodel功能的示例](https://stackoverflow.com/a/48329456/4268517) –

回答

3

你可以嘗試以下

from tensorflow.contrib.learn.python.learn.utils.input_fn_utils import build_parsing_serving_input_fn 
input_receiver_fn = build_parsing_serving_input_fn(feature_spec) 
+0

謝謝,它的工作原理! [當前文檔](https://www.tensorflow.org/programmers_guide/saved_model#using_savedmodel_with_estimators)雖然仍然指向cl0udburst所使用的版本,但是您能否給出更多提示它做了什麼以及它爲什麼不同? – stpk