Введение

В современном мире все большее значение приобретают машинное обучение (МО) и искусственный интеллект (ИИ). Как Java-разработчик, вам может быть интересно, как вы можете интегрировать машинное обучение в свои приложения. В этом сообщении блога мы рассмотрим шаги по интеграции Java с машинным обучением с использованием популярных сред глубокого обучения, таких как Deeplearning4j и TensorFlow. Мы также предоставим примеры кода, которые помогут вам начать работу.

Глубокое обучение4j

Deeplearning4j (DL4J) — это мощная распределенная библиотека глубокого обучения с открытым исходным кодом для виртуальной машины Java (JVM). Он предназначен для использования с Java и другими языками JVM, такими как Scala и Kotlin.

Для начала добавьте в свой проект Maven или Gradle следующие зависимости:

Мейвен:

<dependencies>
  <dependency>
    <groupId>org.deeplearning4j</groupId>
    <artifactId>deeplearning4j-core</artifactId>
    <version>1.0.0-beta7</version>
  </dependency>
</dependencies>

Грейдл:

dependencies {
  implementation 'org.deeplearning4j:deeplearning4j-core:1.0.0-beta7'
}

Вот простой пример создания MultiLayerNetwork с использованием DL4J:

import org.deeplearning4j.nn.api.OptimizationAlgorithm;
import org.deeplearning4j.nn.conf.MultiLayerConfiguration;
import org.deeplearning4j.nn.conf.NeuralNetConfiguration;
import org.deeplearning4j.nn.conf.layers.DenseLayer;
import org.deeplearning4j.nn.conf.layers.OutputLayer;
import org.deeplearning4j.nn.multilayer.MultiLayerNetwork;
import org.deeplearning4j.nn.weights.WeightInit;
import org.nd4j.linalg.activations.Activation;
import org.nd4j.linalg.lossfunctions.LossFunctions;

public class JavaMLExample {
    public static void main(String[] args) {
        MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
                .seed(12345)
                .weightInit(WeightInit.XAVIER)
                .optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
                .updater(new Nesterovs(0.1, 0.9))
                .list()
                .layer(0, new DenseLayer.Builder().nIn(784).nOut(256).activation(Activation.RELU).build())
                .layer(1, new DenseLayer.Builder().nIn(256).nOut(128).activation(Activation.RELU).build())
                .layer(2, new OutputLayer.Builder(LossFunctions.LossFunction.NEGATIVELOGLIKELIHOOD)
                        .activation(Activation.SOFTMAX).nIn(128).nOut(10).build())
                .build();

        MultiLayerNetwork model = new MultiLayerNetwork(conf);
        model.init();
    }
}

ТензорФлоу

TensorFlow — популярная библиотека машинного обучения с открытым исходным кодом, разработанная Google. Он поддерживает различные языки, включая Python, C++ и Java. Чтобы использовать TensorFlow с Java, вам необходимо добавить следующие зависимости:

Мейвен:

<dependencies>
  <dependency>
    <groupId>org.tensorflow</groupId>
    <artifactId>tensorflow-core-platform</artifactId>
    <version>0.4.0</version>
  </dependency>
</dependencies>

Грейдл:

dependencies {
  implementation 'org.tensorflow:tensorflow-core-platform:0.4.0'
}

Вот пример создания простой модели TensorFlow с использованием Java API:

import org.tensorflow.Graph;
import org.tensorflow.Session;
import org.tensorflow.Tensor;
import org.tensorflow.op.Ops;
import org.tensorflow.op.core.Placeholder;
import org.tensorflow.op.math.Add;
import org.tensorflow.op.math.Mul;
import org.tensorflow.types.TFloat32;

public class JavaTensorFlowExample {
    public static void main(String[] args) {
        try (Graph graph = new Graph()) {
            Ops tf = Ops.create(graph);

            // Create placeholders for input values
            Placeholder<TFloat32> x = tf.placeholder(TFloat32.DTYPE);
            Placeholder<TFloat32> y = tf.placeholder(TFloat32.DTYPE);

            // Define the computation
            Mul<TFloat32> product = tf.math.mul(x, y);
            Add<TFloat32> sum = tf.math.add(product, tf.constant(1.0f));

            // Run the computation
            try (Session session = new Session(graph)) {
                Tensor<TFloat32> xValue = TFloat32.scalarOf(2.0f);
                Tensor<TFloat32> yValue = TFloat32.scalarOf(3.0f);
                Tensor<TFloat32> result = session.runner().feed(x.asOutput(), xValue).feed(y.asOutput(), yValue)
                        .fetch(sum).run().get(0).expect(TFloat32.DTYPE);

                // Print the result
                System.out.println("Result: " + result.data().getFloat());
            }
        }
    }
}

В этом примере мы создали простую модель TensorFlow, которая вычисляет выражение (x * y) + 1, используя входные заполнители x и y. Модель определяется в объекте Graph, а объект Session используется для выполнения вычислений.

Заключение

Интеграция машинного обучения в Java-приложения упрощается с помощью сред глубокого обучения, таких как Deeplearning4j и TensorFlow. В этом посте мы предоставили практическое руководство по использованию этих фреймворков в Java, а также примеры кода, которые помогут вам начать работу. Используя эти инструменты, разработчики Java могут использовать возможности машинного обучения для создания инновационных и интеллектуальных приложений.

  1. Документация Deepearning4j
  2. Документация по Java API TensorFlow

Понравилось читать? Еще не являетесь участником Medium? Вы можете поддержать мою работу напрямую, зарегистрировавшись по моей реферальной ссылке здесь. Это быстро, просто и не требует дополнительных затрат. Спасибо за вашу поддержку!