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.

¿Cuál sería una implementación eficiente de un conjunto personalizado de datos tipo mapa para un archivo hdf5 con una estructura irregular?

Tengo un archivo hdf5 que contiene imágenes de cierto número de personas, de un cierto número de cámaras de origen, durante varios segundos. Por lo tanto, se ve así:

archivo[segundos][persona][cámara].

Pero esto es bastante irregular, de tal manera que para un segundo dado puede haber un número diferente de personas, y para un segundo y persona dados puede haber imágenes de diferentes cámaras. Quiero crear un dataset en estilo de mapa para pytorch, por lo que necesito implementar get_item(idx) que devolverá un segundo, persona y cámara únicos para ese idx.

Mi primera idea es recorrer todo el dataset y crear diccionarios a los que se pueda acceder con idx, es decir, segundo[idx] = este_segundo, persona[idx] = esta_persona, cámara[idx] = esta_cámara. Así puedo usar todo eso para obtener un dato único del dataset con:

archivo[este_segundo][esta_persona][esta_cámara].

Sin embargo, esta solución me parece demasiado complicada. Me pregunto si hay una mejor manera de resolver esto, ya que probablemente sea un problema común.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hay varias formas de resolver este problema. Un enfoque común es utilizar una lista de tuplas para almacenar la información del índice. Cada tupla contiene el segundo, la persona y la cámara para el punto de datos correspondiente. Luego, el método get_item(idx) puede simplemente devolver file[segundos][persona][cámara] para la tupla en el índice idx.

    Otro enfoque es utilizar un diccionario para mapear cada triplete (segundos, persona, cámara) a un índice en el conjunto de datos. Esto se puede hacer iterando a través del conjunto de datos y asignando un índice único a cada triplete. Luego, el método get_item(idx) puede usar el diccionario para buscar el triplete correspondiente (segundos, persona, cámara) para el índice dado idx y devolver file[segundos][persona][cámara].

    De cualquier manera, es importante asegurarse de que los índices devueltos por el método get_item(idx) sean únicos, para que cada punto de datos en el conjunto de datos sea accedido exactamente una vez. Esto se puede hacer eligiendo cuidadosamente el orden en el que se almacena la información del índice, o utilizando una función de hash para generar los índices.

Comments are closed.