В заголовке 2 вопроса.Меня смущают оба вопроса, потому что тензор потока - это такой статический язык программирования (я действительно хочу вернуться либо к pytorch, либо к цепочке).
Я привожу 2 примера.пожалуйста, ответьте мне в кодах тензорного потока или предоставив соответствующие ссылки на функции.
1) tf.where ()
data0 = tf.zeros([2, 3, 4], dtype = tf.float32)
data1 = tf.ones([2, 3, 4], dtype = tf.float32)
cond = tf.constant([[0, 1, 1], [1, 0, 0]])
# cond.shape == (2, 3)
# tf.where() works for 1d condition with 2d data,
# but not for 2d indices with 3d tensor
# currently, what I am doing is:
# cond = tf.stack([cond] * 4, 2)
data = tf.where(cond > 0, data1, data0)
# data should be [[0., 1., 1.], [1., 0., 0.]]
(я не знаю, как транслировать cond в 3d тензор)
2) изменить элемент в 2d тензоре
# all dtype == tf.int64
t2d = tf.Variable([[0, 1, 2], [3, 4, 5]])
k, v = tf.constant([[0, 2], [1, 0]]), tf.constant([-2, -3])
# TODO: change values at positions k to v
# I cannot do [t2d.copy()[i] = j for i, j in k, v]
t3d == [[[0, 1, -2], [3, 4, 5]],
[[0, 1, 2], [-3, 4, 5]]]
Заранее большое спасибо.XD