最初は、きれいなmatlabで作成されました。 後で、CUDAに順方向および逆方向の配布機能を実装しました。 このバージョンはMatlabcentralにあり、今でも月に162回ダウンロードされています。
ちなみに、これはインターネット上のCUDA上の畳み込みネットワークの最初のバージョンでした。
この実装を使用して、画像認識でニューラルネットワークを使用する投稿を書きました。
トピックへの関心が非常に大きいことに気づいたので、ライブラリを書き直し、C ++ / CUDAで完全に作成することにしました。 そこでCudaCnnがありました 。 実際のところ、私はすでにこの開発を空き時間に行っています。 その後、仕事を変えて、オープンソース開発を行う能力が非常に制限されました。
ライブラリでの作業の開始以来、畳み込みニューラルネットワークとディープラーニングのトピックは非常に人気があります。 Jeffrey HintonのチームがCUDA(Alex Kryzhevskyによって書かれた)での畳み込みネットワークの実装を使用して、競合の大規模視覚認識チャレンジの競合他社から大きなマージンを獲得した後、特に人気が急上昇しました。 現在、Googleはこのテクノロジーを使用して写真を検索しています。
現在、私のライブラリはbigbucketでホストされており 、月に約130人が説明ページにアクセスしています。
もちろん、これはブログにはかなり適していますが、研究者の狭いサークル向けに設計された非常に特殊なライブラリには、それほど多くはありません。 ところで、米国と中国からの訪問の大部分。 さらに、ユーザーは定期的に何かを追加または修正するように私に書いてくれますが、私はいつもそれらに答える時間がありません。
その結果、次の機能と特性を備えた畳み込み(および完全に接続された)ニューラルネットワークの学習機能を実装するライブラリがあります。
- CPUおよびGPUで動作する機能(CUDA)
- クロスプラットフォーム(CMakeに基づく)、含む。 いくつかの制限付きでARMの下でコンパイルします
- 教授法:確率的勾配、確率的レーベンバーグ・マルカート
- レイヤー:たたみ込み、プーリング、完全接続
- アクティベーション関数:正規化された分散を持つタンジェンシャル、リニア、タンジェンシャル
- 畳み込みカーネルの任意のサイズと形状(他の実装では制限があります)
- Matlabのフロントエンドの可用性
取り組む価値のあるものもあります。 特に、CPUのコードは速度が最適化されていないため、CUDAコードも開発する必要が多く、doxygenのドキュメントが損なわれることはありません。
前述したように、現時点ではライブラリをサポートする時間も機会もないので、誰かがその開発に参加することに興味があるなら、あらゆる種類の支援を提供する準備ができています。 オープンソースプロジェクトに参加し、機械学習の分野で経験を積み、タスクにディープラーニング技術を適用し、CUDA開発の経験を積むことを望んでいる人に役立つと思います。
興味があれば、PMに書いてください。
PS私はこの機会に、 機械学習+ビッグデータに関連して当社で最近オープンした空席を促進します