es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Creando un one-hot para el conjunto de datos Fashion-MNIST con tensorFlow.

¿Es el caso a continuación un escenario en el que se debe crear una codificación caliente (hot-one encoding) para las etiquetas?

También intenté crear una codificación caliente (hot-one encoding) pero seguí obteniendo errores. ¿Cómo se hace esto?

Nota: Estoy trabajando en Google Colab.

Gracias.

import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt

fashion = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion.load_data()

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress','Coat',
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

train_images =  tf.cast(train_images, tf.float32) / 255.0
test_images = tf.cast(test_images, tf.float32) / 255.0

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

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=10, batch_size=512, shuffle=True, validation_split=0.1)

Para agregar la codificación caliente (hot-one encoding), intenté cambiar los datos a:

train_images =  tf.cast(train_images, tf.float32) / 255.0
test_images = tf.cast(test_images, tf.float32) / 255.0

train_labels = tf.one_hot(tf.cast(train_labels, tf.int64), depth=10)
test_labels = tf.one_hot(tf.cast(test_labels, tf.int64), depth=10)

Lo cual dio el siguiente error:

InvalidArgumentError Traceback (most recent call last)
in ()
27
28
—> 29 model.fit(train_images, train_labels, epochs=10, batch_size=512, shuffle=True, validation_split=0.1)
30

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Basado en la información proporcionada, parece que el problema está en agregar una codificación one-hot a las etiquetas en el código proporcionado. En este caso, el uso de una codificación one-hot no es necesario ya que la función de pérdida utilizada en el código, “sparse_categorical_crossentropy”, ya realiza la codificación one-hot internamente. Por lo tanto, no es necesario el paso adicional y podría estar causando errores en el código.

    Además, es importante tener en cuenta que el mensaje de error proporcionado indica un problema con la función “model.fit” en lugar del paso de codificación one-hot específicamente. Por lo tanto, puede ser necesario investigar y solucionar el problema con la función fit.

Comments are closed.