More Related Content
Similar to 高位合成でDeep learning (20)
高位合成でDeep learning
- 26. パーセプトロン用パラメータ
● 各パラメータは主に学習時に更新される(リードライト)
● ユーザーは基本的にあまり操作しない
○ 初期値の設定→バイアスは0、その他はランダム
○ 学習値の設定→1回設定するのみ
● かなり容量が必要…実用的に動かすには一部外部メモリを使わないと難しい?
○ Bias : [L1Size]+([L1Size]*[L2Size])+[L3Size]+[L4Size(10)]
○ Filter : [L1Size]*[WindowSize1]+[L1Size]*[L2Size]*[WindowSize2]
○ Weight : ([L2Size]*[L2OutFrame(49)])*[L3Size]+[L3Size]*[L4Size(10)]
○ →L1Size=32,L2Size=64,L3Size=1024,WindowSize=5x5で見積もると…
Bias=3,114要素,Filter=52,000要素,Weight=3,221,504要素 合計約3.3M要素
サイズの調整が必要 でかい!!
- 29. 設計仕様
ニューラルネットワーク構成
1層目 2層目 3層目 4層目
セット数 20 20 500 10
フィルタ 5x5 5x5 - -
活性化関数 ReLU ReLU ReLU SoftMax
入力 28x28x8Bit (白黒)
内部変数型 S2.6 (-2.0~1.984375)
出力 各8Bit
- 33. モジュールIFがどうなったか見てみる
項目 I/F セット数 詳細
Input Frame Memory 1 Address[9:0],Data[7:0]
L1 Filter Memory 1 Address[8:0],Data[7:0]
L1 Bias Memory 1 Address[4:0],Data[7:0]
L2 Filter Memory 1 Address[13:0],Data[7:0]
L2 Bias Memory 1 Address[8:0],Data[7:0]
L3 Weight Memory 1 Address[18:0],Data[7:0]
L3 Bias Memory 1 Address[8:0],Data[7:0]
L4 Weight Memory 1 Address[12:0],Data[7:0]
L4 Bias Memory 1 Address[3:0],Data[7:0]
Result Validつき出
力
8 Data[7:0]
配列はデフォルトですべて1次元メモリ
(合成結果には接続すべきメモリは含まれない)
● L3_Weightが512kバイト空間をご所望
良し悪しは兎も角、概ね想定通りの結果
1次元メモリなので基本的に異なる要素へのアク
セスができない
(リードだけの場合、2PortRAMの2面読み出しに
なることはある)
- 57. 失敗したこと
● 現実的な合成結果には到達せず
○ ディレクティブなしの結果は基本クソ( FPGAの演算に求めるのは並列実行)
○ 畳み込み演算(Layer1,2)は現実的な合成結果にするにはソースコードの根本改善が必要
○ ディレクティブ設定しても落ちたり帰ってこなかったりで大変
● 今回のクラス構造は失敗
○ 派生クラスから基底クラスへ細やかなディレクティブ指示ができない(気がする)
● ベタでフラットに関数を並べたようなコードが結局チューニングしやすい
○ C/C++で書くけど変に抽象化や汎用化するとチューニングできない
● ポインタをもっと活用しないとダメ
○ Layer4のパラメータは内部ブロックで持てる量だったが、 Layer2は絶対無理
○ Layer間のデータ受け渡しが無駄に発生するコードになってしまった
● ディープラーニングできなかった
○ もっと勉強します…