自作の出力層を定義する際、学習データ以外の数値データを使用するにはどうすればよいですか?
Show older comments
自作の(回帰)出力層を定義する際、学習データ以外の数値データを使用するにはどうすればよいですか?
ひとつの方法として、次のように層のプロパティとして数値データXをコンストラクタで与えておくことを考えています。
classdef myRegressionLayer < nnet.layer.RegressionLayer
properties
X
end
methods
function layer = myRegressionLayer(X)
layer.X = X;
end
function loss = forwardLoss(layer, Y, T)
loss = mylossfun(Y, layer.X(id, :));
end
function dLdX = backwardLoss(layer, Y, T)
dLdX = d_mylossfun(Y);
end
end
end
しかし、この方法には2点の問題があります。
- trainNetworkで与える学習データに対応するインデックスを取得する方法がわからない
- 数値データXは学習、検証および実装でそれぞれ異なるデータを与えたいが、この方法では学習時のXだけしか使えない
もうひとつの方法として、今回は損失関数の計算にターゲットデータが不要なため、ターゲットデータに数値データXを与えることを考えました。 しかし、この方法ではtrainNetworkを実行した際にYのサイズとTのサイズ(ここではT=Xとなります)が等しくないためにエラーとなってしまいます。
何かよい方法はありませんでしょうか?
Accepted Answer
More Answers (0)
Categories
Find more on Deep Learning Toolbox 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!