最近、新しいDeepJava (DJ) 0.01ディープラーニングフレームワークの最初のバージョンをリリースしました。
フレームワークの主な目標は、少なくとも現時点では、純粋に教育的です。 私たちは次のステップごとのフレームワークを構築しています:
- 明確なコードベースがあります
- ブランチのセットがあります。これにより、作成プロセスを段階的にたどり、これらまたは他の変更が行われた理由を理解できます。
最初のリリースとともに、ディープラーニングに関するオープンブックの最初の章もリリースしました。 この本は、以前はニューラルネットワークを扱ったことのないJavaエンジニア向けに書かれています。 同時に、学習プロセスは、独自のフレームワークをゼロから作成することを中心に構築されます。
トレーニングフレームワークを作成する際、本当に必要な場合にのみ新しい概念とエンティティを導入します。 たとえば、最初のリリースでは、ネットワークの表示は、ほとんどのエンジニアが直感的に行う方法で、テンソルのセットではなくグラフの形で行われます。 これにより、より柔軟なネットワークを作成できます。 MNIstモデルをトレーニングするコードが既にあるので、このネットワーク表現がどれほどゆっくりと機能するかを見ることができます。 さて、この問題に遭遇したので、以降の章では、この問題を正確に解決するために必要なボリューム内の線形代数の基本を読者に紹介します。 等 フレームワークを見るまで問題が発生するため、必要に応じてエンティティを導入する予定です。
いくつかの小さなパン:
PS
「 30分でニューラルネットワーク 」というビデオを見た人は、DJのビデオからネットワークを再作成する小さなコード例を次に示します。
var context = new Context( 0.2, false); var inputFriend = new InputNeuron("friend"); var inputVodka = new InputNeuron("vodka"); var inputSunny = new InputNeuron("sunny"); var outputNeuron = new ConnectedNeuron.Builder() .bias(0.1) .activationFunction(new Sigmoid()) .context(context) .build(); inputFriend.connect(outputNeuron, wFriend); inputVodka.connect(outputNeuron, wVodka); inputSunny.connect(outputNeuron, wSunny);