![](/img/trans.png)
[英]TypeError: 'tensorflow.python.framework.ops.EagerTensor' object does not support item assignment
[英]Item Assignment Tensorflow 2.0 - TypeError: 'tensorflow.python.framework.ops.EagerTensor' object does not support item assignment
我正在使用 Tensorflow 2.0,並試圖更新我的張量中的切片。
使用 PyTorch 中的普通項目分配,它不起作用。
import tensorflow as tf
tensor = tf.ones((10, 192, 85))
tensor[:, :, 0] = tf.math.sigmoid([:, :, 0])
>>> Output
TypeError: 'tensorflow.python.framework.ops.EagerTensor' object does not support item assignment
我看到可以使用tf.tensor_scatter_nd_update
,但是感覺太冗長以至於效率不高,因為我必須單獨導出要更新的索引。 因此,我不確定這是否是在熱切張量中進行項目分配的最佳方式(我需要下面的代碼塊來實現上面更簡單的“PyTorch 2-liner style”):
import tensorflow as tf
def get_indices(tensor):
indices = []
for i in range(tensor.shape[0]):
for j in range(tensor.shape[1]):
indices.append([i, j, 0])
return tf.convert_to_tensor(indices)
tensor = tf.ones((10, 192, 85))
indices = get_indices(tensor)
updates = tf.reshape(tf.math.sigmoid(tensor[:, :, 0]), (-1,))
tensor = tf.tensor_scatter_nd_update(tensor, indices, updates)
在 Tensorflow 2.0 中是否有更簡單/更有效的方法來進行EagerTensor
的項目分配?
你可以這樣做:
tensor = tf.ones((10, 192, 85))
tensor = tf.concat([tf.math.sigmoid(tensor[:,:,0:1]), tensor[:,:,1:]], axis=2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.