tf.compat.v1.sparse_merge
Объединяет пакет идентификаторов и значений функций в один SparseTensor. (устарело)
tf.compat.v1.sparse_merge(
sp_ids, sp_values, vocab_size, name=None, already_sorted=False
)
Наиболее распространенный случай использования этой функции возникает, когда идентификаторы функций и соответствующие им значения хранятся в Example протоколах на диске. parse_example вернет пакет идентификаторов и пакет значений, а эта функция объединит их в один логический SparseTensor для использования в таких функциях, как sparse_tensor_dense_matmul, sparse_to_dense и т. д.
У SparseTensor, возвращаемого этой функцией, есть следующие свойства:
-
indicesэквивалентноsp_ids.indicesс отброшенным последним измерением и заменой наsp_ids.values. -
valuesпростоsp_values.values. - Если
sp_ids.dense_shape = [D0, D1, ..., Dn, K], тоoutput.shape = [D0, D1, ..., Dn, vocab_size].
Например, рассмотрим следующие векторы функций:
vector1 = [-3, 0, 0, 0, 0, 0] vector2 = [ 0, 1, 0, 4, 1, 0] vector3 = [ 5, 0, 0, 9, 0, 0]
Они могут храниться разреженно в следующих примерах протоколов, храня только идентификаторы функций (номер столбца, если векторы рассматриваются как матрица) ненулевых элементов и соответствующие значения:
examples = [Example(features={
"ids": Feature(int64_list=Int64List(value=[0])),
"values": Feature(float_list=FloatList(value=[-3]))}),
Example(features={
"ids": Feature(int64_list=Int64List(value=[1, 4, 3])),
"values": Feature(float_list=FloatList(value=[1, 1, 4]))}),
Example(features={
"ids": Feature(int64_list=Int64List(value=[0, 3])),
"values": Feature(float_list=FloatList(value=[5, 9]))})]
Результат вызова parse_example для этих примеров даст словарь со входами "ids" и "values". Передача этих двух объектов в эту функцию вместе с vocab_size=6 даст SparseTensor, который разреженно представляет все три экземпляра. А именно, свойство indices будет содержать координаты ненулевых элементов в матрице признаков (первое измерение — номер строки в матрице, то есть индекс в пакете, а второе измерение — номер столбца, то есть идентификатор признака); values будет содержать фактические значения. shape будет формой исходной матрицы, то есть (3, 6). В нашем примере выше вывод будет равен:
SparseTensor(indices=[[0, 0], [1, 1], [1, 3], [1, 4], [2, 0], [2, 3]],
values=[-3, 1, 4, 1, 5, 9],
dense_shape=[3, 6])
Этот метод обобщается на более высокие измерения, просто предоставив список как для sp_ids, так и для vocab_size. В этом случае результирующий SparseTensor имеет следующие свойства:
-
indicesэквивалентноsp_ids[0].indicesс отброшенным последним измерением и конкатенацией сsp_ids[0].values, sp_ids[1].values, .... -
valuesпростоsp_values.values. - Если
sp_ids.dense_shape = [D0, D1, ..., Dn, K], тоoutput.shape = [D0, D1, ..., Dn] + vocab_size.
| Аргументы | |
|---|---|
sp_ids | Одиночный SparseTensor со свойством values типа int32 или int64 или список таких SparseTensor или список списков. |
sp_values | SparseTensor любого типа. |
vocab_size | Скалярный int64 тензор (или целое число Python) содержащий новый размер последнего измерения, all(0 <= sp_ids.values < vocab_size). Или список таких со all(0 <= sp_ids[i].values < vocab_size[i]) для всех i. |
name | Префикс имени для возвращаемых тензоров (необязательно) |
already_sorted | Булево значение, указывающее, отсортированы ли значения по каждому пакету в sp_values. Если да, пропустить сортировку, по умолчанию False (необязательно). |
| Возвращаемое значение | |
|---|---|
SparseTensor компактно представляющий пакет идентификаторов и значений функций, удобный для передачи функциям, которые ожидают такой SparseTensor. |
| Исключения | |
|---|---|
TypeError | Если sp_values не является SparseTensor. Или если sp_ids не является SparseTensor или списком таких. Или если vocab_size не является Tensor или целым числом Python, а sp_ids является списком SparseTensor. Или если vocab_size не является или списком, а sp_ids является списком. |
ValueError | Если sp_ids и vocab_size являются списками разной длины. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/compat/v1/sparse_merge