【发布时间】:2019-06-13 15:25:46
【问题描述】:
我能够成功地将批量图像作为 numpy 数组发送到我使用 TF 服务设置的 SageMaker 端点并获得响应,如下所示:。
def predict_random_batch(self, batch_size, verbose=0, initial_args=None):
batch = np.random.uniform(low=-1.0, high=1.0, size=(batch_size,self.size,self.size,3))
data = {'instances': np.asarray(batch).astype(self.dtype)}
if verbose: self.total_size(data)
request_args = self._create_request_args(data, initial_args)
response = self.sagemaker_session.sagemaker_runtime_client.invoke_endpoint(**request_args)
probs = self._handle_response(response)['predictions']
return probs
predictor.predict_random_batch(3)
但是,numpy 数组非常大。我正在尝试在发送之前压缩图像批次。这就是我正在尝试的:
def predict_random_batch_TEST(self, batch_size, verbose=0, initial_args=None):
import base64
batch = np.random.uniform(low=-1.0, high=1.0, size=(batch_size,self.size,self.size,3))
batch = batch.astype(self.dtype)
encoded_input_string = base64.b64encode(batch)
input_string = encoded_input_string.decode("utf-8")
instance = [{"b64": input_string}]
data = json.dumps({"instances": instance})
request_args = self._create_request_args(data, initial_args)
if verbose: self.total_size(data)
response = self.sagemaker_session.sagemaker_runtime_client.invoke_endpoint(**request_args)
probs = self._handle_response(response)['predictions']
return probs
但是这会返回错误:
ModelError:调用时发生错误(ModelError) InvokeEndpoint 操作:收到来自模型的客户端错误 (400) 消息“{“错误”:“JSON 值:. . .不是对象"}"
有人知道如何压缩一批图像以发送更大的批量吗?显然 SM 施加了 5MB 的有效负载限制,这在作为 numpy 数组发送时并不是很大。
【问题讨论】:
标签: python-3.x rest tensorflow-serving image-compression amazon-sagemaker