Add C++ ops IdentityN and Exp.

PiperOrigin-RevId: 333329699
Change-Id: I6dd2e2d1feef88da26bc28a8cdcb9de4eb73fbcc
This commit is contained in:
Saurabh Saxena 2020-09-23 11:06:45 -07:00 committed by TensorFlower Gardener
parent 87b784f413
commit 6bf1d8a233
4 changed files with 30 additions and 0 deletions

View File

@ -34,6 +34,18 @@ Status Identity(AbstractContext* ctx,
return identity_op->Execute(outputs, &num_retvals);
}
Status IdentityN(AbstractContext* ctx,
absl::Span<AbstractTensorHandle* const> inputs,
absl::Span<AbstractTensorHandle*> outputs, const char* name) {
AbstractOperationPtr identity_n_op(ctx->CreateOperation());
TF_RETURN_IF_ERROR(
identity_n_op->Reset("IdentityN", /*raw_device_name=*/nullptr));
TF_RETURN_IF_ERROR(MaybeSetOpName(identity_n_op.get(), name));
TF_RETURN_IF_ERROR(identity_n_op->AddInputList(inputs));
int num_retvals = inputs.size();
return identity_n_op->Execute(outputs, &num_retvals);
}
Status ZerosLike(AbstractContext* ctx,
absl::Span<AbstractTensorHandle* const> inputs,
absl::Span<AbstractTensorHandle*> outputs, const char* name) {

View File

@ -26,6 +26,10 @@ Status Identity(AbstractContext* ctx,
absl::Span<AbstractTensorHandle* const> inputs,
absl::Span<AbstractTensorHandle*> outputs, const char* name);
Status IdentityN(AbstractContext* ctx,
absl::Span<AbstractTensorHandle* const> inputs,
absl::Span<AbstractTensorHandle*> outputs, const char* name);
Status ZerosLike(AbstractContext* ctx,
absl::Span<AbstractTensorHandle* const> inputs,
absl::Span<AbstractTensorHandle*> outputs, const char* name);

View File

@ -133,5 +133,16 @@ Status DivNoNan(AbstractContext* ctx,
return Status::OK();
}
Status Exp(AbstractContext* ctx, absl::Span<AbstractTensorHandle* const> inputs,
absl::Span<AbstractTensorHandle*> outputs, const char* name) {
AbstractOperationPtr exp_op(ctx->CreateOperation());
TF_RETURN_IF_ERROR(exp_op->Reset("Exp", /*raw_device_name=*/nullptr));
TF_RETURN_IF_ERROR(MaybeSetOpName(exp_op.get(), name));
TF_RETURN_IF_ERROR(exp_op->AddInput(inputs[0]));
int num_retvals = 1;
return exp_op->Execute(outputs, &num_retvals);
}
} // namespace ops
} // namespace tensorflow

View File

@ -47,6 +47,9 @@ Status Sub(AbstractContext* ctx, absl::Span<AbstractTensorHandle* const> inputs,
Status DivNoNan(AbstractContext* ctx,
absl::Span<AbstractTensorHandle* const> inputs,
absl::Span<AbstractTensorHandle*> outputs, const char* name);
Status Exp(AbstractContext* ctx, absl::Span<AbstractTensorHandle* const> inputs,
absl::Span<AbstractTensorHandle*> outputs, const char* name);
} // namespace ops
} // namespace tensorflow