Я хотел бы просматривать активации локально (например, блокнот jupyter) из saved_model
, развернутого в службе прогнозирования GCMLE, чтобы я мог экспериментировать с визуализациями.Я успешно загрузил saved_model
в график:
with tf.Session(graph=tf.Graph()) as sess:
tf.saved_model.loader.load(sess, [tf.saved_model.tag_constants.SERVING], _VERSION)
У меня также есть словарь request
входных данных, которые я мог бы просто передать в развернутую службу прогнозирования (predict_json()
включен в конце дляпростота:
responses = predict_json(project, model, instances = [request], version)
Есть ли какой-нибудь способ, которым я могу использовать мой saved_model
локально и кормить на входе request
, а затем посмотреть на активацию определенных слоев (таких как логиты или выходные данныесверток)? Я полагаю, что я пытаюсь сделать что-то вроде этого:
with tf.Session(graph=tf.Graph()) as sess:
tf.saved_model.loader.load(sess, [tf.saved_model.tag_constants.SERVING], _VERSION)
graph = tf.get_default_graph()
inputs = graph.get_tensor_by_name("input_layer:0")
activations = graph.get_tensor_by_name("conv1d/bias:0")
print(sess.run(inputs, activations))
Однако я не могу найти тензорное имя для эквивалента функции входного обслуживания, напримерbody={'instances': instances}
в predict_json
. Далее, я просто предполагаю, что если я получу смещение свертки по имени, то это будет представлять собой активацию свертки, но я также не уверен в этом (как я нене смог увидеть, что они есть).
GCMLE predict_json()
Для справки
def predict_json(project, model, instances, version=None):
"""Send json data to a deployed model for prediction.
Args:
project (str): project where the Cloud ML Engine Model is deployed.
model (str): model name.
instances ([Mapping[str: Any]]): Keys should be the names of Tensors
your deployed model expects as inputs. Values should be datatypes
convertible to Tensors, or (potentially nested) lists of datatypes
convertible to tensors.
version: str, version of the model to target.
Returns:
Mapping[str: any]: dictionary of prediction results defined by the
model.
"""
# Create the ML Engine service object.
# To authenticate set the environment variable
# GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file>
service = googleapiclient.discovery.build('ml', 'v1')
name = 'projects/{}/models/{}'.format(project, model)
if version is not None:
name += '/versions/{}'.format(version)
response = service.projects().predict(
name=name,
body={'instances': instances}
).execute(num_retries=2)
if 'error' in response:
raise RuntimeError(response['error'])
return response['predictions']