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.

¿Cómo remodelar un tensor de PyTorch de 2 a 3 dimensiones?

Me gustaría tomar un tensor PyTorch que tengo, originalmente de forma torch.Size ([15000, 23]), y volver a darle forma para que sea compatible para ejecutar en una red neural de picos (snnTorch es el marco que estoy usando en PyTorch). La forma del tensor de entrada en el SNN debería ser [tiempo x tamaño_lote x dimensiones_de_características]. (Se puede encontrar más información al respecto aquí).

En este momento, estoy usando el siguiente código:

Crear datos de dimensiones [tiempo x tamaño_lote x dimensiones_de_características]

pasos_de_tiempo = 200
tamaño_lote = 1
dimensiones_de_características = torch_input_tensor.size (dim = 1)
torch_input_tensor_reshaped = torch.reshape (torch_input_tensor, (pasos_de_tiempo, tamaño_lote, dimensiones_de_características))
print (torch_input_tensor_reshaped.size ())
print (torch_input_tensor_reshaped)

Cuando ejecuto este código, obtengo el siguiente error:

RuntimeError: la forma ‘[200, 1, 23]’ no es válida para la entrada de tamaño 345000

Puede ser que esté usando la función equivocada para hacer esto, pero la idea es que actualmente tengo 15000 puntos de datos y 23 características de entrada. Básicamente quiero alimentar el mismo punto de datos (23 características, 1 punto de datos) 200 veces (200 pasos de tiempo).

En el ejemplo proporcionado en el enlace, usan el siguiente código:

spk_in = spikegen.rate_conv (torch.rand((200, 784))).unsqueeze (1)

La función unsqueeze es para la entrada a lo largo de la dimensión = 1 para indicar ‘un lote’ de datos.

¿Cómo puedo hacer que la forma de mis datos sea compatible para ejecutar en un SNN?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puede usar la función unsqueeze para remodelar su tensor de PyTorch y hacerlo compatible con el SNN. El código se vería así:


    Cree datos de dimensiones [time x batchsize x featuredimensions] timesteps = 200 batchsize = 1 featuredimensions = torchinputtensor.size(dim = 1) torchinputtensorreshaped = torch.reshape(torchinputtensor, (timesteps, batchsize, featuredimensions)).unsqueeze(1) print(torchinputtensorreshaped.size()) print(torchinputtensor_reshaped)

    Esto debería remodelar su tensor a [time x batch_size x feature_dimensions] y hacerlo compatible para ejecutarse en el SNN.

Comments are closed.