Browse Source

eager mode enable sparse

tags/v0.6.0-beta
panyifeng 5 years ago
parent
commit
032c5e0fdc
2 changed files with 13 additions and 8 deletions
  1. +2
    -1
      mindspore/ccsrc/pipeline/jit/static_analysis/prim.cc
  2. +11
    -7
      mindspore/common/tensor.py

+ 2
- 1
mindspore/ccsrc/pipeline/jit/static_analysis/prim.cc View File

@@ -150,7 +150,8 @@ PrimitiveEvalImplMap &GetPrimitiveToEvalImplMap() {
using mindspore::parse::PyObjectWrapper; using mindspore::parse::PyObjectWrapper;


EvalResultPtr StandardPrimEvaluator::EvalPrim(const AnalysisEnginePtr &engine, const AbstractBasePtrList &args) { EvalResultPtr StandardPrimEvaluator::EvalPrim(const AnalysisEnginePtr &engine, const AbstractBasePtrList &args) {
if (prim_ != prim::kPrimMakeTuple && prim_ != prim::kPrimSwitch) {
if (prim_ != prim::kPrimMakeTuple && prim_ != prim::kPrimSwitch && prim_ != prim::kPrimEnvSetItem &&
prim_ != prim::kPrimEnvGetItem) {
auto ret_abstract = AbstractEval(args); auto ret_abstract = AbstractEval(args);
if (ret_abstract != nullptr) { if (ret_abstract != nullptr) {
MS_LOG(DEBUG) << "StandardPrimEvaluator eval Undetermined"; MS_LOG(DEBUG) << "StandardPrimEvaluator eval Undetermined";


+ 11
- 7
mindspore/common/tensor.py View File

@@ -213,18 +213,21 @@ class IndexedSlices:
A sparse representation of a set of tensor slices at given indices. A sparse representation of a set of tensor slices at given indices.


An IndexedSlices is typically used to represent a subset of a larger An IndexedSlices is typically used to represent a subset of a larger
tensor dense of shape [LARGE0, D1, .. , DN] where LARGE0 >> D0.
tensor dense of shape [L0, D1, .. , DN] where L0 >> D0.

The values in indices are the indices in the first dimension of the slices The values in indices are the indices in the first dimension of the slices
that have been extracted from the larger tensor. that have been extracted from the larger tensor.

The dense tensor dense represented by an IndexedSlices slices has The dense tensor dense represented by an IndexedSlices slices has
`dense[slices.indices[i], :, :, :, ...] = slices.values[i, :, :, :, ...]`. `dense[slices.indices[i], :, :, :, ...] = slices.values[i, :, :, :, ...]`.

IndexedSlices can only be used in `Cell`'s contruct method. IndexedSlices can only be used in `Cell`'s contruct method.


Args: Args:
indices (Tensor): A 1-D integer Tensor of shape [D0]. indices (Tensor): A 1-D integer Tensor of shape [D0].
values (Tensor): A Tensor of any dtype of shape [D0, D1, ..., Dn]. values (Tensor): A Tensor of any dtype of shape [D0, D1, ..., Dn].
dense_shape: (tuple): A integer tuple containing the shape
of the corresponding dense tensor.
dense_shape (tuple): A integer tuple containing the shape
of the corresponding dense tensor.


Outputs: Outputs:
IndexedSlices, composed of `indices`, `values`, `dense_shape`. IndexedSlices, composed of `indices`, `values`, `dense_shape`.
@@ -250,17 +253,18 @@ class SparseTensor:
A sparse representation of a set of nonzero elememts from a tensor at given indices. A sparse representation of a set of nonzero elememts from a tensor at given indices.


SparseTensor can only be used in `Cell`'s contruct method. SparseTensor can only be used in `Cell`'s contruct method.

For a tensor dense, its SparseTensor(indices, values, dense_shape) has For a tensor dense, its SparseTensor(indices, values, dense_shape) has
`dense[indices[i]] = values[i]`
`dense[indices[i]] = values[i]`.


Args: Args:
indices (Tensor): A 2-D integer Tensor of shape `[N, ndims]`, indices (Tensor): A 2-D integer Tensor of shape `[N, ndims]`,
where N and ndims are the number of values and number of dimensions in where N and ndims are the number of values and number of dimensions in
the SparseTensor, respectively. the SparseTensor, respectively.
values (Tensor): A 1-D tensor of any type and shape `[N]`, which values (Tensor): A 1-D tensor of any type and shape `[N]`, which
supplies the values for each element in indices.
dense_shape: (tuple): A integer tuple of size `ndims`,
which specifies the dense_shape of the sparse tensor.
supplies the values for each element in indices.
dense_shape (tuple): A integer tuple of size `ndims`,
which specifies the dense_shape of the sparse tensor.


Outputs: Outputs:
SparseTensor, composed of `indices`, `values`, `dense_shape`. SparseTensor, composed of `indices`, `values`, `dense_shape`.


Loading…
Cancel
Save