MATLAB: Transfer Learning with GoogLeNet Error when Freezing Weights

connectionserrorfreezeweightsgooglenetlayersneural networkStatistics and Machine Learning Toolboxtransfer learning

Hello,
Recently I have been exploring the machine learning and neural network capabilities of Matlab and I have been trying to use transfer learning on the GoogLeNet pretrained network to see how it performs on some text recognition datasets.
I have been following the syntax closely in the documentation here but I'm encountering some errors when I try to freeze the initial layers. The syntax in the example is as follows:
layers = lgraph.Layers;
connections = lgraph.Connections;
layers(1:110) = freezeWeights(layers(1:110));
lgraph = createLgraphUsingConnections(layers,connections);
For some reason when trying to set the layers and connections variables as is shown above, I get the error message "The expression to the left of the equals sign is not a valid target for an assignment". This happens both when I try to assign the 'layers' and 'connections' variables. Strangely enough, I can set both of these variables if I first type 'lgraph.Layers' or 'lgraph.Connections' into the workspace and then following those workspace, allowing the '.Layers' or '.Connections' properties be stored in the default temporary variable 'ans' and then setting the desired variables with "layers = ans" or "connections = ans".
The second problem I am encountering is with the 'freezeWeights()' command. When I try to run that I get the error message, "Undefined function or variable 'freezeWeights'" which is strange considering I have downloaded the googleNet support package. Is there another support package that has the freezeWeights command? I can't seem to find anything on that command.
Thank you for any assistance.

Best Answer

Dear Andrew,
the first version of MatLab where function freezeWeights() was realized is 2018a. I'm quite sure that you face problems because you are using older version of MatLab.