Нарезка 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)
Пожалуйста, дайте мне знать, если это Код решает вашу проблему. Если это не так, пожалуйста, поделитесь кодом, который вы используете, чтобы мы могли продолжить расследование. Спасибо!