Preparing data for regression using deep neural network

Hi,
I'm trying to implement a deep neural network for regression with hand-crafted features as the network input. I'm trying to use the Deep Network Designer to achieve this. The network archiecture is similar to the diagram below:
  • Each input/feature is a scalar array of length 14751, and there are 9 inputs/features alogether,
  • there is one output, again a scalar array of length 14751,
  • and there are 4 samples altogether.
  • See the data attached.
load data.mat;
inputSize = length(inputs)
inputSize = 9
[~, numSamples] = size(output) % where each column represents a different sample
numSamples = 4
exampleInput = inputs{1,1};
size(exampleInput)
ans = 1×2
14751 4
Can someone please advise how I can go about preparing the raw data in Datastore format which can be loaded in to Deep Network Designer?

3 Comments

Hello OB,
The best way to import your data into Deep Network Designer by forming two array datastores and combining into a single datastore using the combine function.
For the data you provided, you can do the following:
load data.mat
numFeatures = size(inputs,1);
% All inputs have the same number of timesteps so we
% can get the sizes by looking at the first observation
numTimesteps = size(inputs{1}, 1);
numObservations = size(inputs{1}, 2);
% Reshape the inputs from a cell to an array
arrayInputs = zeros(numFeatures, numTimesteps, numObservations);
for ii = 1:numFeatures
arrayInputs(ii,:,:) = inputs{ii};
end
% Generate ArrayDatastores for the inputs and outputs
adsPredictors = arrayDatastore(arrayInputs, "IterationDimension", 3);
adsResponses = arrayDatastore(output', "IterationDimension", 1);
% Generate a combined datastore for the inputs and outputs together
cds = combine(adsPredictors, adsResponses);
This datastore is suitable for use with a network that has a sequenceInputLayer expecting data with 9 features, and a regressionOutputLayer outputting sequences with one feature.
For more information on creating datastores for Deep Network Desginer, you can refer to the following resources:
https://uk.mathworks.com/help/deeplearning/ug/datastores-for-deep-learning.html
Hello David,
Thanks a lot for your response. I now seem to be able to load the data. However, am still struggling with training the network. Here is the architecture I'm trying to start with:
  • 9 input features (as previously described)
  • 2 fully-connected hidden layers with 32 neurons each
  • a sigmoid activation functions
  • 1 ouput
Here is the code from Deep Network Designer:
layers = [
sequenceInputLayer(9,"Name","sequence")
sigmoidLayer("Name","sigmoid_1")
fullyConnectedLayer(32,"Name","fc_1")
sigmoidLayer("Name","sigmoid_2")
fullyConnectedLayer(32,"Name","fc_2")
sigmoidLayer("Name","sigmoid_3")
regressionLayer("Name","regressionoutput")];
For training data, I'm loading the combined datastore (cds) as per your steps.
However, when trying to train, I get the following error:
Could you please advise?
Change the output size of the last fully connected layer to 1.

Sign in to comment.

Answers (0)

Categories

Asked:

OB
on 24 Aug 2022

Commented:

on 21 Sep 2023

Community Treasure Hunt

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

Start Hunting!