목차
from pickle import dump
with open("filename.pkl", "wb") as f:
dump(clf, f, protocol=5)
from pickle import load
with open("filename.pkl", "rb") as f:
clf = load(f)
skmain.py
https://scikit-learn.org/1.5/model_persistence.html#pickle-joblib-and-cloudpickle
9. Model persistence
Summary of model persistence methods:,,, Persistence method, Pros, Risks / Cons,,, ONNX, Serve models without a Python environment, Serving and training environments independent of one another, Mos...
scikit-learn.org
%%writefile skmain.py
from fastapi import FastAPI
from pickle import load
with open("sk_iris_dtc.pkl", "rb") as f:
model = load(f)
app=FastAPI()
@app.post('/iris')
def result(slength:float,swidth:float,plength:float,pwidth:float):
idx=model.predict([[slength,swidth,plength,pwidth]])[0]
target=['setosa', 'versicolor', 'virginica']
return {'result':target[idx]}
Tensorflow
https://www.tensorflow.org/tutorials/keras/save_and_load?hl=ko
모델 저장과 복원 | TensorFlow Core
모델 저장과 복원 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 모델 진행 상황은 훈련 중 및 훈련 후에 저장할 수 있습니다. 즉, 모델이 중단된 위치에서
www.tensorflow.org
%%writefile tfmain.py
from fastapi import FastAPI
from tensorflow.keras.models import load_model
import numpy as np
model = load_model('iris_cnn.h5')
app=FastAPI()
@app.post('/iris')
def result(slength:float,swidth:float,plength:float,pwidth:float):
idx=np.argmax(model.predict(np.array([[slength,swidth,plength,pwidth]])),axis=1)
target=['setosa', 'versicolor', 'virginica']
return {'result':target[idx[0]]}
파일 업로드하고 모델 적용하기
https://fastapi.tiangolo.com/ko/tutorial/request-files/
파일 요청 - FastAPI
FastAPI framework, high performance, easy to learn, fast to code, ready for production
fastapi.tiangolo.com
1) Pillow 설치 및 이미지 불러오기
오늘은 이미지를 많이 다루고 처리하는 분들을 위해서 파이썬으로 이미지를 다룰 수 있게 해주는 Pillow라는 라이브러리에 대해서 공부해보겠습니다. # 1. Pillow란? P…
wikidocs.net
- opencv 또는 pillow 사용.
- opencv는 하드웨어 제어 가능.
PIL로 이미지 저장 및 모델 적용
%%writefile uploadmain.py
from typing import Annotated
from PIL import Image
import io
import numpy as np
from fastapi import FastAPI, File, UploadFile
from tensorflow.keras.models import load_model
model = load_model('mnist.h5')
app = FastAPI()
#(233, 255, 3)
@app.post("/files/")
async def create_file(file: Annotated[bytes, File()]):
#print(file)
img = Image.open(io.BytesIO(file))
img = Image.eval(img,lambda x:255-x)
img = img.resize((28,28))
img = img.convert("L")
x = np.array(img)
print(x)
print(x.shape)
X_test = x.reshape(28*28)
X_test = X_test.astype('float32')
X_test /= 255
result=np.argmax(model.predict(np.array([X_test])), axis=1)
print(result)
return {"result": str(result)}
@app.post("/uploadfile/")
async def create_upload_file(file: UploadFile):
print(file.size)
print(file.content_type)
print(file.read())
return {"filename": file.filename}
'100일 챌린지 > 빅데이터기반 인공지능 융합 서비스 개발자' 카테고리의 다른 글
Day 92 - CNN과 RNN (0) | 2024.12.09 |
---|---|
Day 91 - Tensorflow (0) | 2024.12.06 |
Day 91 - 비지도 학습 (0) | 2024.12.06 |
Day 91 - 앙상블(Ensamble) 사용하기 (0) | 2024.12.06 |
Day 90 - Softvector Machine (0) | 2024.12.05 |