掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Delphiで人工ニューラルネットワーク(Artificial Neural Network)のクラスを作りましたが遅いです (ID:150797)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
裏目小僧 様 お返事ありがとうございます。 RandG 関数は初期化時に使っているだけなので、高速化しても全体への影響が殆どないみたいなのを確認しています。 問題となるシグモイドとシグモイドの微分関数(導関数)で使用しているexp関数ですが、Delphiのライブラリ(system.pas)のソースコードを確認しますと、 アセンブラで記述されていまして浮動小数点スタックレジスタとFPUをつかってハードウェア(CPU)で処理を行っていて FLDL2E CPU命令( x*log2e がハードウェアで高速に処理) FXCH CPU命令(2乗処理をハードウェアで高速処理) などなど、CPU命令(ハードウェア)で処理を行っている為、多少の誤差を無視したプレ計算などの高速化処理をソフトウェアで行ったところで到底速くならなさそうです・・・。 そこで、中間層の最適化関数にSigmoidではなく、ReLUも選択できるようにした改造版を公開しました。 https://mam-mam.net/delphi/ann.html 中間層及び中間層にニューロンが多い場合にはReLUを使用すると処理速度は少し速くなりました。 これ以上速くするにはオンライン学習ではなく、ミニバッチ学習にしてTTaskなどで並列処理を行うなど、根本から学習方式を変えるしかないのかもしれません。 ご意見ありがとうございます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.