#include "is_empty_op.h" namespace caffe2 { REGISTER_CPU_OPERATOR(IsEmpty, IsEmptyOp); OPERATOR_SCHEMA(IsEmpty) .NumInputs(1) .NumOutputs(1) .SetDoc(R"DOC( The *IsEmpty* op accepts a single input $tensor$, and produces a single boolean output $is\_empty$. The output is *True* if and only if $tensor$ has size == 0. Github Links: - https://github.com/caffe2/caffe2/blob/master/caffe2/operators/utility_ops.cc - https://github.com/caffe2/caffe2/blob/master/caffe2/operators/utility_ops.h
Example **Code** ``` workspace.ResetWorkspace() op = core.CreateOperator( "IsEmpty", ["tensor"], ["is_empty"], ) // Use a not-empty tensor workspace.FeedBlob("tensor", np.random.randn(2, 2).astype(np.float32)) print("tensor:\n", workspace.FetchBlob("tensor")) workspace.RunOperatorOnce(op) print("is_empty: ", workspace.FetchBlob("is_empty"),"\n") // Use an empty tensor workspace.FeedBlob("tensor", np.empty(0)) print("tensor:\n", workspace.FetchBlob("tensor")) workspace.RunOperatorOnce(op) print("is_empty: ", workspace.FetchBlob("is_empty")) ``` **Result** ``` tensor: [[ 0.26018378 0.6778789 ] [-1.3097627 -0.40083608]] is_empty: False tensor: [] is_empty: True ```
)DOC") .ScalarType(::caffe2::TensorProto_DataType::TensorProto_DataType_BOOL) .Input(0, "tensor", "Input data tensor to check if empty.") .Output( 0, "is_empty", "Output scalar boolean tensor. True if input has size == 0."); } // namespace caffe2