Borrar filtros
Borrar filtros

自作の出力層を定義す​る際、学習データ以外​の数値データを使用す​るにはどうすればよい​ですか?

6 visualizaciones (últimos 30 días)
Fumiya Watanabe
Fumiya Watanabe el 21 de Jun. de 2018
Comentada: Fumiya Watanabe el 26 de Jun. de 2018
自作の(回帰)出力層を定義する際、学習データ以外の数値データを使用するにはどうすればよいですか?
ひとつの方法として、次のように層のプロパティとして数値データ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点の問題があります。
  1. trainNetworkで与える学習データに対応するインデックスを取得する方法がわからない
  2. 数値データXは学習、検証および実装でそれぞれ異なるデータを与えたいが、この方法では学習時のXだけしか使えない
もうひとつの方法として、今回は損失関数の計算にターゲットデータが不要なため、ターゲットデータに数値データXを与えることを考えました。 しかし、この方法ではtrainNetworkを実行した際にYのサイズとTのサイズ(ここではT=Xとなります)が等しくないためにエラーとなってしまいます。
何かよい方法はありませんでしょうか?

Respuesta aceptada

Naoya
Naoya el 25 de Jun. de 2018
基本的に敷居が高い処理になるとは思いますが、あくまでもアイディアレベルで次のような方法は如何でしょうか?
1) 入力側のデータに対してプラスアルファで、評価関数に与えたいデータを予め追加しておきます。
2) 従来の入力信号 と 評価関数に与えたいデータを分離します。 こちらの分離作業は、カスタムネットワークにて行うことになると思います。
3) DAGネットワークで従来の畳み込みや全結合層を含む処理と 評価関数に与えたいデータを別ルートとします。
4) myRegressionレイヤの前段で、従来の畳み込みのプロセスから得られた行列と、上記2) で分割した評価関数側に与えたいデータを結合処理します。
5) myRegressionレイヤ側で、カスタム評価関数を定義します。
  1 comentario
Fumiya Watanabe
Fumiya Watanabe el 26 de Jun. de 2018
ご教示いただいた方法で実現できそうです。 大変ありがとうございました。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 深層学習データの前処理 en Help Center y File Exchange.

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!