【问题标题】:Use dictionary on tensor在张量上使用字典
【发布时间】:2021-04-13 00:16:32
【问题描述】:

我有一个张量并想应用字典。

我正在使用 44 个类的实例分割,但尝试合并到 15 个。

我的数据在 tf.record 上,不想在每次更改类时都创建一个,所以尝试在解析器中修改它

test=tf.random.uniform(shape=(120,120), minval=0, maxval=43, dtype=tf.int32)

dict2={0:0,
      1:0,
      2:1,
      3:1,
      4:1,
      5:1,
      6:2 ,      
      7:2,
      8:2,
      9:3,
      10:3,
      11:4,
      12:4,
      13:4,
      14:5,
      15:5,
      16:5,
      17:6,
      18:7,
      19:7,
      20:7,
      21:7,
      22:8,
      23:8,
      24:8,
      25:9,
      26:9,
      27:9,
      28:9,
      29:10,
      30:10,
      31:10,
      32:10,
      33:10,
      34:11,
      35:11,
      36:12,
      37:12,
      38:12,
      39:13,
      40:13,
      41:14,
      42:14,
      43:14
      }
test2=tf.vectorized_map(dict2.get,test.ref())

错误

ValueError: Attempt to convert a value (<Reference wrapping <tf.Tensor: shape=(120, 120), dtype=int32, numpy=
array([[36, 21, 34, ...,  7,  0,  8],
       [36,  8, 32, ..., 15, 22, 35],
       [30, 37, 10, ..., 26,  3, 39],
       ...,
       [37,  6, 14, ..., 20, 36, 31],
       [34, 11, 36, ...,  8,  0,  0],
       [37,  5, 25, ..., 36, 32, 24]])>>) with an unsupported type (<class 'tensorflow.python.util.object_identity.Reference'>) to a Tensor.

【问题讨论】:

    标签: python tensorflow dictionary tensor


    【解决方案1】:

    这解决了它。

    keys = list(dict2.keys())
    values = [dict2[k] for k in keys]
    table = tf.lookup.StaticHashTable(
        tf.lookup.KeyValueTensorInitializer(keys, values),
        default_value=-1)
    test2=table.lookup(test)
    
    

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 2015-01-16
      • 2018-02-13
      • 2017-07-31
      • 2018-06-27
      • 2020-07-16
      • 2019-10-31
      • 2020-09-16
      • 2020-06-27
      相关资源
      最近更新 更多