тензорная обслуживающая подпись для XOR - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь экспортировать свой первый xor NN с использованием обслуживания tenorflow, но я не получаю никакого результата, когда вызываю gRPC.Вот код, который я использую для прогнозирования XOR

import tensorflow as tf
sess = tf.Session()
from keras import backend as K
K.set_session(sess)
K.set_learning_phase(0)  # all new operations will be in test mode from now on

from tensorflow.python.saved_model import builder as saved_model_builder
from tensorflow.python.saved_model import tag_constants, signature_constants, signature_def_utils_impl

from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD
import numpy as np

model_version = "2" #Change this to export different model versions, i.e. 2, ..., 7
epoch = 100 ## the higher this number is the more accurate the prediction will be 10000 is a good number to s
et it at just takes a while to train

#Exhaustion of Different Possibilities
X = np.array([
    [0,0],
    [0,1],
    [1,0],
    [1,1]
])

#Return values of the different inputs
Y = np.array([[0],[1],[1],[0]])

#Create Model
model = Sequential()
model.add(Dense(8, input_dim=2))
model.add(Activation('tanh'))
model.add(Dense(1))
model.add(Activation('sigmoid'))
sgd = SGD(lr=0.1)

model.compile(loss='binary_crossentropy', optimizer=sgd)
model.fit(X, Y, batch_size=1, nb_epoch=epoch)

test = np.array([[0.0,0.0]])

#setting values for the sake of saving the model in the proper format
x = model.input
y = model.output

print('Results of Model', model.predict_proba(X))

prediction_signature = tf.saved_model.signature_def_utils.predict_signature_def({"inputs": x}, {"prediction":
y})

valid_prediction_signature = tf.saved_model.signature_def_utils.is_valid_signature(prediction_signature)
if(valid_prediction_signature == False):
    raise ValueError("Error: Prediction signature not valid!")

builder = saved_model_builder.SavedModelBuilder('./'+model_version)
legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op')

# Add the meta_graph and the variables to the builder
builder.add_meta_graph_and_variables(
      sess, [tag_constants.SERVING],
      signature_def_map={
           signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY:prediction_signature,
      },
      legacy_init_op=legacy_init_op)

# save the graph
builder.save()

Реализация в докере

docker run -p 8501:8501 --mount type=bind,source=/root/tensorflow3/projects/example/xor_keras_tensorflow_serving,target=/models/xor -e MODEL_NAME=xor -t tensorflow/serving &

, затем я запрашиваю прогноз по следующему:

curl -d '{"inputs": [1,1]}' -X POST http://localhost:8501/v2/models/xor

результатвсегда ли это

<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
</BODY></HTML>

Можете ли вы помочь мне найти, где я не прав?Я пытался изменить «входы» в локон с «экземплярами», но ничего не спасибо, Мануэль

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Спасибо! ты понял! так что я решил.

На самом деле в команде curl было 2 ошибки:

  1. localhost: 8501 / v1 / models / xor Я ставлю v2, думая использовать версию # 2, но если вы ставите v2, это не работает. Кажется, v # это не версия вашей сохраненной модели
  2. Также мне нужно указать прогноз, поэтому точный запрос: http://localhost:8501/v1/models/xor:predict
0 голосов
/ 21 ноября 2018

Можете ли вы сначала попробовать

завиток http://localhost:8501/v1/models/xor

проверить, работает ли модель? Это должно вернуть статус вашей модели.

С RESTful API doc , формат GET http://host:port/v1/models/${MODEL_NAME}[/versions/${MODEL_VERSION}]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...