我想使用 Timm 創建一個用于影像預測的 docker 影像,它提供 JSON 格式的輸出,例如 {"predicted": "cat", "confidence": "0.99"}。
我正在使用此代碼。
from __future__ import print_function
import argparse
import torch
import timm
import urllib
import json
import torchvision.io as io
from PIL import Image as img
from timm.data import resolve_data_config
from timm.data.transforms_factory import create_transform
# Training settings
parser = argparse.ArgumentParser(description='Assignment 1')
parser.add_argument('--model',type=str)
parser.add_argument('--image',type=str)
if __name__ =='__main__':
args =parser.parse_args()
model = timm.create_model(args.model,pretrained=True)
model.eval()
config = resolve_data_config({},model=model)
transform = create_transform(**config)
url, filename = (args.image, "cat.jpg")
urllib.request.urlretrieve(url, filename)
img = img.open(filename).convert('RGB')
tensor = transform(img).unsqueeze(0) # transform and add batch dimension
import torch
with torch.no_grad():
out = model(tensor)
probabilities = torch.nn.functional.softmax(out[0], dim=0)
print({"predicted" : "cat", "confidence" : f"{int(probabilities.max()*100)/100}"})
運行測驗腳本后,輸出為:
Output is not valid json ! got: {'predicted': 'cat', 'confidence': '0.99'}
使用 json.dump 后,我收到此錯誤。
Traceback (most recent call last):
File "/opt/src/main.py", line 25, in <module>
urllib.request.urlretrieve(url, filename)
File "/usr/local/lib/python3.9/urllib/request.py", line 239, in
urlretrieve
with contextlib.closing(urlopen(url, data)) as fp:
File "/usr/local/lib/python3.9/urllib/request.py", line 214, in
urlopen
return opener.open(url, data, timeout)
File "/usr/local/lib/python3.9/urllib/request.py", line 523, in
open
response = meth(req, response)
File "/usr/local/lib/python3.9/urllib/request.py", line 632, in
http_response
response = self.parent.error(
File "/usr/local/lib/python3.9/urllib/request.py", line 561, in
error
return self._call_chain(*args)
File "/usr/local/lib/python3.9/urllib/request.py", line 494, in
_call_chain
result = func(*args)
File "/usr/local/lib/python3.9/urllib/request.py", line 641, in
http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
uj5u.com熱心網友回復:
您需要使用json.dumps:
import json
...
print(json.dumps({"predicted" : "cat", "confidence" : f"{int(probabilities.max()*100)/100}"}))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/505906.html
上一篇:MATLAB類串列資料結構
