Я читаю текстовый файл через API данных и преобразовываю текст в TFRecords. Когда я читаю записи построчно, я получаю разреженную матрицу ранга 2, которую легко преобразовать в RaggedTensor с помощью tf.RaggedTensor.from_sparse
. Однако, когда я читаю записи в партии размером 10, результирующий разреженный тензор имеет ранг 3. В документации написано, что tf.RaggedTensor.from_sparse
работает только с разреженными тензорами ранга 2. Есть ли способ создания RaggedTensors из разреженный тензор ранга 3? Я попытался tf.sparse.reshape
и попытался удалить ось = 1. Это было успешно, так как я смог напечатать вывод. Но это кажется немного хакерским sh способом, и я ищу что-то более tenorflow-i sh. Пример для воспроизведения моего случая выглядит следующим образом: -
При чтении tfrecords построчно
indices = array([[ 0, 0],
[ 0, 1],
[ 0, 2],
[ 0, 3],
[ 0, 4],
[ 0, 5],
[ 0, 6],
[ 0, 7],
[ 0, 8],
[ 0, 9],
[ 0, 10]], dtype=int64)
values = array([b'What', b'interesting', b'fact', b'about', b'India', b'can',
b'you', b'add', b'to', b'my', b'knowledge?'], dtype=object)
dense_shape=array([ 1, 11], dtype=int64)
tf.RaggedTensor.from_sparse(tf.SparseTensor(indices=indices,values=values,dense_shape=dense_shape))
дает
`<tf.RaggedTensor [[b'What', b'interesting', b'fact', b'about', b'India', b'can', b'you', b'add', b'to', b'my', b'knowledge?']]>`
2. При чтении партии размером 1 (фактический размер партии был 10, но это стало бы слишком громоздким):
`indices=array([[ 0, 0, 0],
[ 0, 0, 1],
[ 0, 0, 2],
[ 0, 0, 3],
[ 0, 0, 4],
[ 0, 0, 5],
[ 0, 0, 6],
[ 0, 0, 7],
[ 0, 0, 8],
[ 0, 0, 9],
[ 0, 0, 10]], dtype=int64)`<br/>
`values=array([b'What', b'interesting', b'fact', b'about', b'India', b'can',
b'you', b'add', b'to', b'my', b'knowledge?'], dtype=object)`<br/>
`dense_shape=array([ 1, 1, 11], dtype=int64)`<br/><br/>
`tf.RaggedTensor.from_sparse(tf.SparseTensor(indices=indices,values=values,dense_shape=dense_shape))`
выдает ошибку
`ValueError: rank(st_input) must be 2`
Однако, используя утверждение tf.sparse.reshape(tf.SparseTensor(indices=indices,values=values,dense_shape=dense_shape),shape=[1,11])
устраняет эту проблему.
Извинения за небрежное редактирование.