Tensorflow, как транслировать в пакетное измерение?

#python #tensorflow

#питон #тензорный поток

Вопрос:

Мне нужна функция, которая может менять местами элементы по размерности пакета x и y с вероятностью p. Я могу сделать это просто, если предположу, что x и y являются партиями изображений и имеют постоянный ранг 4. Каков самый простой способ заставить это работать для тензоров произвольного ранга? Я могу придумать несколько грубых решений, но я чувствую, что должно быть что-то проще. В принципе, я хочу транслировать s по первому измерению, а не по последнему.

 @tf.function def random_swap(x, y, p):  s = tf.random.uniform(tf.shape(x)[0:1]) lt;= p  s = tf.reshape(s, (-1, 1, 1, 1))  return tf.where(s, y, x), tf.where(s, x, y)