Тензорный доступ к тензору с тензорным индексом - PullRequest
1 голос
/ 01 мая 2020

У меня есть тензор T с формой (A,?, B, C). У меня также есть тензорный индекс, который я определил как I = tf.argmax (что-то). Я хочу определить T (I,?,:, :). Операция T (I,:,:, :) работает хорошо, когда индекс I является не тензорным объектом, а целым числом. Как это сделать, когда я тензор = tf.argmax?

1 Ответ

0 голосов
/ 04 мая 2020

Нарезка Tensor, T(I,:,:,:) с I, являющимся Tensor, и Integer, кажется, прекрасно работает с Tensorflow version 2.1.

. Ниже упомянут код, который использует Tensor с формой (A, ?, B, C), который срезы T(I,:,:,:), использующие как значение тензора tf.argmax, так и целочисленное значение tf.argmax.

%tensorflow_version 2.x
import tensorflow as tf
import numpy as np

b = np.ones(shape = (2,3,3,4))

a = tf.Variable(b, shape = (2,None, 3,4), dtype = tf.int32)

l = [166.32, 10, 26.9, 2.8, 1, 62.3]
b = tf.math.argmax(input = l)
c = tf.keras.backend.eval(b)
print('b = {} and c = {}'.format(b,c))

a = tf.ones(shape = (2,5,3,4))

Arg_Max_Tensor_Val = a[b,:,:,:]
Arg_Max_Int_Val = a[c,:,:,:]

print(Arg_Max_Int_Val)
print(Arg_Max_Tensor_Val)

Ниже приводится вывод:

tf.Tensor(
[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]], shape=(5, 3, 4), dtype=float32)

tf.Tensor(
[[[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]

 [[1. 1. 1. 1.]
  [1. 1. 1. 1.]
  [1. 1. 1. 1.]]], shape=(5, 3, 4), dtype=float32)

Пожалуйста, дайте мне знать, если это Код решает вашу проблему. Если это не так, пожалуйста, поделитесь кодом, который вы используете, чтобы мы могли продолжить расследование. Спасибо!

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