본문 바로가기

Python74

[Python] venv로 가상 환경 사용하기 안녕하세요, 오늘은 파이썬의 venv 모듈을 사용해서 가상 환경을 사용해보겠습니다. 파이썬에서 가상 환경은 하나의 pc에서 프로젝트별로 독립된 파이썬 실행환경을 사용할 수 있게 합니다. 가상 환경을 사용하지 않으면 pc 내의 모든 프로젝트에서 하나의 글로벌 파이썬 런타임을 사용하게 됩니다. 설치하는 외부 패키지들 또한 동일한 위치에 설치가 되며 프로젝트들이 패키지들을 서로 공유하게 됩니다. 프로젝트들을 여러 개 개발하는 경우에는 프로젝트별로 가상 환경을 구성하지 않으면 패키지 버전 문제가 발생할 수 있습니다. 따라서 프로젝트별로 독립된 가상 환경을 만들어 사용하는 것이 좋습니다. 파이썬 3.3 부터는 venv 모듈이 기본적으로 내장되기 때문에 별도의 패키지 설치 없이 파이썬만 설치되어 있으면 가상 환경을.. 2023. 2. 26.
[Python] Tensorflow 로 데이터셋 증강하기 안녕하세요. 오늘은 텐서플로우로 데이터셋 증강하는 예제를 진행하겠습니다. 이 예제는 앞선 예제인 'Tensorflow 로 나만의 데이터셋 만들기' 에서 이어지는 예제입니다. 먼저, 구글 colab을 이용해서 예제를 진행하겠습니다. 데이터셋은 대표적인 예제인 개고양이 데이터셋을 사용하겠습니다. 먼저, 데이터셋을 불러오겠습니다. #데이터셋 불러오기 import os import zipfile !wget --no-check-certificate \ https://storage.googleapis.com/mledu-datasets/cats_and_dogs_filtered.zip \ -O /content/cats_and_dogs_filtered.zip local_zip = '/content/cats_and_dog.. 2023. 2. 21.
[Python] decimal 모듈을 사용해서 부동소수점 오차 해결하기 안녕하세요. 오늘은 파이썬의 실수(유리수와 무리수)의 연산에 대해 알아보겠습니다. 파이썬에서는 부동소수점 수(floating point number, 줄여서 float)라는 데이터 유형으로 실수를 다룹니다. 그래서 소수점이 있는 연산에서 일반적인 연산과는 다르게 동작하게 됩니다. 예를 들어, 0.3 + 0.6의 연산 결과를 0.9로 예상하겠지만 파이썬에서는 0.8999999999999999 라는 결과가 나옵니다. 1 - 0.8의 연산 결과도 마찬가지로 0.2가 아닙니다. 이는 컴퓨터가 수를 메모리에 2진수로 저장하기 때문에, 소수점 이하를 정확히 표현할 수 없는 경우가 발생하여 생기는 문제입니다. 이에 대한 해결책은 decimal.Decimal, math.fsum(), round(), float.as_i.. 2023. 2. 17.
[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.