Git Product home page Git Product logo

dl-hybrid-precoder's Introduction

DL-hybrid-precoder

This is the source code for paper "Deep Learning for Direct Hybrid Precoding in Millimeter Wave Massive MIMO Systems"

In the paper, we proposes a novel neural network architecture, that we call an auto-precoder, and a deep-learning based approach that jointly senses the millimeter wave (mmWave) channel and designs the hybrid precoding matrices with only a few training pilots. More specifically, the proposed model leverages the prior observations of the channel to achieve two objectives. First, it optimizes the compressive channel sensing vectors based on the surrounding environment in an unsupervised manner to focus the sensing power on the most promising spatial directions. This is enabled by a novel neural network architecture that accounts for the constraints on the RF chains and models the transmitter/receiver measurement matrices as two complex-valued convolutional layers. Second, the proposed model learns how to construct the RF beamforming vectors of the hybrid architectures directly from the projected channel vector (the received sensing vector). The auto-precoder neural network that incorporates both the channel sensing and beam prediction is trained end-to-end as a multi-task classification problem. Each task is a multi-label classification problem. The network is shown in the following figure.

Figure1

To find more information about the paper and other deep-learining based wireless communication work, please visit DeepMIMO dataset applications.

Run training and tesing

  1. Quick run: Run in terminal "python main_train_beamforming.py -train 1" to train the model and run "python main_train_beamforming.py -train 0" for testing. The default parameters are: dataset='DeepMIMO_dataset_train20.mat' and 'DeepMIMO_dataset_test20.mat' (which are corresponding to total transmit power of 20dB), epochs=15, batch_size=512, learning_rate=0.002.

  2. If you need to change the dataset and parameters, they can be found in "main_train_beamforming.py".

  3. The prediction accuracy results for the transmitter and receiver on the default dataset are given in the following table. The total transmit power for this dataset is 20 dBm.

Transmit power (dBm) 20
Tx acc.(Mt=Mr=2) 0.71
Rx acc.(Mt=Mr=2) 0.69
Tx acc.(Mt=Mr=4) 0.78
Rx acc.(Mt=Mr=4) 0.76
Tx acc.(Mt=Mr=8) 0.88
Rx acc.(Mt=Mr=8) 0.88

To reproduce the results, the pre-trained model in Saved_model folder needs to be loaded for testing. Also, the datasets of DeepMIMO_dataset_train20.mat and DeepMIMO_dataset_test20.mat (and the corresponding label mat files) are required (See the following part for dataset).

Dataset

The dataset can be downloaded here from Google drive. There are 4 files for training and testing and the labels. After downlaoding, copy these 4 files to MIMO_dataset folder. To generate your own dataset, visit DeepMIMO.net.

Citation

If you find the code is useful, please kindly cite our paper. Thanks.

@article{li2019deep,
  title={Deep Learning for Direct Hybrid Precoding in Millimeter Wave Massive MIMO Systems},
  author={Li, Xiaofeng and Alkhateeb, Ahmed},
  journal={arXiv preprint arXiv:1905.13212},
  month={May},
  year={2019}
}

License

This code package is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.