Как сгенерировать 2D-тензор из тензорного 2D-тензора с получением элементов только при индексах (16n 1) вдоль оси=1 (где n=1,2,3……)

#python #tensorflow #machine-learning #keras #deep-learning

Вопрос:

 def my_loss_fn(y_true, y_pred):
     squared_difference = tf.math.abs(y_true - y_pred)
     squared_difference=tf.math.reduce_sum(squared_difference,axis=-1)
     return tf.reduce_mean(squared_difference, axis=-1)

def create_model():
     pretrained_model = tf.keras.applications.MobileNetV2(input_shape=(256,256, 3),include_top=False,weights='imagenet',pooling='max')
     pretrained_model.trainable = False
     for layer in pretrained_model.layers[len(pretrained_model.layers)-5:]:
         layer.trainable = True
     inputs = pretrained_model.input
     x=tf.keras.layers.Flatten()(pretrained_model.output)
     outputs=tf.keras.layers.Dense(8192, activation='relu')(x)
     model = tf.keras.Model(inputs=inputs, outputs=outputs)
     model.compile(optimizer='adam',loss=my_loss_fn,metrics=['accuracy'])
     return model
 

Выходной тензор имеет форму (64 8192), где 64-размер пакета. Мне нужно проверить, равно ли положение индекса 16n 0 или нет, если не равно нулю, то вычислите ошибку (только для n, где 16n не было равно нулю) позиций (16n 1,16 n 2,16 n 3……), а затем суммируйте ошибку и возьмите среднее значение для всех 64