Image Regression using .mat Files and a datastore

Matthew Fall · Nov 10, 2022 · 2.3K views
Question
I would like to train a CNN for image regression using a datastore. My images are stored in .mat files (not png or jpeg). This is not image-to-image regression, rather an image to single regression label problem. Is it possible to do this using a datastore, or at least some other out-of-memory approach?  
Expert Answer
Profile picture of Prashant Kumar
Prashant Kumar PhD Expert
Answered Aug 13, 2026
I have solved something similar.
 
I'm trying to train a CNN for regression. My inputs are numeric matrices of size 32x32x2 (each input includes 2 grayscale images as two channels). My outputs are numeric vectors of length 6.
500 000 is the total amount of data.
 
I created 500 000 .mat file for inputs in folder 'inputData' and 500 000 .mat file for target in folder 'targetData'. Each .mat file contains only 1 variable of type double called 'C'.
 
The size of C is 32x32x2 (if input) or 1x6 (if target).
 
inputData=fileDatastore(fullfile('inputData'),'ReadFcn',@load,'FileExtensions','.mat');
targetData=fileDatastore(fullfile('targetData'),'ReadFcn',@load,'FileExtensions','.mat');

inputDatat = transform(inputData,@(data) rearrange_datastore(data));
targetDatat = transform(targetData,@(data) rearrange_datastore(data));

trainData=combine(inputDatat,targetDatat);

% here I defined my network architecture

% here I defined my training options

net=trainNetwork(trainData, Layers, options);


function image = rearrange_datastore(data)
image=data.C;
image= {image};
end

 

Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!