我最近将一个自定义模型部署到谷歌云的 ai 平台,我正在尝试调试我的预处理逻辑的某些部分。但是,我的打印语句未记录到堆栈驱动程序输出。我也尝试使用从 google.cloud 导入的日志客户端,但无济于事。这是我的自定义预测文件:
import os
import pickle
import numpy as np
from sklearn.datasets import load_iris
import tensorflow as tf
from google.cloud import logging
class MyPredictor(object):
def __init__(self, model, preprocessor):
self.logging_client = logging.Client()
self._model = model
self._preprocessor = preprocessor
self._class_names = ["Snare", "Kicks", "ClosedHH", "ClosedHH", "Clap", "Crash", "Perc"]
def predict(self, instances, **kwargs):
log_name = "Here I am"
logger = self.logging_client.logger(log_name)
text = 'Hello, world!'
logger.log_text(text)
print('Logged: {}'.format(text), kwargs.get("sr"))
inputs = np.asarray(instances)
outputs = self._model.predict(inputs)
if kwargs.get('probabilities'):
return outputs.tolist()
#return "[]"
else:
return [self._class_names[index] for index in np.argmax(outputs.tolist(), axis=1)]
@classmethod
def from_path(cls, model_dir):
model_path = os.path.join(model_dir, 'model.h5')
model = tf.keras.models.load_model(model_path, custom_objects={"adam": tf.keras.optimizers.Adam,
"categorical_crossentropy":tf.keras.losses.categorical_crossentropy, "lr":0.01, "name": "Adam"})
preprocessor_path = os.path.join(model_dir, 'preprocessor.pkl')
with open(preprocessor_path, 'rb') as f:
preprocessor = pickle.load(f)
return cls(model, preprocessor)
我在网上找不到任何关于为什么我的日志没有出现在 stackdriver 中的任何信息(打印语句和日志库调用都没有)。有没有人遇到过这个问题?
谢谢,尼基塔
注意:如果您有足够的代表来创建标签,请将 google-ai-platform 标签添加到这篇文章中。我认为这真的会对处于我这个位置的人有所帮助。谢谢!