Neural network genfunction and matlab codegen generates incorrect parameters.
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Anthony Shivakumar
le 12 Fév 2014
Réponse apportée : Fred Smith
le 12 Fév 2014
I have a trained neural network. The input is a array of 62500 rows and the output is an array of 4 rows. (The input is an image of size 250 * 250 reshaped to a single column array of 62500 rows)
Using, this net object I generated its matlab function using a similar syntax as the shown below:
genFunction(men_women_cloth_Net,'men_women_netFn','MatrixOnly','yes');
Once, i get the funtion, i tested within matlab and it worked fine.
Generating the C code: My next step to generate the C code is to now define the input and output datatype. Based on the example shown in the neural network genfunction page, I used a similar syntax to generate the code:
x1Type = coder.typeof(double(0),[13 Inf]); % Coder type of input 1
codegen -c -v men_women_netFn.m -config:dll -o libmen_women_nn -args {x1Type}
The code is generated on a linux based machine. The 1st few lines of the generated code looks like:
void men_women_netFn(const char_T x1[7], real_T b_y1[28])
{
static real_T xp1[437500];
static const real_T dv0[62500] = { 253.0, 253.0, 253.0, 253.0, 253.0, 253.0,
Now what does not make sense: Why do we have an array of x1[7]? should not it just be x1[1] ?
the generated file states:
/* [y1] = men_women_netFn(x1) takes these arguments: */
/* x = 62500xQ matrix, input #1 */
/* and returns: */
/* y = 4xQ matrix, output #1 */
/* where Q is the number of samples. */
Which now mean the number '7' is Q samples, which is 7. why ? The output is also 7 samples, 4 * 7 = 28 == b_y1[28] .
Now, i am sure i have not explicitly stated any sample number, and neither has the genfunction code generate any explicit sample number
function [y1] = men_women_netFn(x1)
%MEN_WOMEN_NETFN neural network simulation function.
%
% Generated by Neural Network Toolbox function genFunction, 10-Feb-2014 05:22:00.
I am using this with opencv. I am able to compile the code and run it with opencv, but the output from the generated code function are not correct. Further any input i give, the output is exactly the same suggesting the code generated does not seem right.
Help much appreciated.
2 commentaires
Réponse acceptée
Fred Smith
le 12 Fév 2014
Somehow MATLAB Coder is interpreting {x1Type} as a string of 7 elements, instead of as a cell array with one argument. I don't know why this is happening, but it is consistent with the effect you are seeing.
Try moving this argument earlier in the list. Or try removing the braces. Double-check the spelling to make sure there is nothing mistyped.
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Deep Learning Code Generation Fundamentals dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!