How can I modify the weights of a pre-trained Alexnet in 2018a?

3 views (last 30 days)
Hi everybody. For a research project I need to modify the weights of a pre-trained Alexnet. When I try to do so:
net = alexnet;
net.Layers(2).Weights = net.Layers(2).Weights * 0.01;
Matlab 2017b answers me that they are read-only values. Since it looks a very strong limitation, does anybody know if in version 2018a they solved that problem? Or maybe someone has solve it with a script?
Thanks.

Answers (1)

Mingrun Wang
Mingrun Wang on 22 Jun 2018
layers=net.Layers; layers(2).Weights=layers(2).Weights * 0.01; And i also provide you the following ways to make up for the conversion between external layer and internal layer.(external layer is the wrapper for internal layer) externalLayer→internalLayer: nnet.cnn.layer.Layer.getInternalLayers( externalLayers ) %this function will return an internal instance(copy).
internalLayer→externalLayer:externalLayersConstructor(e.gnnet.cnn.layer.FullyConnectedLayer(internalLayer));
create an internal layer(e.g nnet.internal.cnn.layer.FullyConnected(name,inputsize,outputsize));

Categories

Find more on Image Data Workflows in Help Center and File Exchange

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!