MATLAB Answers

DAGネットワークにおける複数入力について

8 views (last 30 days)
Yuki Yoshino
Yuki Yoshino on 5 Feb 2020
Commented: Rd on 17 Nov 2020
複数入力のDAGネットワークの設計を考えています。
下記図はイメージです。
DAGnet.jpg
上記のような複数のimageinputにそれぞれ異なる画像を入力したいと考えています。
trainNetwo​rkの関数を用いる際、どのように書いて、指定すればよろしいでしょうか?
よろしくお願いいたします。
  3 Comments
Kenta
Kenta on 4 Apr 2020
ありがとうございます。まだまだ作りこみが足りていないところもあると思いますので、またなにかあればご連絡ください。

Sign in to comment.

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 6 Feb 2020
こんにちは。
複数入力一出力の場合(Multi Input Signle Output = MISO)、combine関数でデータストアをひとまとめにしてからtrainNetworkに入力します。このとき、ラベルも一緒にcombineしてあげる必要があるのですが、ラベルだけを管理するdatastoreは現状無いため、ここだけカスタムで作成する必要があります。正式なサポートプロダクトではありませんが、カテゴリカルデータを扱えるカスタムのdatastoreを添付しますので、お使いください。
以上を踏まえてコードの大まかな流れは以下のようになります。
% 画像のデータストアは準備しておく。imds1, imds2とする
% ラベルのデータストアを作成(ラベルはカテゴリカル型のベクトルとして作成しておく。categoricalVectorとする。
labelds = CategoricalDatastore(categoricalVector); % 添付のプログラムを使う
% combineで画像1、画像2、ラベルのデータストアをひとまとめにする
combds = combine(imds1, imds2, labelds);
% 学習(ネットワークとオプションはすでにできているとして)
net = trainNetwork(combds, lgraph, options);
ネットワークにおける入力層の順番は、作成したレイヤーグラフのInputNamesというフィールドでわかります。この順番と、combineした順が対応しますので、combineで入力した一番目のimds1はInputNames(1)に、2番目のimds2はInputNames(2)の入力層に投入されます。今回はどちらでもいいかもしれませんが…。
augmentationなどが必要な場合は、transform関数でtransformedDatastoreを作って、それをcombineするのがいいです。
作成していてまたわからないことがありましたら質問してください。
下記は参考まで
trainNetworkでのcombinedDatastoreの関連記述:
  7 Comments
Rd
Rd on 17 Nov 2020
Dear Kenta,
I too need to do the same thing asmentioned by Yuki Yoshino. I have sequence of six convolutional, relu, batchnormalization and maxpooling layer. i have trained the network with three separate images. Finally i need to fuse these three output. At which layer i have to perform fusion and why? how to do fusion?
Thanks.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!