How to develop LSTM network given my scenario?

10 views (last 30 days)
Hi all,
I would like to develop an LSTM network to capture the temporal aspects of my data to see how time of day influences signal strength measurements (RSRP & RSRP). I have been collecting cellular signal strength measurement along a water taxi route both in the morning and evening. So far I collected approximately 30000 data points.
The following are the parameters of the cellular signal strength measurements:
  • Time of day
  • GPS coordinates (both latitude & Longitude)
  • Signal strength values (RSRP & RSRQ)
Could you please assist me in developing the LSTM network and guide me in ways to modify the model to make it more accurate? Also, how can I train the model to see how the location influences the signal strength data?
Best,
Tyler
  1 Comment
idris
idris on 26 Sep 2024
data = readtable('your_data_file.csv');
% Normalize RSRP and RSRQ
data.RSRP = (data.RSRP - min(data.RSRP)) / (max(data.RSRP) - min(data.RSRP));
data.RSRQ = (data.RSRQ - min(data.RSRQ)) / (max(data.RSRQ) - min(data.RSRQ));
data.TimeOfDay = hour(data.TimeOfDay) + minute(data.TimeOfDay)/60; % Convert to decimal hours
data.TimeOfDay = mod(data.TimeOfDay, 24); % Ensure it wraps around
layers = [
sequenceInputLayer(3) % 3 inputs: Time of Day, Latitude, Longitude
lstmLayer(50, 'OutputMode', 'sequence') % 50 hidden units
fullyConnectedLayer(2) % Output: RSRP & RSRQ
regressionLayer]; % For regression task
options = trainingOptions('adam', ...
'MaxEpochs', 200, ...
'GradientThreshold', 1, ...
'InitialLearnRate', 0.01, ...
'LearnRateSchedule', 'piecewise', ...
'LearnRateDropPeriod', 125, ...
'LearnRateDropFactor', 0.2, ...
'Verbose', 0, ...
'Plots', 'training-progress');
dataTimetable = table2timetable(data);
XTrain = {}; % Inputs
YTrain = {}; % Outputs
windowSize = 10; % Example window size
for i = 1:(height(data) - windowSize)
XTrain{end+1} = [data.TimeOfDay(i:i+windowSize-1), data.Latitude(i:i+windowSize-1), data.Longitude(i:i+windowSize-1)]';
YTrain{end+1} = [data.RSRP(i:i+windowSize-1), data.RSRQ(i:i+windowSize-1)]';
end
net = trainNetwork(XTrain, YTrain, layers, options);
layers = [
sequenceInputLayer(3)
lstmLayer(50, 'OutputMode', 'sequence')
dropoutLayer(0.2) % 20% dropout
fullyConnectedLayer(2)
regressionLayer];
% Example of plotting results
predicted = predict(net, XTest);
plot(predicted, 'r'); % Predicted
hold on;
plot(YTest, 'b'); % Actual
xlabel('Sample');
ylabel('Signal Strength');
legend('Predicted', 'Actual');

Sign in to comment.

Answers (1)

Aneela
Aneela on 10 Oct 2024
Hi Tyler,
You can refer to the following MathWorks documentation to develop an LSTM network: https://www.mathworks.com/help/deeplearning/ref/nnet.cnn.layer.lstmlayer.html
To train the LSTM model to analyse how location influences the signal strength data, incorporate GPS coordinates as features in the model.
To analyse the impact of location on signal strength, visualize the predictions against GPS coordinates using scatter plots or heatmaps.
To make the LSTM model more accurate, you can consider the following ways:
  • Ensure that all the input features are normalized and standardized, which helps the model to converge faster.
  • Add more LSTM layers or increase the number of hidden units in each layer to enable the model to capture more complex patterns.
  • Add dropout layers to prevent overfitting.
  • Implement early stopping to halt training when the validation performance stops improving.
  • Use k-fold cross-validation to ensure the model's performance is consistent across different subsets of the data.

Categories

Find more on Weather and Atmospheric Science in Help Center and File Exchange

Products


Release

R2024b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!