簡體   English   中英

我在一個張量中有索引,在另一個張量中有值。 我如何用這個創建一個新的張量?

[英]I have indices in one tensor and values in another. How do I create a new tensor with this?

說我的指數是:

indices = [6, 9, 2],
          [2, 2, 7],
          [0, 8, 4]

我的價值觀是:

values = [0.35764236, 0.47342054, 0.61403205, 0.01948093, 0.21791322,
       0.53855718, 0.93596267, 0.3948243 , 0.22061542, 0.09633507]

然后在 numpy 我可以簡單地做

new_array = values[indices]

要得到:

new_array = [0.93596267, 0.09633507, 0.61403205]
            [0.61403205, 0.61403205, 0.3948243 ]
            [0.35764236, 0.22061542, 0.21791322]

這似乎在 tensorflow 中不起作用 2. 我既不能使用循環來賦值,也不能轉換為 numpy,因為我在 model.call 中。 在 tensorflow 中是否有一種簡單的方法可以做到這一點。

有一些簡單的方法。

indices = [[6, 9, 2],
          [2, 2, 7],
          [0, 8, 4]]

values = [0.35764236, 0.47342054, 0.61403205, 0.01948093, 0.21791322,
       0.53855718, 0.93596267, 0.3948243 , 0.22061542, 0.09633507]

print(tf.gather(values,indices))

Output:

tf.Tensor(
[[0.9359627  0.09633507 0.61403203]
 [0.61403203 0.61403203 0.3948243 ]
 [0.35764235 0.22061542 0.21791323]], shape=(3, 3), dtype=float32)

您還可以分配和切片。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM