본문 바로가기
DNN with Keras/TensorFlow

[TensorFlow] NumPy 전처리

by goatlab 2022. 6. 16.
728x90
반응형
SMALL

NumPy 데이터 로드

 

NumPy 배열에서 tf.data.Dataset으로 데이터를 로드하는 예제이다.

 

여기에서는 .npz 파일에서 MNIST 데이터세트를 로드한다. 그러나 NumPy 배열의 소스는 중요하지 않다.

 

설정

 

import numpy as np
import tensorflow as tf

 

.npz 파일에서 로드하기

 

DATA_URL = 'https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz'

path = tf.keras.utils.get_file('mnist.npz', DATA_URL)
with np.load(path) as data:
  train_examples = data['x_train']
  train_labels = data['y_train']
  test_examples = data['x_test']
  test_labels = data['y_test']

 

tf.data.Dataset를 사용하여 NumPy 배열 로드하기

 

예제 배열과 레이블의 해당 배열이 있다고 가정하면, tf.data.Dataset.from_tensor_slices에 튜플로 두 배열을 전달하여 tf.data.Dataset을 만든다.

 
train_dataset = tf.data.Dataset.from_tensor_slices((train_examples, train_labels))
test_dataset = tf.data.Dataset.from_tensor_slices((test_examples, test_labels))

 

데이터세트 셔플 및 배치

 

BATCH_SIZE = 64
SHUFFLE_BUFFER_SIZE = 100

train_dataset = train_dataset.shuffle(SHUFFLE_BUFFER_SIZE).batch(BATCH_SIZE)
test_dataset = test_dataset.batch(BATCH_SIZE)

 

모델 빌드 및 훈련

 

 

model = tf.keras.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10)
])

model.compile(optimizer=tf.keras.optimizers.RMSprop(),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['sparse_categorical_accuracy'])
model.fit(train_dataset, epochs=10)
Epoch 1/10
938/938 [==============================] - 2s 2ms/step - loss: 3.6364 - sparse_categorical_accuracy: 0.8816
Epoch 2/10
938/938 [==============================] - 2s 2ms/step - loss: 0.5568 - sparse_categorical_accuracy: 0.9287
Epoch 3/10
938/938 [==============================] - 2s 2ms/step - loss: 0.3979 - sparse_categorical_accuracy: 0.9474
Epoch 4/10
938/938 [==============================] - 2s 2ms/step - loss: 0.3234 - sparse_categorical_accuracy: 0.9564
Epoch 5/10
938/938 [==============================] - 2s 2ms/step - loss: 0.2721 - sparse_categorical_accuracy: 0.9620
Epoch 6/10
938/938 [==============================] - 2s 2ms/step - loss: 0.2700 - sparse_categorical_accuracy: 0.9652
Epoch 7/10
938/938 [==============================] - 2s 2ms/step - loss: 0.2375 - sparse_categorical_accuracy: 0.9681
Epoch 8/10
938/938 [==============================] - 2s 2ms/step - loss: 0.2337 - sparse_categorical_accuracy: 0.9702
Epoch 9/10
938/938 [==============================] - 2s 2ms/step - loss: 0.1996 - sparse_categorical_accuracy: 0.9740
Epoch 10/10
938/938 [==============================] - 2s 2ms/step - loss: 0.2110 - sparse_categorical_accuracy: 0.9743
<tensorflow.python.keras.callbacks.History at 0x7fc3e04585f8>
model.evaluate(test_dataset)
157/157 [==============================] - 0s 2ms/step - loss: 0.7606 - sparse_categorical_accuracy: 0.9575
[0.7605944871902466, 0.9574999809265137]

 

https://www.tensorflow.org/tutorials/load_data/numpy?hl=ko 

 

NumPy 데이터 로드  |  TensorFlow Core

Google I/O는 끝입니다! TensorFlow 세션 확인하기 세션 보기 NumPy 데이터 로드 이 튜토리얼은 NumPy 배열에서 tf.data.Dataset으로 데이터를 로드하는 예제를 제공합니다. 이 예제에서는 .npz 파일에서 MNIST

www.tensorflow.org

 

728x90
반응형
LIST