Carregar dados NumPy

Ver em TensorFlow.org Executar em Google Colab Ver código fonte no GitHub Baixar notebook

Este tutorial fornece um exemplo de carregamento de dados de matrizes NumPy para um tf.data.Dataset.

Este exemplo carrega o conjunto de dados MNIST de um arquivo .npz. No entanto, a fonte das matrizes NumPy não é importante.

Configuração

try:
  # %tensorflow_version only exists in Colab.
  %tensorflow_version 2.x
except Exception:
  pass
from __future__ import absolute_import, division, print_function, unicode_literals

import numpy as np
import tensorflow as tf

Carregar um arquivo .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']
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 0s 0us/step

Carregar matrizes NumPy com tf.data.Dataset

Supondo que você tenha uma matriz de exemplos e uma matriz correspondente de rótulos, passe as duas matrizes como uma tupla para tf.data.Dataset.from_tensor_slices para criar um 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))

Usar o conjunto de dados

Aleatório e lote dos conjuntos de dados

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)

Construir e treinar um modelo

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.8568 - sparse_categorical_accuracy: 0.8812
Epoch 2/10
938/938 [==============================] - 2s 2ms/step - loss: 0.5658 - sparse_categorical_accuracy: 0.9249
Epoch 3/10
938/938 [==============================] - 2s 2ms/step - loss: 0.3991 - sparse_categorical_accuracy: 0.9444
Epoch 4/10
938/938 [==============================] - 2s 2ms/step - loss: 0.3187 - sparse_categorical_accuracy: 0.9535
Epoch 5/10
938/938 [==============================] - 2s 2ms/step - loss: 0.2875 - sparse_categorical_accuracy: 0.9588
Epoch 6/10
938/938 [==============================] - 2s 2ms/step - loss: 0.2688 - sparse_categorical_accuracy: 0.9628
Epoch 7/10
938/938 [==============================] - 2s 2ms/step - loss: 0.2371 - sparse_categorical_accuracy: 0.9674
Epoch 8/10
938/938 [==============================] - 2s 2ms/step - loss: 0.2286 - sparse_categorical_accuracy: 0.9700
Epoch 9/10
938/938 [==============================] - 2s 2ms/step - loss: 0.2157 - sparse_categorical_accuracy: 0.9718
Epoch 10/10
938/938 [==============================] - 2s 2ms/step - loss: 0.2115 - sparse_categorical_accuracy: 0.9736
<tensorflow.python.keras.callbacks.History at 0x7f401a9bff98>
model.evaluate(test_dataset)
157/157 [==============================] - 0s 2ms/step - loss: 0.7278 - sparse_categorical_accuracy: 0.9533
[0.7278250455856323, 0.9532999992370605]