Создайте тензор со случайным индексом, равным нулю

Теперь у меня есть тензор random_row, и я хочу создать новый тензор, форма которого известна как 2-мерная, и его random_row должен быть равен нулю, а все остальные строки должны быть единицами, например

random_row = [1, 3]  # random_row is a tensor itself

# new_tensor needs to be another tensor whose row in random_row to be all zeros
# we already know new_tensor's shape to be (4, 2)
new_tensor = [[1, 1], [0, 0], [1, 1], [0, 0]]

Как я могу этого добиться? Очень признателен, если кто-то может помочь!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
105
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сделать это с помощью такой функции:

import tensorflow as tf

def zero_rows(x, idx)
    # Turn row indices into a boolean mask
    n = tf.shape(x)[0]
    m = tf.scatter_nd(tf.expand_dims(idx, 1), tf.ones_like(idx, dtype=tf.bool), [n])
    # Select zeros where the indices are or the data elsewhere
    return tf.where(m, tf.zeros_like(x), x)

# Test
with tf.Graph().as_default(), tf.Session() as sess:
    y = zero_rows(x, idx)
    print(sess.run(y, feed_dict = {x: [[1, 2], [3, 4], [5, 6], [7, 8]], idx: [1, 3]}))
    # [[1 2]
    #  [0 0]
    #  [5 6]
    #  [0 0]]

Другие вопросы по теме