Есть ли метод INDArray для добавления двух INDArray (с разным размером)? - PullRequest
0 голосов
/ 29 мая 2019

Представьте себе два INDArray:

  • a1.shape () = [2, 3] и a1 заполнен 1;

  • a2.shape () = [1, 2] и a2 заполнено 2.

Я хотел бы выполнить дополнение между ними, например:

?> result = a1.add(0, a2)
?> print(result)
[[3, 3, 1], [1, 1, 1]]
?> result = a1.add(1, a2)
?> print(result)
[[1, 1, 1], [3, 3, 1]]
?> result = a1.add(1, 1, a2)
?> print(result)
[[1, 1, 1], [1, 3, 3]]

Я попытался сначала выбрать подмассив:

?> subarray = a1.get(NDArrayIndex.interval(0, 1), NDArrayIndex.interval(0, 2))
?> print(subarray)
[1, 1]

Выполнить сложение:

?> subarray = subarray.add(a2)
?> print(subarray)
[3, 3]

Но я не могу понять, как вставить 'subarray' в 'a1' в хорошей позиции ...

Примечание: я упростил задачу ради объяснения. Обрабатываемые массивы являются 4D-массивами.

1 Ответ

0 голосов
/ 29 мая 2019

Я только что нашел следующую функцию в документации:

INDArray put(INDArrayIndex[] indices, INDArray element)

Это можно использовать следующим образом для решения этого вопроса:

a1.put(
  new INDArrayIndex[] {NDArrayIndex.interval(0, 1), NDArrayIndex.interval(0, 2)},
  subarray
);

Действительно, NDArrayIndex реализует интерфейс INDArrayIndex.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...