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.

Parámetros de PyTorch Conv1d

Estoy tratando de usar la convolución 1D para clasificar un conjunto de señales de tiempo.
Cada unidad de datos que necesito clasificar está compuesta por 65 series de tiempo diferentes, cada una contiene 50 muestras de tiempo, por lo que si escribo:

dataset = MyDataset(train,y_train_one_hot)
a,b = dataset[1]
print(a.shape)

Obtendré:

[56,50]

Quiero ejecutar filtros de convolución 1D en cada uno de los canales. El problema es que no puedo obtener los datos correctos para la capa nn.Conv1d – actualmente estoy usando:

self.c1 = nn.Conv1d(in_channels=56, out_channels=100, kernel_size=ks1)

pero cuando ejecuto el modelo con un tamaño de lote de 100, la entrada se convierte en la forma [100,56,50] y solo obtengo una predicción para un tamaño de lote de 100 (en lugar de 100X3). ¿Alguien puede ayudarme con la sintaxis correcta? Muchas gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para resolver este problema, debes asegurarte de que las dimensiones del tensor de entrada a nn.Conv1d sean correctas. Actualmente, la forma de entrada es [100,56,50], pero necesitas que sea [100, 65, 50] si quieres aplicar filtros de convolución 1D a cada canal. Así es como puedes lograrlo:

    self.c1 = nn.Conv1d(in_channels=65, out_channels=100, kernel_size=ks1)
    

    Esto asegura que el tensor de entrada a tu capa nn.Conv1d tenga 65 canales (uno por cada serie de tiempo), con una altura de 50 (el número de muestras de tiempo en cada serie). Cuando pases un lote de datos al modelo, el tensor de entrada tendrá una forma de [batch_size, 65, 50], que es lo que deseas.

    Ten en cuenta que también puedes necesitar ajustar la forma de entrada de las capas subsiguientes en tu modelo para asegurarte de que las dimensiones sean consistentes.

Comments are closed.