tensorflow
Tensorflow - 콜백을 이용해 로그와 모델 저장하기
1. ModelCheckpoint from keras.callbacks import ModelCheckpoint ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1) 에포크가 끝날 때마다 모델을 저장하는 콜백 filepath: string, 모델 파일을 저장할 경로. monitor: 기록할 항목. verbose: 상세 정보 표시 정도, 0 혹은 1. save_best_only: True인 경우 monitor 값을 기준으로 가장 좋았던 모델만 저장합니다. save_weights_only: True인 경우 모델의 가중치만 저장되고 (mo..
Tensorflow - Transfer Learning 예제
이전 포스트에서 transfer learning에 대한 간략한 개념을 알아봤으니 직접 코드로 실습해보자. MobileNetV2 로 transfer learning해서 개와 고양이 이미지를 분류하려 한다. 이전 포스트가 궁금하면? https://donghyeok90.tistory.com/170 Transfer Learning(전이 학습) 과 Fine Tuning(미세 조정) 1. Transfer Learning (전이 학습) 전이 학습(Transfer Learning)은 특정 분야에서 학습된 신경망의 일부 능력을 유사하거나 전혀 새로운 분야에서 사용되는 신경망의 학습에 이용하는 것을 의미한다. 쉽게 donghyeok90.tistory.com MobileNetV2 모바일이나, 임베디드에서도 실시간으로 작동할..
Transfer Learning(전이 학습) 과 Fine Tuning(미세 조정)
1. Transfer Learning (전이 학습) 전이 학습(Transfer Learning)은 특정 분야에서 학습된 신경망의 일부 능력을 유사하거나 전혀 새로운 분야에서 사용되는 신경망의 학습에 이용하는 것을 의미한다. 쉽게 말해서 학습이 잘 된 pre-trained model을 가져와서, 나의 문제에 맞게 활용하는 것이다. 아래 링크에서 Tensorflow에서 제공하는 pre-trained 모델들을 확인할 수 있다. https://www.tensorflow.org/api_docs/python/tf/keras/applications?hl=ko Module: tf.keras.applications | TensorFlow v2.11.0 Keras Applications are premade archite..
Tensorflow - ImageDataGenerator를 이용한 이미지 전처리와 이미지 증강
from tensorflow.keras.preprocessing.image import ImageDataGenerator 1. 이미지 전처리 가지고 있는 이미지 파일을 인공지능에서 학습시키려면 numpy array 형태로 바꿔줘야 한다. 텐서플로우의 ImageDataGenerator 클래스의 flow_from_directory 메소드를 이용하면 쉽게 변환 할 수 있다. # train 데이터용 인스턴스 호출 train_datagen = ImageDataGenerator(rescale= 1/255.0) # test 데이터용 인스턴스 호출 test_datagen = ImageDataGenerator(rescale= 1/255.0) train_generator = train_datagen.flow_from_di..
Tensorflow - CNN 모델 예제
이미지를 보고 인간인지 말인지 분류하는 모델을 만들어보려 한다. 1. 연습용 이미지 다운로드 !wget --no-check-certificate \ https://storage.googleapis.com/laurencemoroney-blog.appspot.com/horse-or-human.zip \ -O /tmp/horse-or-human.zip !wget --no-check-certificate \ https://storage.googleapis.com/laurencemoroney-blog.appspot.com/validation-horse-or-human.zip \ -O /tmp/validation-horse-or-human.zip 2. 압축 풀기 import zipfile # 파일을 불러옴 file..
Tensorflow - 레이블인코딩 된 y값을 원핫인코딩으로 바꾸기
위의 0부터 9까지의 클래스로 분류된 numpy array를 One-Hot encoding으로 변환하려고 한다. numpy 라이브러리에는 없지만, 머신러닝 과정에서 유용한 numpy array를 다루는 기능들을 keras.utils 라이브러리에서 제공한다. tf.keras.utils.to_categorical 레이블 인코딩 된 배열 y를 원핫인코딩으로 변환 num_classes: 총 클래스 수. 입력하지 않았을 때, default 값은 max(y) + 1 import tensorflow as tf # 0부터 9까지의 클래스로 분류된 ndarray y_train >>> array([5, 0, 4, ..., 5, 6, 8], dtype=uint8) # 원핫인코딩으로 변환 y_train = tf.keras.u..
Tensorflow - model을 파일로 저장하고 불러오는 방법
1. 전체 모델구조(Network)와 가중치(Weight) 함께 저장하기 모델 + 가중치를 저장해서 불러오면 모델에 complie을 할 필요없이 바로 사용 가능하다. 폴더구조로 저장, 불러오기 # 폴더구조로 저장 model.save('fashion_mnist_model') # 불러오기 model2 = tf.keras.models.load_model('fashion_mnist_model') 파일구조로 저장, 불러오기 # 모델을 h5파일 하나로 저장 model.save('fashion_mnist_model.h5') # 불러오기 model3 = tf.keras.models.load_model('fashion_mnist_model.h5') 2. 모델 구조(Network)만 저장하고 불러오기 # 네트워크를 jso..
Tensorflow - 이미지를 1차원으로 만드는 방법(Flatten)
이미지를 ANN에 input해 학습하려면 2차원 또는 3차원으로 되어있는 이미지의 shape을 1차원으로 바꿔줘야 한다. 1. keras.layers.Flatten() tensorflow에서 제공하는 Faltten() 함수를 사용하면 2차원, 3차원 input이 들어왔을때 알아서 1차원으로 바꿔준다. Flatten() 을 사용하면 모델링 시 input_shape도 자동으로 정해주기 때문에 입력할 필요가 없다. from keras.layers import Flatten model.add(Flatten()) 전체 모델 예시 import tensorflow as tf from tensorflow import keras from keras.models import Sequential from keras.laye..