オートエンコーダーの学習に関するプロットの値の取得
2 views (last 30 days)
Show older comments
XTrain = digitTrainCellArrayData;
hiddenSize = 25;
autoenc = trainAutoencoder(XTrain,hiddenSize,...
'L2WeightRegularization',0.004,...
'SparsityRegularization',4,...
'SparsityProportion',0.15);
スパース自己符号化器を使用した手書きの数字イメージの再構成に関するものです。
このコードを実行し、表示されるウィンドウのperformanceボタンを押すと、添付画像にあるとおり、学習に関するプロットを得ることができます。
そこで質問なのですが、このプロットの値(XとYの値)を取得することは可能でしょうか。
資料作成のため、この値をExcelにインポートし、こちらの望む形のフォーマットにて、同様の図を作成したいと考えています。
もし、ご存知のかたがいらっしゃれば教えていただけないでしょうか。よろしくお願いいたします。
0 Comments
Accepted Answer
Takumi
on 21 Feb 2019
Edited: Takumi
on 21 Feb 2019
figureから元のデータを取得する方法は以下のリンクが参考になるかと思います.
次に示す例は,まずsinおよびcos関数をプロットしたのち,変数を削除することで質問の状態を再現し,図から元データを抽出してExcelファイルの各シートに出力するものです.
’学習に関するプロット’ に適用する場合は元データを得たいグラフを出力した後に ’% グラフィックハンドル取得' と書かれた行以降を実行していただければ良いかと思います.
clear all
close all
% サンプル
x1 = linspace(0,2*pi,100);
x2 = linspace(0,2*pi,50);
y1 = sin(x1);
y2 = cos(x2);
plot(x1,y1,'DisplayName','sin(x)')
hold on
plot(x2,y2)
clear % 変数削除
% グラフィックハンドル取得
h = findobj(gca,'type','line'); % カレント軸のラインオブジェクト
x = get(h,'XData'); %'XData'プロパティ値の取得
y = get(h,'YData'); %'YData'プロパティ値の取得
% ラインオブジェクトが複数の時はcell配列,単数の時は数値配列となるので
% 数値配列のときはcell配列に変換
if isnumeric(x)
X{1} = x;
Y{1} = y;
else
X = x;
Y = y;
end
filename = 'test.xlsx';
for i = 1:length(X)
data = [X{i};Y{i}]';
sheat = get(h(i),'DisplayName');
if isempty(sheat)
sheat = sprintf('line%u',i);
end
xlswrite(filename,data,sheat);
end
More Answers (0)
See Also
Categories
Find more on グラフィックス オブジェクトのプログラミング in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!