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.

¿Por qué puedo ejecutar mi archivo de conjunto de datos de PyTorch desde un archivo de Python pero no desde un cuaderno?

He escrito una clase de conjunto de datos personalizada en PyTorch en un archivo llamado dataset.py y he intentado probarla ejecutando el siguiente código en mi cuaderno con el siguiente código:

from dataset import MyCustomDataset
from torch.utils.data import DataLoader

ds = MyCustomDataset("/Volumes/GoogleDrive/MyDrive/MyProject/data/train.pkl", target_type="labels")
dl = DataLoader(ds, batch_size=16, shuffle=False)
X, y = next(iter(dl))
print(f"X: {X}, y: {y}")

Después de algunos intentos fallidos de solucionar problemas, intenté ejecutar el mismo código exacto en un archivo llamado test.py, ¡y funcionó sin problemas!

¿Por qué no puedo ejecutar esto desde mi cuaderno?

Para mí, el problema suele ser el enrutamiento de alguna manera, pero en este caso, todos los archivos, tanto .py como .ipynb y el directorio “data”, están en el mismo directorio “MyProject”. He intentado con rutas absolutas (como en el ejemplo) y con rutas relativas, pero el resultado es el mismo en ambos casos. Estoy usando vscode, si eso aporta alguna información.

Además, el mensaje de error en el cuaderno es “los índices de la lista deben ser enteros o segmentos, no cadenas”, desafortunadamente, la indicación me muestra las líneas incorrectas (hay un comentario en la línea donde se supone que está el error). Pero si esto realmente es un error, entonces tampoco debería funcionar en un archivo de Python, ¿verdad?

¡Cualquier ayuda o sugerencia es bienvenida!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es posible que el problema esté relacionado con la forma en que Jupyter Notebooks maneja el directorio de trabajo. Cuando se ejecuta un notebook, el directorio de trabajo se establece en el directorio donde se encuentra el notebook. Esto podría causar problemas si las rutas están definidas de forma relativa a la ubicación del archivo dataset.py.

    Una posible solución podría ser definir las rutas en relación con la ubicación del notebook. Por ejemplo, podrías intentar usar una ruta relativa desde la ubicación del notebook hasta el dataset, en lugar de una ruta absoluta.

    Otro problema potencial podría estar relacionado con el entorno o las dependencias. Es posible que haya una versión diferente de PyTorch u otra dependencia instalada en el entorno del notebook en comparación con el entorno donde el código se ejecuta perfectamente como un archivo independiente.

    Sería útil verificar las dependencias y la configuración del entorno tanto en el notebook como en el archivo test.py para ver si hay alguna diferencia.

    En cuanto al mensaje de error “los índices de la lista deben ser enteros o rebanadas, no una cadena”, podría indicar un problema con el formato o estructura de los datos, en lugar del problema del directorio. Sería útil investigar más a fondo y ver si este error ocurre consistentemente en el notebook o si fue solo un problema puntual.

    En general, solucionar problemas como este puede ser difícil, pero probar diferentes soluciones e investigar más a fondo debería ayudar a identificar la causa raíz del problema.

Comments are closed.