728x90 반응형 SMALL tensorflow26 [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] 모델 저장 / 복원 (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) 과대적합 / 과소적합 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. [TensorFlow] 회귀 (Regression) (1) 회귀 (Regression) 회귀 (regression)는 가격이나 확률 같이 연속된 출력 값을 예측하는 것이 목적이다. 이와는 달리 분류 (classification)는 여러개의 클래스 중 하나의 클래스를 선택하는 것이 목적이다 (예를 들어, 사진에 사과 또는 오렌지가 포함되어 있을 때 어떤 과일인지 인식하는 것). Auto MPG 데이터셋을 사용하여 1970년대 후반과 1980년대 초반의 자동차 연비를 예측하는 모델을 만든다. 이 기간에 출시된 자동차 정보를 모델에 대한 정보가 있다. 이 정보에는 실린더 수, 배기량, 마력 (horsepower), 공차 중량 같은 속성이 포함된다. 이 예제는 tf.keras API를 사용한다. 자세한 내용은 케라스 가이드를 참고하면 된다. # 산점도 행렬을 그리기 위.. 2022. 6. 15. [TensorFlow] 기본 분류 (텍스트 분류) (2) 모델 구성 신경망은 층 (layer)을 쌓아서 만든다. 이 구조에서는 두 가지를 결정해야 한다. 모델에서 얼마나 많은 층을 사용할 것인가? 각 층에서 얼마나 많은 은닉 유닛 (hidden unit)을 사용할 것인가? 이 예제의 입력 데이터는 단어 인덱스의 배열이다. 예측할 레이블은 0 또는 1이다. 이 문제에 맞는 모델을 구성한다. # 입력 크기는 영화 리뷰 데이터셋에 적용된 어휘 사전의 크기입니다(10,000개의 단어) vocab_size = 10000 model = keras.Sequential() model.add(keras.layers.Embedding(vocab_size, 16, input_shape=(None,))) model.add(keras.layers.GlobalAveragePooling.. 2022. 6. 15. [TensorFlow] 기본 분류 (텍스트 분류) (1) 영화 리뷰를 사용한 텍스트 분류 영화 리뷰 (review) 텍스트를 긍정 (positive) 또는 부정 (negative)으로 분류한다. 이 예제는 이진 (binary) 또는 클래스 (class)가 두 개인- 분류 문제이다. 이진 분류는 머신러닝에서 중요하고 널리 사용된다. 여기에서는 인터넷 영화 데이터베이스 (Internet Movie Database)에서 수집한 50,000개의 영화 리뷰 텍스트를 담은 IMDB 데이터셋을 사용한다. 25,000개 리뷰는 훈련용으로, 25,000개는 테스트용으로 나뉘어져 있다. 훈련 세트와 테스트 세트의 클래스는 균형이 잡혀 있다. 즉 긍정적인 리뷰와 부정적인 리뷰의 개수가 동일하다. 모델을 만들고 훈련하기 위해 텐서플로의 고수준 파이썬 API인 tf.keras를 사용.. 2022. 6. 15. [TensorFlow] 기본 분류 (이미지 분류) (2) 모델 구성 신경망 모델을 만들려면 모델의 층을 구성한 다음 모델을 컴파일한다. 층 설정 신경망의 기본 빌딩 블록은 레이어이다. 레이어는 레이어에 공급된 데이터로부터 표현을 추출한다. 이러한 표현은 당면한 문제에 의미가 있어야 한다. 대부분 딥러닝은 간단한 층을 연결하여 구성된다. tf.keras.layers.Dense와 같은 층들의 가중치 (parameter)는 훈련하는 동안 학습된다. model = tf.keras.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10) ]) 이 네트워크의 첫 번째 층인 tf.keras.la.. 2022. 6. 15. [TensorFlow] 기본 분류 (이미지 분류) (1) 의류 이미지 분류 텐서플로 모델을 만들고 훈련할 수 있는 고수준 API인 tf.keras를 사용한다. # TensorFlow and tf.keras import tensorflow as tf # Helper libraries import numpy as np import matplotlib.pyplot as plt print(tf.__version__) 패션 MNIST 데이터셋 임포트하기 10개의 범주 (category)와 70,000개의 흑백 이미지로 구성된 패션 MNIST 데이터셋을 사용한다. 이미지는 해상도 (28x28 픽셀)가 낮고 다음처럼 개별 옷 품목을 나타낸다. 패션 MNIST는 컴퓨터 비전 분야의 "Hello, World" 프로그램격인 고전 MNIST 데이터셋을 대신해서 자주 사용된다. M.. 2022. 6. 15. [Deep Learning] 딥러닝 프레임워크 비교 딥러닝 프레임워크 비교 장점 단점 텐서플로우 (TensorFlow) 텐서보드 (TensorBoard)를 통해서 파라미터 변화 양상이나 DNN의 구조를 알 수 있다. 메모리를 효율적으로 사용하지 못한다. 케라스 (Keras) 배우기 쉽고 모델을 구축하기 쉽다. 오류가 발생할 경우 케라스 자체의 문제인지 백엔드 (back-end)의 문제인지 알 수 없다. 토치 (Torch) 간단하고 직관적인 학습과 속도 대비 빠른 최적화가 가능하다. 텐서플로우에 비해 사용자층이 얕고, 예제 및 자료를 구하기 힘들다. 텐서플로우 (TensorFlow) 텐서플로는 구글이 개발한 오픈소스 소프트웨어 라이브러리이며 머신러닝과 딥러닝을 쉽게 사용할 수 있도록 다양한 기능을 제공한다. 텐서플로는 데이터 플로우 그래프 (Data Flo.. 2022. 5. 19. 이전 1 2 3 다음 728x90 반응형 LIST