본문 바로가기
728x90
반응형
SMALL

DNN with Keras/TensorFlow28

[TensorFlow] CSV 전처리 (2) 데이터 전처리 CSV 파일은 다양한 데이터 유형을 포함할 수 있다. 일반적으로 데이터를 모델에 공급하기 전에 혼합 유형에서 고정 길이 벡터로 변환한다. TensorFlow에는 일반적인 입력 변환을 설명하기 위한 내장 시스템이 있다. 자세한 내용은 tf.feature_column, 이 튜토리얼을 참조하면 된다. 원하는 도구 (ex: nltk 또는 sklearn)를 사용하여 데이터를 전처리하고 처리된 출력을 TensorFlow에 전달하면 된다. 모델 내에서 전처리를 수행할 때의 주요 이점은 모델을 내보낼 때 전처리가 포함된다는 것이다. 이렇게 하면 원시 데이터를 모델로 직접 전달할 수 있다. 연속 데이터 데이터가 이미 적절한 숫자 형식인 경우, 데이터를 모델로 전달하기 전에 벡터로 묶을 수 있다. SELEC.. 2022. 6. 16.
[TensorFlow] CSV 전처리 (1) CSV 데이터 로드 파일에서 tf.data.Dataset로 CSV 데이터를 로드하는 방법의 예이다. 여기에서 사용된 데이터는 Titanic 승객 목록에서 가져온 것이다. 이 모델은 연령, 성별, 티켓 등급 및 단독 여행 여부와 같은 특성을 기반으로 승객의 생존 가능성을 예측한다. 설정 import functools import numpy as np import tensorflow as tf TRAIN_DATA_URL = "https://storage.googleapis.com/tf-datasets/titanic/train.csv" TEST_DATA_URL = "https://storage.googleapis.com/tf-datasets/titanic/eval.csv" train_file_path = tf.. 2022. 6. 16.
[TensorFlow] 이미지 전처리 (2) 미세 제어를 위해 tf.data 사용하기 tf.keras.preprocessing 유틸리티는 이미지의 디렉토리에서 tf.data.Dataset을 작성하는 편리한 방법이다. 보다 세밀한 제어를 위해 tf.data을 사용하여 자체 입력 파이프라인을 작성할 수 있다. 여기에서는 다운로드한 TGZ 파일의 파일 경로부터 시작하여 이를 수행하는 방법을 보여준다. list_ds = tf.data.Dataset.list_files(str(data_dir/'*/*'), shuffle=False) list_ds = list_ds.shuffle(image_count, reshuffle_each_iteration=False) for f in list_ds.take(5): print(f.numpy()) b'/home/kbuil.. 2022. 6. 16.
[TensorFlow] 이미지 전처리 (1) 이미지 로드 및 전처리하기 고급 Keras 전처리 유틸리티 및 레이어를 사용한다. 다음으로 tf.data를 사용하여 처음부터 자체 입력 파이프라인을 작성한다. 설정 import numpy as np import os import PIL import PIL.Image import tensorflow as tf import tensorflow_datasets as tfds print(tf.__version__) 꽃 데이터세트 다운로드하기 수천 장의 꽃 사진 데이터세트를 사용한다. 꽃 데이터세트에는 클래스당 하나씩 5개의 하위 디렉토리가 있다. flowers_photos/ daisy/ dandelion/ roses/ sunflowers/ tulips/ (참고: 모든 이미지에는 CC-BY 라이선스가 있으며 크리.. 2022. 6. 15.
[TensorFlow] Keras Tuner Keras Tuner Keras Tuner는 TensorFlow 프로그램에 대한 최적의 하이퍼파라미터 세트를 선택하는 데 도움을 주는 라이브러리이다. 머신러닝 (ML) 애플리케이션에 대한 올바른 하이퍼파라미터 세트를 선택하는 과정을 하이퍼파라미터 조정 또는 하이퍼튜닝이라고 한다. 하이퍼파라미터는 훈련 프로세스 및 ML 모델의 토폴로지를 제어하는 변수이다. 이러한 변수는 훈련 과정에서 일정하게 유지되며 ML 프로그램의 성능에 직접적으로 영향을 미친다. 하이퍼파라미터에는 두 가지 유형이 있다. 숨겨진 레이어의 수 및 너비와 같이 모델 선택에 영향을 미치는 모델 하이퍼파라미터 SGD (Stochastic Gradient Descent)의 학습률 및 KNN (k Nearest Neighbors) 분류자의 최근접.. 2022. 6. 15.
[TensorFlow] 모델 저장 / 복원 (2) 수동으로 가중치 저장하기 Model.save_weights 메서드를 사용하여 수동으로 가중치를 저장한다. 기본적으로 tf.keras, 특히 save_weights는 .ckpt 확장자가 있는 TensorFlow 체크포인트 형식을 사용한다 (.h5 확장자를 사용하여 HDF5에 저장하는 내용은 모델 저장 및 직렬화 가이드에서 다룸). # 가중치 저장 model.save_weights('./checkpoints/my_checkpoint') # 새로운 모델 객체 생성 model = create_model() # 가중치 복원 model.load_weights('./checkpoints/my_checkpoint') # 모델 평가 loss,acc = model.evaluate(test_images, test_label.. 2022. 6. 15.
[TensorFlow] 모델 저장 / 복원 (1) 모델 저장 / 복원 모델 진행 상황은 훈련 중 및 훈련 후에 저장할 수 있다. 즉, 모델이 중단된 위치에서 다시 시작하고 긴 훈련 시간을 피할 수 있다. 저장은 또한 모델을 공유할 수 있고 다른 사람들이 작업을 다시 만들 수 있음을 의미한다. 연구 모델 및 기술을 게시할 때 대부분의 머신러닝 실무자는 다음을 공유한다. 모델을 만드는 코드 모델의 훈련된 가중치 또는 파라미터 이런 데이터를 공유하면 다른 사람들이 모델의 작동 방식을 이해하고 새로운 데이터로 모델을 실험하는데 도움이 된다. (주의: TensorFlow 모델은 코드이며 신뢰할 수 없는 코드에 주의하는 것이 중요하다. 자세한 내용은 TensorFlow 안전하게 사용하기를 참조) 저장 방식 사용 중인 API에 따라 TensorFlow 모델을 저장하.. 2022. 6. 15.
[TensorFlow] 과대적합 / 과소적합 (2) 가중치 규제하기 오캄의 면도날 (Occam's Razor) 이론에서는 어떤 것을 설명하는 두 가지 방법이 있다면 더 정확한 설명은 최소한의 가정이 필요한 가장 "간단한" 설명일 것이다. 이는 신경망으로 학습되는 모델에도 적용된다. 훈련 데이터와 네트워크 구조가 주어졌을 때 이 데이터를 설명할 수 있는 가중치의 조합 (즉, 가능한 모델)은 많다. 간단한 모델은 복잡한 것보다 과대적합되는 경향이 작을 것이다. 여기서 "간단한 모델"은 모델 파라미터의 분포를 봤을 때 엔트로피 (entropy)가 작은 모델이다 (또는 적은 파라미터를 가진 모델). 따라서, 과대적합을 완화시키는 일반적인 방법은 가중치가 작은 값을 가지도록 네트워크의 복잡도에 제약을 가하는 것이다. 이는 가중치 값의 분포를 좀 더 균일하게 만들어.. 2022. 6. 15.
[TensorFlow] 과대적합 / 과소적합 (1) 과대적합 / 과소적합 tf.keras API를 사용한다. 텐서플로 케라스 가이드에서 tf.keras API에 대해 더 많은 정보를 얻을 수 있다. 일정 에포크 동안 훈련하면 검증 세트에서 모델 성능이 최고점에 도달한 다음 감소하기 시작한 것을 알 수 있다. 다른 말로 하면, 모델이 훈련 세트에 과대적합 (overfitting)된 것이다. 과대적합을 다루는 방법이 필요하다. 훈련 세트에서 높은 성능을 얻을 수 있지만 진짜 원하는 것은 테스트 세트 (또는 이전에 본 적 없는 데이터)에 잘 일반화되는 모델이다. 과대적합의 반대는 과소적합 (underfitting)이다. 과소적합은 테스트 세트의 성능이 향상될 여지가 아직 있을 때 일어난다. 발생하는 원인은 여러가지이다. 모델이 너무 단순하거나, 규제가 너무 많.. 2022. 6. 15.
[TensorFlow] 회귀 (Regression) (2) 모델 만들기 모델을 구성한다. 여기에서는 두 개의 완전 연결 (densely connected) 은닉층으로 Sequential 모델을 만든다. 출력 층은 하나의 연속적인 값을 반환한다. 나중에 두 번째 모델을 만들기 쉽도록 build_model 함수로 모델 구성 단계를 감싼다. def build_model(): model = keras.Sequential([ layers.Dense(64, activation='relu', input_shape=[len(train_dataset.keys())]), layers.Dense(64, activation='relu'), layers.Dense(1) ]) optimizer = tf.keras.optimizers.RMSprop(0.001) model.compile(l.. 2022. 6. 15.
728x90
반응형
LIST