Как нарезать RaggedTensor в Tensorflow - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть RaggedTensor, который я пытаюсь нарезать:

batch_size_t = 4
ragged = tf.ragged.constant([[3, 1, 4, 1], [1, 2], [5, 9, 2], [6]])
tf.slice(ragged, [0, 0], [batch_size_t, 3])

Однако tf.slice не похоже на рваные тензоры:

---------------------------------------------------------------------------
_FallbackException                        Traceback (most recent call last)
/anaconda3/envs/ml/lib/python3.6/site-packages/tensorflow_core/python/ops/gen_array_ops.py in _slice(input, begin, size, name)
   8438         _ctx._context_handle, tld.device_name, "Slice", name,
-> 8439         tld.op_callbacks, input, begin, size)
   8440       return _result

...

/anaconda3/envs/ml/lib/python3.6/site-packages/tensorflow_core/python/framework/constant_op.py in convert_to_eager_tensor(value, ctx, dtype)
     94       dtype = dtypes.as_dtype(dtype).as_datatype_enum
     95   ctx.ensure_initialized()
---> 96   return ops.EagerTensor(value, ctx.device_name, dtype)
     97 
     98 

ValueError: TypeError: object of type 'RaggedTensor' has no len()

Есть ли способ нарезать рваные тензоры, чтобы я мог обрезать длину внутренних размеров?

1 Ответ

1 голос
/ 02 апреля 2020

Если вам нужен простой непрерывный фрагмент вашего рваного тензора, вы можете просто использовать стандартное индексирование,

batch_size_t = 4
ragged = tf.ragged.constant([[3, 1, 4, 1], [1, 2], [5, 9, 2], [6]])
sliced_ragged = ragged[:batch_size_t,:3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...