ディープラーニングJavaラーニングフレームワーク

最近、新しいDeepJava (DJ) 0.01ディープラーニングフレームワークの最初のバージョンをリリースしました。







フレームワークの主な目標は、少なくとも現時点では、純粋に教育的です。 私たちは次のステップごとのフレームワークを構築しています:









最初のリリースとともに、ディープラーニングに関するオープンブックの最初の章もリリースしました。 この本は、以前はニューラルネットワークを扱ったことのないJavaエンジニア向けに書かれています。 同時に、学習プロセスは、独自のフレームワークをゼロから作成することを中心に構築されます。









トレーニングフレームワークを作成する際、本当に必要な場合にのみ新しい概念とエンティティを導入します。 たとえば、最初のリリースでは、ネットワークの表示は、ほとんどのエンジニアが直感的に行う方法で、テンソルのセットではなくグラフの形で行われます。 これにより、より柔軟なネットワークを作成できます。 MNIstモデルをトレーニングするコードが既にあるので、このネットワーク表現がどれほどゆっくりと機能するかを見ることができます。 さて、この問題に遭遇したので、以降の章では、この問題を正確に解決するために必要なボリューム内の線形代数の基本を読者に紹介します。 等 フレームワークを見るまで問題が発生するため、必要に応じてエンティティを導入する予定です。







いくつかの小さなパン:





PS



30分でニューラルネットワーク 」というビデオを見た人は、DJのビデオからネットワークを再作成する小さなコード例を次に示します。







var context = new Context( /* learningRate */ 0.2, /* debug mode */ 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); //   : inputFriend.forwardSignalReceived(null, 1.); inputVodka.forwardSignalReceived(null, 1.); inputSunny.forwardSignalReceived(null, 1.); //      : double result = outputNeuron.getForwardResult(); double expectedResult = 1.; double errorDy = 2. * (expectedResult - result); //   : outputNeuron.backwardSignalReceived(errorDy);
      
      






All Articles