张量流服务未初始化

时间:2017-09-13 14:42:14

标签: tensorflow tensorflow-serving google-cloud-ml-engine

您好我想在下面的代码中初始化名为result的变量。 我尝试使用此代码*时尝试初始化。

  

sess.run(tf.global_variables_initializer(),feed_dict =       {userLat:0,userLon:0})

我只想初始化变量。

使用变量的原因是编写validate_shape = false。

使用此选项的原因是为了解决错误'输出的外部维度必须是未知的,外部维度为'变量:0'是1'将模型版本部署到Google Cloud ml引擎时。

使用以下代码进行初始化将在尝试预测时feed_dict为0时输出值。

  

sess.run(tf.global_variables_initializer(),feed_dict =       {userLat:0,userLon:0})

有没有办法简单地初始化结果的值?

或者是否可以将存储的张量值列表存储为带有逗号而没有形状的字符串?

这是一个非常基本的问题。 对不起 我是张量流的初学者。 我需要帮助。谢谢你的阅读。

import tensorflow as tf
import sys,os

#define filename queue
filenameQueue =tf.train.string_input_producer(['./data.csv'],
shuffle=False,name='filename_queue')

# define reader
reader = tf.TextLineReader()
key,value = reader.read(filenameQueue)

#define decoder
recordDefaults = [ ["null"],[0.0],[0.0]]
sId,lat, lng = tf.decode_csv(
value, record_defaults=recordDefaults,field_delim=',')

taxiData=[]

with tf.Session() as sess:
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(sess=sess, coord=coord)

    for i in range(18):
        data=sess.run([sId, lat, lng])
        tmpTaxiData=[]
        tmpTaxiData.append(data[0])
        tmpTaxiData.append(data[1])
        tmpTaxiData.append(data[2])
        taxiData.append(tmpTaxiData)
    coord.request_stop()
    coord.join(threads)   

from math import sin, cos,acos, sqrt, atan2, radians 

#server input data
userLat = tf.placeholder(tf.float32, shape=[])
userLon = tf.placeholder(tf.float32, shape=[])

R = 6373.0  
radian=0.017453292519943295


distanceList=[]

for i in taxiData:
  taxiId=tf.constant(i[0],dtype=tf.string,shape=[])
  taxiLat=tf.constant(i[1],dtype=tf.float32,shape=[])
  taxiLon=tf.constant(i[2],dtype=tf.float32,shape=[])



distanceValue=6371*tf.acos(tf.cos(radian*userLat)*
tf.cos(radian*taxiLat)*tf.cos(radian*taxiLon-
radian*126.8943311)+tf.sin(radian*37.4685225)*tf.sin(radian*taxiLat))

  tmpDistance=[]

  tmpDistance.append(taxiId)
  tmpDistance.append(distanceValue)

  distanceList.append(tmpDistance)


# result sort
sId,distances=zip(*distanceList)
indices = tf.nn.top_k(distances, k=len(distances)).indices

gather=tf.gather(sId, indices[::-1])[0:5]
result=tf.Variable(gather,validate_shape=False)

print "Done training!"


# serving

import os
from tensorflow.python.util import compat

model_version = 1
path = os.path.join("Taximodel", str(model_version))
builder = tf.saved_model.builder.SavedModelBuilder(path)

with tf.Session() as sess:
    builder.add_meta_graph_and_variables(
    sess,
        [tf.saved_model.tag_constants.SERVING],
        signature_def_map= {
            "serving_default": 
tf.saved_model.signature_def_utils.predict_signature_def(
                inputs= {"userLat": userLat, "userLon":userLon},
                outputs= {"result": result})
    })

builder.save()

print 'Done exporting'

1 个答案:

答案 0 :(得分:0)

您可以尝试定义图形,以便输出张量保留输入张量的形状(外部尺寸)。

例如:

  SELECT CASE 
    WHEN days_past_due = 5 THEN '5-10 Days Past due'
    WHEN ......
    ELSE <returndefaultcase>
    END
  FROM <tablename>