2017-10-04 240 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 
    } 

希望它可以帮助任何人面对这个问题

相关问题