Функция, которая изменяет тензор в Tensorflow - PullRequest
1 голос
/ 01 октября 2019

У меня есть функция в numpy:

def modify_vec(old_config):
    idx = np.where(old_config != 0)[0]
    remove = np.random.choice(idx)
    old_config[remove] -= 1
    increase = np.random.randint(N)
    old_config[increase] += 1
    return old_config

, где на входе есть просто numpy вектор из N положительных целочисленных компонентов. Функция выполняет случайный выбор индекса вектора, в котором соответствующий элемент отличается от 0, затем уменьшает этот элемент на 1 и добавляет его к другому элементу, выбранному случайным образом.

Я хочусделать то же самое, используя Tensorflow (без вызова Session), где old_config - это постоянный тензор формы (1, N). У меня проблема в следующем. Я уже реализовал where в тензорном потоке следующим образом:

idx = tf.where(tf.logical_not(tf.math.equal(old_config, tf.constant(0, dtype=tf.float32))))[:, 1]

Но теперь у меня возникают проблемы при случайном выборе элемента этого нового тензора idx. Теперь этот тензор old_config нельзя изменить, поскольку он является постоянным тензором. Как я могу «скопировать» его содержимое в пустой массив или как создать еще один постоянный тензор с модификациями, которые я ожидаю от функции modify_vec? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...