About Beam Prediction Task

#1
by Markydh7 - opened

To reproduce 64 types of beam predictions, I built a residual 1D-CNN model, but the accuracy of my test set is only 40% at most. Can I get your downstream model?

Hello, thanks for sharing your experience! You can find the downstream model for beam prediction here: Beam Prediction Downstream Model.

Hi @Markydh7 , I was not able to load the train and test sets (.p files) for beam prediction task on MATLAB. Could you tell me how you managed to use them?

Hello @BerkIGuler , thank you for your feedback!

The .p files associated with the challenge problems on the LWM website—LoS/NLoS Classification and Beam Prediction—are stored as Torch tensors. To convert them into MATLAB-compatible .mat files, you can use the p2mat.py script available at:
p2mat.py on Hugging Face.

For the downstream tasks in our paper, we used the following Sub-6 GHz channel scenarios:

  • city_18_denver
  • city_15_indianapolis
  • city_19_oklahoma
  • city_12_fortworth
  • city_11_santaclara
  • city_7_sandiego

Their corresponding mmWave scenarios, used for generating the best beam labels, are available here:
mmWave Scenarios on Hugging Face.

Please let us know if you have any questions!

This comment has been hidden
Markydh7 changed discussion status to closed
Markydh7 changed discussion status to open

Hello, thanks for sharing your experience! You can find the downstream model for beam prediction here: Beam Prediction Downstream Model.

Thank you for sharing the downstream model! I had a quick question—what does sequence_length represent in the model? If we’re only using the CLS token for the prediction task, wouldn’t it make sense to set sequence_length to 1? I tried doing that, but it seems to cause some issues when running the code. I’d really appreciate your insights! 😊

In the current model framework, the sequence_length is fixed at 129, representing the total number of input patches. Specifically, a channel of size (32, 32) is segmented into 128 patches, with an additional CLS patch prepended at the beginning of the sequence.

If you need only the CLS embedding as output, you should still provide all 129 input patches to the model. During inference, the model will generate 129 corresponding patches in the embedding space, transforming the input from the original channel space. To obtain the CLS embedding, simply extract the first patch from the output sequence.

To generate the CLS embedding, set the input_type variable to 'cls_emb' as outlined in the model card instructions. This ensures the model processes the input accordingly and outputs the CLS embedding patch.

In the current model framework, the sequence_length is fixed at 129, representing the total number of input patches. Specifically, a channel of size (32, 32) is segmented into 128 patches, with an additional CLS patch prepended at the beginning of the sequence.

If you need only the CLS embedding as output, you should still provide all 129 input patches to the model. During inference, the model will generate 129 corresponding patches in the embedding space, transforming the input from the original channel space. To obtain the CLS embedding, simply extract the first patch from the output sequence.

To generate the CLS embedding, set the input_type variable to 'cls_emb' as outlined in the model card instructions. This ensures the model processes the input accordingly and outputs the CLS embedding patch.

Thank you very much for your patient explanation. It was my previous misunderstanding. I have already replicated the beam prediction task based on the downstream model you provided. Thank you again!

Sign up or log in to comment