FC2カウンター FPGAの部屋 カーブ、直線用白線間走行用畳み込みニューラルネットワーク9(量子化)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

カーブ、直線用白線間走行用畳み込みニューラルネットワーク9(量子化)

カーブ、直線用白線間走行用畳み込みニューラルネットワーク8(学習)”の続き。

前回は、カーブと直線の白線間を走行するためのデータセットで畳み込み層 - ReLU - プーリング層 - 全結合層 - ReLU - 全結合層 - SoftMax の畳み込みニューラルネットワークを学習した。今回は、学習した重みとバイアスを量子化してどの程度の精度が出るかを確かめてみよう。

すでにいろいろと量子化のパラメータを試してみて、直線の白線間を走行するときの量子化よりも、全結合層の重みの小数部を 2 ビット増やして、10 ビットとすることにした。
curve_tracing_cnn_44_171218.png

この時のデバックモードの出力を示す。

(100, 1, 10, 56)
Conv col.shape = (31200, 25)
Conv col_W.shape = (25, 2)
Conv np.max(x) = 0.8705882430076599
Conv np.min(x) = 0.32549020648002625
(2, 1, 5, 5)
Conv np.max(self.W_int) = 0.79296875
Conv np.min(self.W_int) = -0.23828125
(2,)
Conv np.max(self.b_int) = 0.0
Conv np.min(self.b_int) = -1.0
Conv out.shape = (31200, 2)
Conv np.max(out) = 8.476914929691702
Conv np.min(out) = -0.03768382431007922
Conv np.max(out2) = 8.5
Conv np.min(out2) = 0.0
Conv out.reshape = (100, 2, 6, 52)
Pooling x.shape = (100, 2, 6, 52)
Pooling out.shape = (100, 2, 3, 26)
x shape =(100, 2, 3, 26)
np.max(self.W) = 0.5351036345618255
np.max(self.W) = 0.5351036345618255
np.max(self.b) = 0.30059633490491805
x reshape =(100, 156)
np.max(x) = 8.5
np.min(x) = 0.0
(156, 100)
np.max(self.W_int) = 0.53515625
np.min(self.W_int) = -0.357421875
(100,)
np.max(self.b_int) = 0.30078125
np.min(self.b_int) = -0.4248046875
(100, 100)
np.max(out) = 20.33831787109375
np.min(out) = -13.0367431640625
np.max(out2) = 20.34375
np.min(out2) = -13.0
x shape =(100, 100)
np.max(self.W) = 0.8667410516980987
np.max(self.W) = 0.8667410516980987
np.max(self.b) = 0.29596798816137226
x reshape =(100, 100)
np.max(x) = 20.34375
np.min(x) = 0.0
(100, 3)
np.max(self.W_int) = 0.8671875
np.min(self.W_int) = -0.98046875
(3,)
np.max(self.b_int) = 0.2958984375
np.min(self.b_int) = -0.3017578125
(100, 3)
np.max(out) = 7.79901123046875
np.min(out) = -16.07855224609375
np.max(out2) = 7.8125
np.min(out2) = -16.0625


量子化したときのテスト用データでの精度は 0.947495291902 となった。量子化していないときは 0.95472693032 なので、こんなものかな?と思う。
curve_tracing_cnn_45_171219.png
  1. 2017年12月19日 04:01 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4008-f79f16de
この記事にトラックバックする(FC2ブログユーザー)