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
728x90
반응형
LIST
'DNN with Keras > TensorFlow' 카테고리의 다른 글
[TensorFlow] 텐서 작업 (0) | 2022.06.20 |
---|---|
[TensorFlow] Pandas 데이터 프레임 전처리 (0) | 2022.06.16 |
[TensorFlow] CSV 전처리 (2) (0) | 2022.06.16 |
[TensorFlow] CSV 전처리 (1) (0) | 2022.06.16 |
[TensorFlow] 이미지 전처리 (2) (0) | 2022.06.16 |