2017-10-04 239 views
0

我們得到了在當地的一個工作出口模式,正在下降創造谷歌雲計算的新模式版本ML如下:谷歌雲ML:用於輸出的外形尺寸必須是未知

Create Version failed. Model validation failed: Outer dimension for outputs must be unknown, outer dimension of 'Const_2:0' is 1 For more information on how to export Tensorflow SavedModel, seehttps://www.tensorflow.org/api_docs/python/tf/saved_model.

我們目前的出口模型響應工作在tensorflow-servegcloud predict local這個答覆:

outputs { 
 
    key: "categories" 
 
    value { 
 
    dtype: DT_STRING 
 
    tensor_shape { 
 
     dim { 
 
     size: 1 
 
     } 
 
     dim { 
 
     size: 17 
 
     } 
 
    } 
 
    string_val: "Business Essentials" 
 
    string_val: "Business Skills" 
 
    string_val: "Communication" 
 
    string_val: "Customer Service" 
 
    string_val: "Desktop Computing" 
 
    string_val: "Finance" 
 
    string_val: "Health & Wellness" 
 
    string_val: "Human Resources" 
 
    string_val: "Information Technology" 
 
    string_val: "Leadership" 
 
    string_val: "Management" 
 
    string_val: "Marketing & Advertising" 
 
    string_val: "Personal Development" 
 
    string_val: "Project Management" 
 
    string_val: "Sales" 
 
    string_val: "Technical Skills" 
 
    string_val: "Training & Development" 
 
    } 
 
} 
 
outputs { 
 
    key: "category" 
 
    value { 
 
    dtype: DT_STRING 
 
    tensor_shape { 
 
     dim { 
 
     size: 1 
 
     } 
 
    } 
 
    string_val: "Training & Development" 
 
    } 
 
} 
 
outputs { 
 
    key: "class" 
 
    value { 
 
    dtype: DT_INT64 
 
    tensor_shape { 
 
     dim { 
 
     size: 1 
 
     } 
 
    } 
 
    int64_val: 16 
 
    } 
 
} 
 
outputs { 
 
    key: "prob" 
 
    value { 
 
    dtype: DT_FLOAT 
 
    tensor_shape { 
 
     dim { 
 
     size: 1 
 
     } 
 
     dim { 
 
     size: 17 
 
     } 
 
    } 
 
    float_val: 0.051308773458 
 
    float_val: 2.39087748923e-05 
 
    float_val: 4.77133402232e-11 
 
    float_val: 0.00015225057723 
 
    float_val: 0.201782479882 
 
    float_val: 2.11781745287e-17 
 
    float_val: 3.61836161034e-09 
 
    float_val: 0.104659214616 
 
    float_val: 6.55719213682e-06 
 
    float_val: 1.16744895001e-12 
 
    float_val: 1.68323947491e-06 
 
    float_val: 0.00510392058641 
 
    float_val: 3.46840134738e-12 
 
    float_val: 1.02085353504e-08 
 
    float_val: 0.000151587591972 
 
    float_val: 3.04983092289e-25 
 
    float_val: 0.636809647083 
 
    } 
 
}

問題必須在類別,所有其它輸出在第一工作版本的輸出都在那裏了。

任何想法??

回答

0

我認爲您需要構建您的圖形,以便每個輸入的第一個維度是未知的,以便您可以支持批處理。我認爲你可以通過將形狀的大小設置爲無;看到這個question

+0

當然這是個問題,問題是如何把一個列表'類=「A」,「B」,「C」]'成'[?,len(classes)]'沒有收到TypeError的Tensor:無法將類型的對象轉換爲Tensor。內容:[尺寸(無),1]。考慮將元素轉換爲受支持的類型。「我嘗試過'tf.tile'和'tf.reshape'沒有運氣 – andresbravog

+0

TensorFlow的版本是否與tensorflow-serve和本地預測一起使用?你是否使用與CMLE相同的版本? –

0

在回答我的問題:

我需要使用的形狀,我需要創建基於他們[?, len(CATEGORIES)]張量的現有張量之一。

爲了這個目的,我們需要一個張[?]作爲tf.argmax(logits, 1)使用tf.tillcategories_tensor和張量[?, len(CATEGORIES)]使用tf.reshape過的那個結果。所以

CATEGORIES # => ['dog', 'elephant'] 
n_classes = len(CATEGORIES) # => 2 
categories_tensor = tf.constant(CATEGORIES) # => Shape [2] 
pob_tensor = tf.nn.softmax(logits) 
# => Shape [?, 2] being ? the number of inputs to predict 
class_tensor = tf.argmax(logits, 1) 
# => Shape [?, 1] 

tiled_categories_tensor = tf.tile(categories_tensor, tf.shape(class_tensor)) # => Shape [2*?] 
# => ['dog', 'elephant', 'dog', 'elephant', ... (? times) , 'dog', 'elephant' ] 
categories = tf.reshape(tiled_categories_tensor, tf.shape(prob_tensor)) # => Shape [?, 2] 
# => [['dog', 'elephant'], ['dog', 'elephant'], ... (? times) , ['dog', 'elephant'] ] 

predictions_dict = { 
     'category': tf.gather(CATEGORIES, tf.argmax(logits, 1)), 
     'class': class_tensor, 
     'prob': prob_tensor, 
     'categories': categories 
    } 

希望它可以幫助任何人面對這個問題

相關問題