using datastore with trainNetwork

I'm trying to train mp3/wav files using yamnet, I've created an audioDataStore which load the files, then I transform it to get data that suits to Yamnet, and then I try to train it. I get the folowing error:
Invalid training data. Predictors must be a numeric array, a datastore, or a table. For networks with
sequence input, predictors can also be a cell array of sequences.
Can't I use transformedDataStore with trainNetwork?
This is my code:
net = yamnet;
DS = audioDatastore(FolderName, ...
'FileExtensions',{'.wav','.mp3'},"IncludeSubfolders",true,'LabelSource','foldernames');
TR = transform(DS,@(audio,info)preProcess(audio,info),"IncludeInfo",true);
options = trainingOptions("adam");
trainNetwork(net,TR,options)
function [data,info] = preProcess(audio,info)
data = yamnetPreprocess(audio,info.SampleRate);
end
Thanks

 Accepted Answer

Aylin
Aylin on 7 Feb 2023
Edited: Aylin on 7 Feb 2023
Hello Noam, maybe the trainNetwork inputs are in the wrong order? The datastore should be first, followed by the layers and the options. Does this work better?
trainNetwork(TR,net,options)
Rylan

2 Comments

my bad, actually chaniging to:
trainNetwork(TR,net.Layers,options) do the work.
Thanks!
i added a following question:
https://www.mathworks.com/matlabcentral/answers/1908330-input-datastore-returned-more-than-one-observation-per-row-for-network-input-1

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2022b

Asked:

on 7 Feb 2023

Commented:

on 7 Feb 2023

Community Treasure Hunt

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

Start Hunting!