본문 바로가기

Python134

[Python] Tensorflow 에서 모델 저장하고 불러오기 안녕하세요. 오늘은 Tesorflow 모델을 저장하고 불러오는 예제를 진행하겠습니다. 우선, 모델을 저장하는 방식에는 크게 두가지 방향이 있습니다. 모델을 통째로 저장하는 방법과 가중치만 저장하는 방법입니다. 먼저, 저장에 필요한 기본 라이브러리를 추가합니다. import tensorflow as tf from tensorflow import keras 아래 코드에서 model에 저장하고자 하는 모델이 들어있다는 가정하에 진행합니다. 경로는 저장하고자 하는 폴더의 경로를 입력하면 되고, 가중치 저장의 경우 몇번째 epoch의 가중치인지 파일명으로 구분하기 쉽게 할 수 있습니다. 상대적으로 save가 모델을 통째로 저장하기 때문에 용량이 크고 시간이 좀 더 소요됩니다. # 1. 모델 전체 저장 model... 2023. 2. 16.
[Python] pprint 모듈 사용해보기 안녕하세요. 오늘은 파이썬의 기본 모듈인 pprint를 사용해보겠습니다. pprint 에서 'pp'는 pretty print 의 줄임말입니다. pprint는 데이터를 보기 좋게 출력할 때 사용하면 좋은 모듈로, 구조가 복잡한 JSON 데이터를 디버깅 용도로 출력할 때 자주 사용합니다. json 데이터를 pprint 모듈을 사용하지 않고 기본 print() 를 사용해서 출력해보겠습니다. from urllib import request import json response = request.urlopen("https://jsonplaceholder.typicode.com/users/1") json_response = response.read() users = json.loads(json_response) p.. 2023. 2. 3.
[Python] Tesorflow 모델을 TFLite로 변환하기 안녕하세요. 오늘은 Tesorflow 모델을 TFLite로 변환하는 예제를 진행하겠습니다. 우선, TFLite를 사용하는 이유는 On Device 환경에서 동작하게 하기위해 - IOS, AOS 같은 기기에 넣기위해 - 사용합니다. 따라서 TFLite로 변환한다면 모델사이즈가 줄어들게 됩니다. 이는 모델에서 기존에 학습된 가중치(weight)를 float32 형식에서 float 16 int 8 등의 형태로 변환시키기 때문에 추론 정확도가 떨어지게 됩니다. 대신 사이즈가 줄어든 만큼 추론속도는 증가할 것 입니다. 추가적으로, 추론속도가 증가하는 것이지 학습속도를 빠르게 하는 것이 아닙니다. 이부분을 염두해 두시고 진행하셔야 합니다. 이러한 과정을 '양자화 (quantizaion)' 한다고 합니다. 양자화 설.. 2023. 2. 2.
[Python] Google Colab 에서 stable_diffusion 2 사용하기 안녕하세요. 오늘은 Google Colab 에서 huggingface의 Diffusers 라이브러리를 사용하여 stable diffusion 2를 간단하게 사용해보겠습니다. 출처 : https://huggingface.co/stabilityai/stable-diffusion-2 1. huggingface 에서 필요한 stable_diffusion 모델을 다운받고, 추가적으로 필요한 라이브러리들을 다운로드 합니다. !pip install --upgrade -qq git+https://github.com/huggingface/diffusers.git transformers accelerate scipy xformers 2. Diffusiers 라이브러리에서 pipeline 과 scheduler 모듈을 가져오.. 2023. 1. 19.
[Python] Tensorflow로 나만의 데이터셋 만들기 안녕하세요. 오늘은 텐서플로우로 커스텀 데이터셋을 만드는 방법 예제를 진행하겠습니다. 이 예제는 분류 모델에서 사용가능한 데이터셋입니다. 먼저, 구글 colab을 이용해서 예제를 진행하겠습니다. 먼저 데이터셋에 사용할 이미지들을 다음과 같이 구성하겠습니다. 저는 위의 데이터셋이라는 폴더 안에 3개의 폴더에 이미지를 넣어놨습니다. 분류모델 학습을 위한 데이터셋이고, 각 폴더의 이름이 클래스명이 됩니다. 즉, 위의 데이터셋이라는 폴더 안에 있는 이미지들로 데이터셋을 구성하면 3개의 클래스를 가진 데이터셋이 됩니다. import tensorflow as tf from tensorflow import keras img_gen = tf.keras.preprocessing.image.ImageDataGenerato.. 2023. 1. 18.
[Python] pickle 모듈을 사용해서 직렬화, 역직렬화 하기 파이썬의 객체를 일련의 바이트들로 변환한 후 나중에 다시 파이썬 객체로 복원하게 할 수 있는데, 이렇게 파이썬 객체를 일련의 바이트들로 변환하는 것을 직렬화(Serialization)라 하고, 다시 바이트들을 파이썬 객체로 메모리 상에 복원하는 것을 역직렬화(Deserialization)이라 합니다. 직렬화 방식에는 Pickle, JSON, YAML 등 여러가지가 있습니다. Pickle 방식으로 직렬화를 하면 데이터가 바이너리 형식으로 저장되기 때문에 사람이 읽을 수 없는 반면, 저장이나 전송이 효율적입니다. 대신 JSON, YAML 방식은 저장이나 전송이 Pickle 보다는 덜 효율적이지만 사람이 읽을 수 있는 형태로 저장되기 때문에 가독성이 좋은 장점이 있습니다. 그리고 Pickle 방식으로 거의 모.. 2023. 1. 8.
[Python] pandas.concat() 함수로 데이터프레임 합치기 오늘은 pandas.concat() 함수를 사용하여 데이터프레임들을 합치는 방법을 알아보겠습니다. pandas.concat() 함수는 기본적으로 시리즈나 데이터프레임과 같은 판다스 객체들을 특정 방향(축)으로 이어붙이는 함수입니다. 문법은 다음과 같습니다. pandas.concat(objs, *, axis=0, join='outer', ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=False, copy=True) 아래는 자주 사용되는 파라미터들에 대한 설명입니다. objs : a sequence or mapping of Series or DataFrame objects 이어붙일 시리즈/데이터프레임들을.. 2023. 1. 7.
[Python] Tensorflow 분류모델에서 훈련결과 추론해보기 안녕하세요. 오늘은 텐서플로우에서 학습이 끝난 모델을 가져와서 결과를 추론하는 예제를 진행하겠습니다. 사용하는 라이브러리를 선언해줍니다. import tensorflow as tf import cv2 import numpy as np import matplotlib.pyplot as plt from google.colab.patches import cv2_imshow 구글 드라이브 마운트를 하신 후, 다음과 같이 tf.keras.models.load_model() 를 사용해서 저장된 모델을 불러오시면 됩니다. dir = "/content/drive/Mydrive/스틱코드/저장된가중치.h5" model = tf.keras.models.load_model(dir) test_dir 에 추론할 이미지 경로를 넣.. 2023. 1. 6.
[Python] Colab을 사용하는 법 & 구글 드라이브 연동하기 안녕하세요! 오늘은 colab 사용법과 구글드라이브 연동 예제를 진행하겠습니다. Colab 이란? colab은 정식명칭인 colaboratory의 줄인말로 구글 리서치팀에서 개발하고 운영하고 Jupyter notebook 위에서 동작하는 서비스 입니다. 기본적으로 무료이며 기본은 CPU동작 이지만 런타임 유형변경을 통해 기본 제공되는 GPU사용이 가능합니다. 무료 런타임은 기본 12시간으로 구독서비스를 이용하신다면 24시간으로 바뀌게 됩니다. 물론 무료가 런타임이 12시간 이라고는 하지만 실제 이용시 12시간까지 유지되는 경우는 잘 없습니다. colab 사용은 두가지 셀로 구성이 됩니다. 텍스트 셀과 코드 셀 입니다. 텍스트 셀은 마크다운으로 사용하시면 됩니다. 코랩에서 사용하는 대표적인 단축키는 다음과.. 2023. 1. 3.