CNNを使って波形から回帰を行うことはできますか?
Show older comments
https://jp.mathworks.com/help/nnet/examples/train-a-convolutional-neural-network-for-regression.html 上記では,たたみ込みニューラル ネットワークを使用して回帰モデルにあてはめ、画像の回転角度を予測する方法を 説明していますが,この入力を波形にして音声の距離を推定する回帰をしたいです. 具体的には,波形は1×4500の行列になっています.一つの波形に正解値(距離)は1つです. CNNを使って波形から回帰を行うことは可能でしょうか?方法もできれば教えていただきたいです. ちなみにAutoencoderを使って特徴量を抽出し,重回帰分析にて推定を行うことはできました.
Accepted Answer
More Answers (1)
mizuki
on 24 Dec 2017
> CNNを使って波形から回帰を行うことは可能でしょうか?
はい、可能です。
例にも含まれていますが、回帰用の層 regressionLayer が用意されていますのでこれでCNN回帰をすることができます。また、入力が画像ではなく信号とのことですので、入力層を SequenceInputLayer にします。層の定義はだいたいこんな感じです。
layers = [ ...
sequenceInputLayer(*)
convolution2dLayer(*)
reluLayer
maxPooling2dLayer(*)
fullyConnectedLayer(*)
softmaxLayer
regressionLayer]
4 Comments
Kengo Atomi
on 30 Dec 2017
Edited: michio
on 19 Jan 2018
mizuki
on 4 Jan 2018
入力波形は行列の形ではなく、セル配列にするようです。 train_x{i} を i 番目の波形の
#features x 波形の点数
のように定義します。具体的には
load JapaneseVowelsTrain
をして XTrain を確認すると分かりやすいかと思います。同じ現象を再現できていないのでこれだけで解決するかは不明です。もし先に進めなければ追加でご質問ください。
- 参考: sequenceInputLayer https://jp.mathworks.com/help/nnet/ref/nnet.cnn.layer.sequenceinputlayer.html
Kengo Atomi
on 4 Jan 2018
R2017b のバージョンでは、sequenceInputLayer() に対して convolution2dLayer() を適用することができない状況のようです。誤情報ですみませんでした。
LSTMと回帰を組み合わせて使用する方法については将来のバージョンで検討がされているということです。
Categories
Find more on Deep Learning Toolbox in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!