텐서플로
이전 내용
텐서플로 데이터셋 프로젝트
https://www.tensorflow.org/datasets?hl=ko
텐서플로 데이터셋(TFDS)을 사용하면 널리 사용되는 데이터셋을 손쉽게 다운로드 할 수 있으며, MNIST나 패션 MNIST처럼 작은 것부터 많은 디스크 용량이 필요한 이미지넷 같은 커다란 데이터셋까지 제공한다.
여기에는 이미지 데이터셋, 텍스트 데이터셋, 번역 데이터셋, 오디오와 비디오 데이터셋, 시계열 등이 포함된다.
TFDS는 텐서플로에 기본으로 포함되어 있고, 보통 tfds로 tensorflow_datasets을 import 하고 tfds.load() 함수를 호출하면 원하는 데이터를 다운로드하고 데이터셋의 딕셔너리로 데이터를 반환한다.
그 예로 MNIST 데이터셋을 다운로드해보기 전에, 주피터 노트북으로 실행 시에는 먼저 TFDS를 다운로드 해줘야 한다.
pip install tensorflow_datasets
import tensorflow_datasets as tfds
dataset = tfds.load(name='mnist')
mnist_train, mnist_test = dataset['train'], dataset['test']
데이터셋을 다운로드 한 다음, 원하는 변환(셔플링, 배치 나누기, 프리페칭 등)을 적용해 모델을 훈련하기 위한 준비를 마친다.
for batch in mnist_train.shuffle(10_000, seed=42).batch(32).prefetch(1):
images = batch['image']
labels = batch['label']
# 모델 훈련 준비 예시
데이터셋에 있는 각 아이템은 특성과 레이블을 담은 딕셔너리이다. 하지만 케라스는 특성과 레이블 두 원소를 담은 튜플 아이템을 원하기 때문에 map() 메서드를 사용해 데이터셋을 이런 식으로 변환할 수 있다.
mnist_train = mnist_train.shuffle(10_000, seed=42).batch(32)
mnist_train = mnist_train.map(lambda items: (items["image"], items["label"]))
mnist_train = mnist_train.prefetch(1)
레이블된 데이터셋에만 적용할 수 있도록 as_supervised=True로 지정하여 load() 함수를 호출하는 것이 더 간단하다.
TFDS는 split 매개변수를 사용하여 데이터를 간편하게 분할할 수 있다. 예를 들어 훈련 세트의 첫 90%를 훈련에 사용하고, 나머지 10%는 검증에 사용하고, 테스트 세트는 모두 테스트에 사용하려면 split=['train[:90%]', 'train[90%:]', 'test']로 지정하면 된다. load() 함수는 세 세트를 모두 반환한다.
아래는 TFDS를 사용하여 MNIST 데이터셋을 로드하고 분할한 다음 이를 사용하여 간단한 케라스 모델을 훈련하고 평가하기 위한 예제이다.
train_set, valid_set, test_set = tfds.load(
name='mnist',
split=['train[:90%]', 'train[90%:]', 'test'],
as_supervised = True
)
train_set = train_set.shuffle(buffer_size=10_000, seed=42).batch(32).prefetch(1)
valid_set = valid_set.batch(32).cache()
test_set = test_set.batch(32).cache()
tf.random.set_seed(42)
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(loss='sparse_categorical_crossentropy', optimizer='nadam',
metrics=['accuracy'])
history=model.fit(train_set, validation_data=valid_set, epochs=5)
test_loss, test_accuracy = model.evaluate(test_set)
다음 내용
[출처]
핸즈 온 머신러닝
텐서플로 데이터셋
'[파이썬 Projects] > <파이썬 딥러닝, 신경망>' 카테고리의 다른 글
[딥러닝] 케라스의 사전 훈련 모델 사용하기 (1) | 2024.11.29 |
---|---|
[딥러닝] 합성곱 신경망을 사용한 컴퓨터 비전 (0) | 2024.11.27 |
[딥러닝] 케라스의 전처리 층 (0) | 2024.11.26 |
[딥러닝] 심층 신경망 훈련 - 4 (1) | 2024.11.26 |
[딥러닝] 텐서플로를 사용한 데이터 적재와 전처리 (0) | 2024.11.25 |