CSVファイルに保存されている1行3列のデータセットを、畳み込みニューラルネットワークを用いて学習させる方法

461 views
Skip to first unread message

松島弘樹

unread,
Dec 15, 2017, 7:56:04 AM12/15/17
to neural_network_...@googlegroups.com
 初めまして、私はNNconsoleで機械学習を始めました。稚拙な部分もありますがよろしくお願いいたします。

 私はCSVファイルに保存されている1行3列のデータセットを、畳み込みニューラルネットワークを用いて学習させようとしています。
2値分類問題を解こうとしています。
構築したネットワークは、input→Convolution→MaxPooling→Convolution→MaxPooling→Affine→ReLU→Affine→ReLU→Affine→Sigmoid→BinaryCrossEntropy です。

 この状態でinputのSizeに入力サイズである「1,3」と入力すると、ConvolutionのOutputの欄に黄色い三角形のエラーマークが出てしまいます。
さらに、この状態でTrainingを行うと以下のようなエラーが出てしまいます。
[Error 1] Main->Affine->Input : Empty property
[Error 2] Main->Convolution_2->Input : Empty property
[Error 3] Main->Convolution_2->Output : Empty property
[Error 4] Main->MaxPooling_2->Input : Empty property
[Error 5] Main->MaxPooling_2->Output : Empty property
[Error 6] Main->Convolution->Output : Empty property
[Error 7] Main->MaxPooling->Input : Empty property
[Error 8] Main->MaxPooling->Output : Empty property
8 errors.

プロパティがカラというエラー内容ですが、入力が3値(例えば「1,255,255」のような)でないと対応していないのでしょうか。「1,3」の2値では行えないのでしょうか。
また、私の構築したネットワークのここが違っているなど、アドバイスが出来るだけ早く欲しいです。
我が儘ですが、アドバイスのほど何卒よろしくお願いいたします。

Spatial_dims

unread,
Dec 15, 2017, 11:10:22 PM12/15/17
to Neural Network Console Users (JP)
Neural Network Console で使っているネットワークの画像と, 使っているCSVファイルで数種類のCSVファイルが使われているならすべての種類のCSVファイルの中身の上から3行程の画像を見せていただくのはできますか? 

2017年12月15日金曜日 21時56分04秒 UTC+9 松:

unread,
Dec 16, 2017, 5:50:20 AM12/16/17
to Neural Network Console Users (JP)


ネットワークの画像と学習データのCSVファイルです。これ以外に評価用のCSVファイルもありますが、形式は同じです。





2017年12月16日土曜日 13時10分22秒 UTC+9 Spatial_dims:

Spatial_dims

unread,
Dec 17, 2017, 8:14:43 AM12/17/17
to Neural Network Console Users (JP)
ネットワークの画像で, Convolutionの層からMaxPooling_2が削除されるとTraining ができましたので, 入力のサイズが「1, 3」でも対応していると思います. 

2017年12月16日土曜日 19時50分20秒 UTC+9 松:

unread,
Dec 17, 2017, 2:31:23 PM12/17/17
to Neural Network Console Users (JP)
お返事ありがとうございます。
以下の様にMaxPooling_2を消去してもエラーが出てしまうのですが、差支えなければどのようにネットワークを組んだか教えて頂けないでしょうか。






2017年12月17日日曜日 22時14分43秒 UTC+9 Spatial_dims:

小林由幸

unread,
Dec 18, 2017, 1:47:27 AM12/18/17
to Neural Network Console Users (JP)
エラーの直接の原因は、1,3の入力に対してConvolutionのKernelがそれよりも大きいサイズ
(5,5)に設定されている点にあります。

入力サイズが1,3である場合、Kernelに設定できる最大のサイズは
(特にPadding等を行わない場合)1,3になります。
同様に、MaxPoolingのKernelについても入力サイズと同じかより小さい値である
必要があります。
また、Reshapeレイヤーを用いることで、サイズが1,3であるデータを、例えば
1,1,3のサイズに変更することができます。

上記3つの対応(ConvolutionとMaxPoolingのKernel Shapeの変更、Reshape)により
学習自体は正しく実行できるかと思いますが、入力1,3であれば基本的には
Affineレイヤーを用いた多層ニューラルネットワーク(Convolutionを用いない)が
適切かと思います。

Spatial_dims

unread,
Dec 18, 2017, 6:51:18 AM12/18/17
to Neural Network Console Users (JP)
このように元のネットワークから層が削除されるとTraining ができました. 

2017年12月18日月曜日 4時31分23秒 UTC+9 松:
キャプチャ.PNG

unread,
Dec 19, 2017, 7:05:26 AM12/19/17
to Neural Network Console Users (JP)
 お返事が遅れて申し訳ございません。2つあるConvolutionとMaxPoolingの両方のKernelの値を1,3に設定しましたが、Reshapeはネットワークのどこに挿入すれば良いかご教示お願いします。自分なりに様々試しましたが、エラーが出てしまい学習が進まないのです。



2017年12月18日月曜日 15時47分27秒 UTC+9 小林由幸:

小林由幸

unread,
Dec 20, 2017, 2:56:57 AM12/20/17
to Neural Network Console Users (JP)

Reshapeレイヤーの挿入箇所について、
例えばSizeプロパティが1,3のInputレイヤーの後にReshapeレイヤーを挿入し、
OutShapeプロパティを1,1,3とすることで、入力を1枚の1x3画像に見立てることができます。
入力を1,1,3とすることで、KernelShapeプロパティが1,3のConvolutionを適用できるようになります。


ただし、先日も返信させていただいた通り1,3の入力に対しては
Affineレイヤーを用いたほうがより適切です。
Reply all
Reply to author
Forward
0 new messages