Я использую Python 3.7 и TensorFlow 2.0, и у меня есть тензор формы (5, 3). Теперь в этом тензоре я хочу отсортировать веса в каждом слое по их абсолютным значениям и замаскировать на ноль веса наименьшей величины, скажем, для 20% значений.
Итак, 20% тензора, имеющего форму: (5, 3) = 3. Поэтому я хочу замаскировать эти 3 наименьших значения магнитуды в тензоре в ноль.
Код, который у меня есть, на самом деле не работает, так как я сначала пытаюсь преобразовать тензор в numpy массив и затем удалить 20% наименьшего веса. Тем не менее, это удаляет наименьшие значения и не принимает абсолютное значение чисел, что я и хочу.
Код:
x = tf.random.uniform(minval=-10, maxval=10, shape=(5, 3), dtype=tf.float32)
# Convert from tensor to numpy array-
x_tf = x.numpy()
# remove smallest 20% of numbers-
x_tf[x_tf < np.percentile(x_tf, 20)] = 0
Есть ли способ маскировать Наименьшие значения магнитуд в тензоре 'x'?
Спасибо!