Присвоить значения тензору на основе значений другого тензора - PullRequest
0 голосов
/ 11 июня 2019

Предположим, у меня есть два тензора:

import keras as K
import tensorflow as tf

A=K.zeros((4,4))    
T=K.constant([0,1,2,2]) 

#do something

#expected result: 1 starting at the index in tensor T
'''
array([[1, 1, 1, 1],      <-- 1 starting at index(column) 0
   [0, 1, 1, 1],          <-- 1 starting at index(column) 1
   [0, 0, 1, 1],          <-- 1 starting at index(column) 2
   [0, 0, 1, 1]])         <-- 1 starting at index(column) 2

'''

Идея состоит в том, чтобы присвоить 1 тензору A, начиная с индекса, содержащегося в тензоре T. Любые подсказки?

Спасибо

1 Ответ

2 голосов
/ 11 июня 2019

Вам нужно tf.sequence_mask.

import keras.backend as K
import tensorflow as tf

A= K.zeros((4,4))
T= K.constant([0,1,2,2])

mask = tf.sequence_mask(T,A.shape[-1])
# [[False False False False]
#  [ True False False False]
#  [ True  True False False]
#  [ True  True False False]]
result = tf.where(mask,A,tf.ones_like(A))

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(result))

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