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

3 vues (au cours des 30 derniers jours)
Valerio Gloria
Valerio Gloria le 22 Juin 2018
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.

Réponses (1)

Mingrun Wang
Mingrun Wang le 22 Juin 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));

Catégories

En savoir plus sur Image Data Workflows dans Help Center et File Exchange

Produits


Version

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by