How to create a datastore for using the Deep Network Designer App?

91 次查看(过去 30 天)
I'm trying to use the Deep Network Designer app (R2021b) to perform regression between numeric inputs and outputs. I have prepared the trainind dataset in a matrix X of size n x f, where f is the number of features, and a matrix Y of size n x r, where r is the number of responses (n is the number of observations). Similarly, Xv and Yv hold the validation data. When I run the app, I see that it needs the data to be in a datastore, so I tried the following to make the appropriate datastores: (f = 3, r = 5, n = 500, n_val = 100).
ar_c = mat2cell([X Y],ones(500,1),[3,5]);
arv_c = mat2cell([Xv Yv],ones(100,1),[3,5]);
ds = arrayDatastore(ar_c,'OutputType','same');
ds_v = arrayDatastore(arv_c,'OutputType','same');
The datastores ds and ds_v get accepted as legitimate input (I can see the first 5 observations previewed).
But when I hit "train", I get the following error: Training with trainNetwork failed. Input datastore returned more than one observation per row for network input 1. (not sure why the "Don't" rules for posting recommend against pasting images of error messages).
As per the instructions given to mat2cell, I have only one row per observation (or so I think). Can someone please tell me what I'm doing wrong here? Thanks!

采纳的回答

Srivardhan Gadila
Srivardhan Gadila 2021-11-19
From the above information, I think your input layer would be a featureInputLayer. So according to your training data, the output of read operation on the combined datastore should be as follows:
>> read(cds)
ans =
1×2 cell array
{3×1 double} {5×1 double}
For more information you can refer to the documentation of trainNetwork and desciption of training data format for feature data in case of a datastore: features - trainNetwork.
I am attaching code to generate random training data:
f = 3; r = 5; n = 5;
layers = [featureInputLayer(f)
fullyConnectedLayer(r)
regressionLayer];
xtrain = randn(f,n);
ytrain = randn(r,n);
xds = arrayDatastore(xtrain,IterationDimension=2);
yds = arrayDatastore(ytrain,IterationDimension=2);
cds = combine(xds,yds)
cds =
CombinedDatastore with properties: UnderlyingDatastores: {[1×1 matlab.io.datastore.ArrayDatastore] [1×1 matlab.io.datastore.ArrayDatastore]} SupportedOutputFormats: ["txt" "csv" "xlsx" "xls" "parquet" "parq" "png" "jpg" "jpeg" "tif" "tiff" "wav" "flac" "ogg" "mp4" "m4a"]
  3 个评论
Atallah Baydoun
Atallah Baydoun 2022-3-2
Hey Srivardhan,
Would you be able to comment on the error I am getting.
My inputs are:
Input 1: 3D image 124 x 124 x 124
Input 2: 4 features vector
Output: Binary class.
This is my combined datastore
dsTrain =
CombinedDatastore with properties:
UnderlyingDatastores: {1×3 cell}
SupportedOutputFormats: ["txt" "csv" "xlsx" "xls" "parquet" "parq" "png" "jpg" … ]
Error using trainNetwork (line 184)
Input datastore returned more than one observation per row for network input 2.

请先登录,再进行评论。

更多回答(0 个)

类别

Find more on Machine Learning and Deep Learning for Signals in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by