cellに格納された​すべての配列にGra​d-camを適用する​方法

7 ビュー (過去 30 日間)
KM
KM 2022 年 11 月 17 日
コメント済み: KM 2022 年 11 月 30 日
現在、1000*1のcell配列の中に、120*180 doubleのデータが1000個格納されており、そのデータそれぞれにGrad-camを適用させる方法を模索しています。
1つのデータに対してであれば以下のコードでできるのですが、1000個もあるため、一括でできる方法をご教授いただきたいです。
[class,score] = classify(net,data);
map = gradCAM(net,data,class);
可能であれば、それぞれの結果(map)も元データと同様に1000*1のcell配列に格納したいです。
よろしくお願い申し上げます。

採用された回答

Hernia Baby
Hernia Baby 2022 年 11 月 17 日
編集済み: Hernia Baby 2022 年 11 月 17 日
cellfun をご使用ください
YourCell = ...  % ここに1000×1のcell配列
net = ... % ここに使用するnet
C_map = cellfun(@(x) MyGradCam(net,x),YourCell,'UniformOutput',false);
function map = MyGradCam(net,data)
[class,score] = classify(net,data);
map = gradCAM(net,data,class);
end
  4 件のコメント
Hernia Baby
Hernia Baby 2022 年 11 月 17 日
一点、確認させてください
netCNNもcell型で格納されていますか?
KM
KM 2022 年 11 月 30 日
お返事大変遅くなり申し訳ございません。
ご回答いただきありがとうございました。
試行錯誤してみたところ、
C_map = cellfun(@(x) gradCAM(netCNN,x,class, ...
'ReductionLayer',reductionLayer, ...
'FeatureLayer',featureLayer),data,'UniformOutput',false)
で解決しました。
netCNNはcellではなくLayerで定義されています。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeStatistics and Machine Learning Toolbox 入門 についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!