fluxo tensor:: ops:: TakeManySparseFromTensorsMap
#include <sparse_ops.h>
Converte uma representação esparsa em um tensor denso.
Resumo
Constrói um array dense
com formato output_shape
tal que
Se sparse_indices for escalar
denso[i] = (i == índices_esparsos? valores_esparsos: valor_padrão)
Se sparse_indices for um vetor, então para cada i
denso[índices_esparsos[i]] = valores_esparsos[i]
Se sparse_indices for uma matriz n por d, então para cada i em [0, n)
denso[índices_esparsos[i][0], ..., índices_esparsos[i][d-1]] = valores_esparsos[i]
All other values in `dense` are set to `default_value`. If `sparse_values` is a
scalar, all sparse indices are set to this single value. Indices should be sorted in lexicographic order, and indices must not contain any repeats. If `validate_indices` is true, these properties are checked during execution. Arguments: * scope: A Scope object * sparse_indices: 0-D, 1-D, or 2-D. `sparse_indices[i]` contains the complete index where `sparse_values[i]` will be placed. * output_shape: 1-D. Shape of the dense output tensor. * sparse_values: 1-D. Values corresponding to each row of `sparse_indices`, or a scalar value to be used for all sparse indices. * default_value: Scalar value to set for indices not specified in `sparse_indices`. Optional attributes (see `Attrs`): * validate_indices: If true, indices are checked to make sure they are sorted in lexicographic order and that there are no repeats. Returns: * `Output`: Dense output tensor of shape `output_shape`. */ class SparseToDense { public: /// Optional attribute setters for SparseToDense struct Attrs { /** If true, indices are checked to make sure they are sorted in lexicographic order and that there are no repeats. Defaults to true */ TF_MUST_USE_RESULT Attrs ValidateIndices(bool x) { Attrs ret = *this; ret.validate_indices_ = x; return ret; } bool validate_indices_ = true; }; SparseToDense(const tensorflow::Scope& scope, tensorflow::Input sparse_indices, tensorflow::Input output_shape, tensorflow::Input sparse_values, tensorflow::Input default_value); SparseToDense(const tensorflow::Scope& scope, tensorflow::Input sparse_indices, tensorflow::Input output_shape, tensorflow::Input sparse_values, tensorflow::Input default_value, const SparseToDense::Attrs& attrs); operator ::tensorflow::Output() const { return dense; } operator ::tensorflow::Input() const { return dense; } ::tensorflow::Node* node() const { return dense.node(); } static Attrs ValidateIndices(bool x) { return Attrs().ValidateIndices(x); } Operation operation; tensorflow::Output dense; };/** Read `SparseTensors` from a `SparseTensorsMap` and concatenate them.
The input `sparse_handles` must be an `int64` matrix of shape `[N, 1]` where `N` is the minibatch size and the rows correspond to the output handles of `AddSparseToTensorsMap` or `AddManySparseToTensorsMap`. The ranks of the original `SparseTensor` objects that went into the given input ops must all match. When the final `SparseTensor` is created, it has rank one higher than the ranks of the incoming `SparseTensor` objects (they have been concatenated along a new row dimension on the left). The output `SparseTensor` object's shape values for all dimensions but the first are the max across the input `SparseTensor` objects' shape values for the corresponding dimensions. Its first shape value is `N`, the minibatch size. The input `SparseTensor` objects' indices are assumed ordered in standard lexicographic order. If this is not the case, after this step run `SparseReorder` to restore index ordering. For example, if the handles represent an input, which is a `[2, 3]` matrix representing two original `SparseTensor` objects: index = [ 0] [10] [20] values = [1, 2, 3] shape = [50]