📜 ⬆️ ⬇️

Java Learning Framework for Deep Learning

We recently released the first version of the DeepJava (DJ) 0.01, a new deep learning framework .


The main goal of the framework, at least for the time being, is purely educational. We build a step-by-step framework, which:



Together with our first release, we also released the first chapter of an open book on deep learning. The book is written for Java engineers who have not previously engaged in neural networks. At the same time, the learning process is built around creating your own framework from scratch:



When creating our educational framework, we wake up to introduce new concepts and entities only where and when it is really necessary. For example, in the first release, the representation of the network is done in the way that most engineers instinctively want to do it, in the form of a graph (and not a set of tensors). This allows you to create more flexible networks. Since we already have code that trains the MNIst model , we can see how slow this network view is. Now, having buried in this problem, in later chapters we will introduce the reader to the basics of linear algebra in the volume that is needed to solve this problem exactly. Etc. we plan to introduce entities where necessary, as problems appear until we look at the framework.


Several small buns:



PS


If someone saw our video " neural networks in 30 minutes ", here is a small example of code how to recreate a network from a video to a 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); 

')

Source: https://habr.com/ru/post/352520/


All Articles