How to manually change pre-trained CNN's (AlexNet) weights?
5 次查看(过去 30 天)
显示 更早的评论
To whom can help:
I am using MATLAB r2017a. I am trying to change the weights of a pre-trained CNN, like alexnet, using the following codes. Unfortunately, I got the following errors. Are there any suggestions to by-pass this read-only constrain?
Thanks a lot! Jason
" You cannot set the read-only property 'Layers' of SeriesNetwork"
% code
>> net=alexnet
>> net.Layers(2,1).Weights=net.Layers(2,1).Weights*10;
0 个评论
回答(3 个)
J
2018-4-16
Bump! I have a hard time believing that one cannot take an existing SeriesNetwork, and either:
1. Modify properties of it, or...
2. ... create a new SeriesNetwork that is a copy of the existing one, but has different values for certain properties
Also, I would image there is a way to take an existing SeriesNetwork, then addLayers/removeLayers/connectLayers and convert back to a SeriesNetwork, rather than being stuck with the DAGNetwork that is generated (if it really is naturally represented as SeriesNetwork)? Or if not, that there is some workaround?
I mean, it makes NO SENSE that if, for example, I have a SeriesNetwork with a dropoutLayer at default 0.5 that I can't just modify that to 0.25 or 0.6 or whatever I want and then re-train without having to convert to a DAGNetwork and then be stuck with a DAGNetwork (certain functions will only operate on SeriesNetwork--take for example, deepDreamImage).
0 个评论
mizuki
2017-8-13
In R2017a, the only supported way to create a SeriesNetwork is to use trainNetwork, and it is not possible to modify it.
DL
2021-3-29
You can convert the DAG net to an object and then change that object with is a structure, then load that back. It is a possible way.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Image Data Workflows 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!