Add C++ ops IdentityN and Exp.
PiperOrigin-RevId: 333329699 Change-Id: I6dd2e2d1feef88da26bc28a8cdcb9de4eb73fbcc
This commit is contained in:
parent
87b784f413
commit
6bf1d8a233
@ -34,6 +34,18 @@ Status Identity(AbstractContext* ctx,
|
|||||||
return identity_op->Execute(outputs, &num_retvals);
|
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,
|
Status ZerosLike(AbstractContext* ctx,
|
||||||
absl::Span<AbstractTensorHandle* const> inputs,
|
absl::Span<AbstractTensorHandle* const> inputs,
|
||||||
absl::Span<AbstractTensorHandle*> outputs, const char* name) {
|
absl::Span<AbstractTensorHandle*> outputs, const char* name) {
|
||||||
|
@ -26,6 +26,10 @@ Status Identity(AbstractContext* ctx,
|
|||||||
absl::Span<AbstractTensorHandle* const> inputs,
|
absl::Span<AbstractTensorHandle* const> inputs,
|
||||||
absl::Span<AbstractTensorHandle*> outputs, const char* name);
|
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,
|
Status ZerosLike(AbstractContext* ctx,
|
||||||
absl::Span<AbstractTensorHandle* const> inputs,
|
absl::Span<AbstractTensorHandle* const> inputs,
|
||||||
absl::Span<AbstractTensorHandle*> outputs, const char* name);
|
absl::Span<AbstractTensorHandle*> outputs, const char* name);
|
||||||
|
@ -133,5 +133,16 @@ Status DivNoNan(AbstractContext* ctx,
|
|||||||
return Status::OK();
|
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 ops
|
||||||
} // namespace tensorflow
|
} // namespace tensorflow
|
||||||
|
@ -47,6 +47,9 @@ Status Sub(AbstractContext* ctx, absl::Span<AbstractTensorHandle* const> inputs,
|
|||||||
Status DivNoNan(AbstractContext* ctx,
|
Status DivNoNan(AbstractContext* ctx,
|
||||||
absl::Span<AbstractTensorHandle* const> inputs,
|
absl::Span<AbstractTensorHandle* const> inputs,
|
||||||
absl::Span<AbstractTensorHandle*> outputs, const char* name);
|
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 ops
|
||||||
} // namespace tensorflow
|
} // namespace tensorflow
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user