Как рассчитать евклидово расстояние между двумя тензорами в Tensor Java 0.5.0JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как рассчитать евклидово расстояние между двумя тензорами в Tensor Java 0.5.0

Сообщение Anonymous »

Как рассчитать евклидово расстояние между двумя тензорами в Tensorflow Java 0.5.0?
Это мой код:

Код: Выделить всё

public static float[] getFloat(DataBuffer data) {
float[] res = new float[(int) data.size()];

for (int i = 0; i < data.size(); i++) {
res[i] = data.getObject(i); // Copy each Float element into float[]
}
return res;
}

public static void main(String[] args) {
try (SavedModelBundle model = SavedModelBundle.load("C:\\Users\\User\\Documents\\TensorflowProject\\Model\\model", "serve")) {
Graph graph = model.graph();
try(Session session = model.session()) {
Ops tf = Ops.create(graph);

Tensor result = session.runner()
.feed("serve_input_layer:0", readImage("C:\\Users\\User\\Documents\\TensorflowProject\\TrainData\\image.jpg"))
.fetch("StatefulPartitionedCall:0").run().get(0);
DataBuffer data = result.asRawTensor().data().asFloats();

Tensor result2 = session.runner()
.feed("serve_input_layer:0", readImage("C:\\Users\\User\\Documents\\TensorflowProject\\TrainData\\image.jpg"))
.fetch("StatefulPartitionedCall:0").run().get(0);
DataBuffer data2 = result2.asRawTensor().data().asFloats();

Sub diff = tf.math.sub(tf.constant(getFloat(data)), tf.constant(getFloat(data2)));
Tensor diffTensor = session.runner().fetch(diff).run().get(0);
System.out.println("Difference: " + diffTensor.asRawTensor().data().asFloats().getObject(0));

Square square = tf.math.square(diff);
Tensor squareTensor = session.runner().fetch(square).run().get(0);
System.out.println("Square: " + squareTensor.asRawTensor().data().asFloats().getObject(0));

Sqrt sqrt = tf.math.sqrt(square);
Tensor distance = session.runner().fetch(sqrt).run().get(0);
System.out.println("Distance: " + distance.asRawTensor().data().asFloats().getObject(0));

} catch (IOException e) {
throw new RuntimeException(e);
}

}
}
Это мой результат:

Код: Выделить всё

Difference: 3.9829087E35
Square: Infinity
Distance: Infinity
Почему это происходит? Я так расстроен, что хочу использовать tf.math, потому что хочу использовать мощность графического процессора вместо мощности процессора, поэтому, пожалуйста, не просите меня сделать что-то вроде этого:

Код: Выделить всё

public static double calculateDistance(float[] arr1, float[] arr2) {
if (arr1.length != arr2.length) {
throw new IllegalArgumentException("Both arrays must have the same length.");
}

double sum = 0.0;

for (int i = 0; i < arr1.length; i++) {
double diff = arr1[i] - arr2[i];
sum += Math.pow(diff, 2);
}

return Math.sqrt(sum);
}
Приведенный выше код работал так, как задумано, но, как я уже сказал, я не хочу использовать мощность процессора.
это мой pom.xml:< /p>

Код: Выделить всё

org.tensorflow
tensorflow-core-platform-gpu
0.5.0

Пожалуйста, помогите мне, я пытался это сделать уже 2 дня, но ничего не получилось.
Я искренне прошу помощи, пожалуйста, спасибо :)
п>

Подробнее здесь: https://stackoverflow.com/questions/790 ... java-0-5-0
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»