我正在研究基本的Tensorflow服務示例。我遵循MNIST的例子,除了代替分類我想用numpy array到預計另一個numpy array。張量流服務客戶端的最小工作實例
要做到這一點,我首先訓練我的神經網絡
x = tf.placeholder("float", [None, n_input],name ="input_values")
weights = {
'encoder_h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),
'encoder_h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),
'encoder_h3': tf.Variable(tf.random_normal([n_hidden_2, n_hidden_3])),
'decoder_h1': tf.Variable(tf.random_normal([n_hidden_3, n_hidden_2])),
'decoder_h2': tf.Variable(tf.random_normal([n_hidden_2, n_hidden_1])),
'decoder_h3': tf.Variable(tf.random_normal([n_hidden_1, n_input])),
}
biases = {
'encoder_b1': tf.Variable(tf.random_normal([n_hidden_1])),
'encoder_b2': tf.Variable(tf.random_normal([n_hidden_2])),
'encoder_b3': tf.Variable(tf.random_normal([n_hidden_3])),
'decoder_b1': tf.Variable(tf.random_normal([n_hidden_2])),
'decoder_b2': tf.Variable(tf.random_normal([n_hidden_1])),
'decoder_b3': tf.Variable(tf.random_normal([n_input])),
}
# Building the encoder
def encoder(x):
# Encoder Hidden layer with sigmoid activation #1
layer_1 = tf.nn.tanh(tf.matmul(x, weights['encoder_h1'])+biases['encoder_b1'])
print(layer_1.shape)
# Decoder Hidden layer with sigmoid activation #2
layer_2 = tf.nn.tanh(tf.matmul(layer_1, weights['encoder_h2'])+biases['encoder_b2'])
print(layer_2.shape)
# Layer 3
layer_3 = tf.nn.tanh(tf.matmul(layer_2, weights['encoder_h3'])+biases['encoder_b3'])
print(layer_3.shape)
return layer_3
# Building the decoder
def decoder(x):
# Encoder Hidden layer with sigmoid activation #1
layer_1 = tf.nn.tanh(tf.matmul(x, weights['decoder_h1'])+biases['decoder_b1'])
print(layer_1.shape)
# Decoder Hidden layer with sigmoid activation #2
layer_2 = tf.nn.tanh(tf.matmul(layer_1, weights['decoder_h2'])+biases['decoder_b2'])
# Layer 3
layer_3 = tf.nn.tanh(tf.matmul(layer_2, weights['decoder_h3'])+biases['decoder_b3'])
return layer_3
# Construct model
encoder_op = encoder(x)
decoder_op = decoder(encoder_op)
# Prediction
y = decoder_op
# Objective functions
y_ = tf.placeholder("float", [None,n_input],name="predict")
下一頁有人建議我在這裏保存有我的網絡,像這樣..
import os
import sys
from tensorflow.python.saved_model import builder as saved_model_builder
from tensorflow.python.saved_model import utils
from tensorflow.python.saved_model import tag_constants, signature_constants
from tensorflow.python.saved_model.signature_def_utils_impl import build_signature_def, predict_signature_def
from tensorflow.contrib.session_bundle import exporter
with tf.Session() as sess:
# Initialize variables
sess.run(init)
# Restore model weights from previously saved model
saver.restore(sess, model_path)
print("Model restored from file: %s" % save_path)
export_path = '/tmp/AE_model/6'
print('Exporting trained model to', export_path)
builder = tf.saved_model.builder.SavedModelBuilder(export_path)
signature = predict_signature_def(inputs={'inputs': x},
outputs={'outputs': y})
builder.add_meta_graph_and_variables(sess=sess,
tags=[tag_constants.SERVING],
signature_def_map={'predict': signature})
builder.save()
print 'Done exporting!'
接下來我按照說明來運行我的服務器on localhost:9000
bazel build //tensorflow_serving/model_servers:tensorflow_model_server
我設置了服務器
bazel-bin/tensorflow_serving/model_servers/tensorflow_model_server --port=9000 --model_base_path=/tmp/AE_model/
的問題
現在我想編寫一個程序,所以我可以在Eclipse C++程序通過墊載體(我使用庫的很多),我的服務器,所以我可以做某種預言。
我首先想到了使用inception_client.cc作爲參考。然而,似乎我需要巴澤爾編譯它,因爲我找不到prediction_service.grpc.pb.h任何地方:(
所以看來,我唯一的其他選擇是使用python調用腳本我得到以下輸出:
<grpc.beta._client_adaptations._Rendezvous object at 0x7f9bcf8cb850>
這個問題的任何幫助,將不勝感激
謝謝
編輯:。
我重新安裝protobuf的一個nd grpc並按照建議運行命令:
我的命令有點不同,我不得不在我的服務文件夾之外使用它(在Ubuntu 14.04中)。
sudo protoc -I=serving -I serving/tensorflow --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` serving/tensorflow_serving/apis/*.proto
這產生的.gprc.pb.h文件,我把它們拉到了/的API /文件夾和錯誤下去。現在我收到錯誤
/tensorflow/third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1:42: fatal error: unsupported/Eigen/CXX11/Tensor: No such file or directory
即使此文件確實存在。任何建議表示讚賞。
謝謝@subzero!
EDIT 2
我能夠通過更新到最新版本的本徵和建立從源頭上解決與本徵問題。接下來我指向/ usr/local/include/eigen3/
之後我遇到了張量流庫的問題。我通過使用lababidi的建議生成libtensorflow_cc.so庫來解決這些問題。 https://github.com/tensorflow/tensorflow/issues/2412
我有最後一個問題。一切似乎要被罰款,除了我得到的錯誤:
未定義參考to`tensorflow ::服務:: PredictRequest ::〜PredictRequest()」
看來,我很想念無論是連接或庫。有誰知道我錯過了什麼?
我遇到了編輯2中的相同問題,您是否找到解決方案? – Matt2048
嘿不,我沒有:(我不得不切換到tensorflow C++ –
我放棄了,並使用自定義服務器和客戶端,而不是 – Matt2048