added HistogramSummary to C API and removed C++ Histogram Summary. All tests pass
diff --git a/tensorflow/c/kernels/BUILD b/tensorflow/c/kernels/BUILD
index 45102ad..ee283d0 100644
--- a/tensorflow/c/kernels/BUILD
+++ b/tensorflow/c/kernels/BUILD
@@ -54,11 +54,8 @@
deps = [
"//tensorflow/c:kernels",
"//tensorflow/c:ops",
- "//tensorflow/c:tf_datatype",
- "//tensorflow/c:tf_status",
"//tensorflow/c:tf_tensor",
"//tensorflow/core:framework",
- "//tensorflow/core:lib",
],
)
@@ -66,13 +63,21 @@
op_lib_names = ["histogram"],
deps = [
"//tensorflow/c:ops",
- "//tensorflow/c:tf_datatype",
- "//tensorflow/c:tf_status",
- "//tensorflow/c:tf_tensor",
"//tensorflow/core:lib",
],
)
+tf_cc_test(
+ name = "histogram_summary_op_test",
+ srcs = ["histogram_summary_op_test.cc"],
+ deps = [
+ ":histogram_op_lib",
+ ":histogram_summary_op",
+ "//tensorflow/core:test_main",
+ "//tensorflow/core:testlib"
+ ],
+)
+
# Changes to the Android srcs here should be replicated in
# tensorflow/contrib/makefile/tf_op_files.txt.
#
diff --git a/tensorflow/core/kernels/BUILD b/tensorflow/core/kernels/BUILD
index 0dee2a4..415d448 100644
--- a/tensorflow/core/kernels/BUILD
+++ b/tensorflow/core/kernels/BUILD
@@ -3887,7 +3887,11 @@
tf_kernel_library(
name = "summary_op",
prefix = "summary_op",
- deps = LOGGING_DEPS,
+ deps = LOGGING_DEPS +
+ [
+ "//tensorflow/c/kernels:histogram_summary_op",
+ "//tensorflow/c/kernels:histogram_op_lib",
+ ],
)
tf_kernel_library(
diff --git a/tensorflow/core/kernels/summary_op.cc b/tensorflow/core/kernels/summary_op.cc
index f4c91fc..b35759c 100644
--- a/tensorflow/core/kernels/summary_op.cc
+++ b/tensorflow/core/kernels/summary_op.cc
@@ -72,54 +72,54 @@
}
};
-template <typename T>
-class SummaryHistoOp : public OpKernel {
- public:
- // SummaryHistoOp could be extended to take a list of custom bucket
- // boundaries as an option.
- explicit SummaryHistoOp(OpKernelConstruction* context) : OpKernel(context) {}
+// template <typename T>
+// class SummaryHistoOp : public OpKernel {
+// public:
+// // SummaryHistoOp could be extended to take a list of custom bucket
+// // boundaries as an option.
+// explicit SummaryHistoOp(OpKernelConstruction* context) : OpKernel(context) {}
- void Compute(OpKernelContext* c) override {
- const Tensor& tags = c->input(0);
- const Tensor& values = c->input(1);
- const auto flat = values.flat<T>();
- OP_REQUIRES(c, TensorShapeUtils::IsScalar(tags.shape()),
- errors::InvalidArgument("tags must be scalar"));
- // Build histogram of values in "values" tensor
- histogram::Histogram histo;
- for (int64 i = 0; i < flat.size(); i++) {
- const double double_val = static_cast<double>(flat(i));
- if (Eigen::numext::isnan(double_val)) {
- c->SetStatus(
- errors::InvalidArgument("Nan in summary histogram for: ", name()));
- break;
- } else if (Eigen::numext::isinf(double_val)) {
- c->SetStatus(errors::InvalidArgument(
- "Infinity in summary histogram for: ", name()));
- break;
- }
- histo.Add(double_val);
- }
+// void Compute(OpKernelContext* c) override {
+// const Tensor& tags = c->input(0);
+// const Tensor& values = c->input(1);
+// const auto flat = values.flat<T>();
+// OP_REQUIRES(c, TensorShapeUtils::IsScalar(tags.shape()),
+// errors::InvalidArgument("tags must be scalar"));
+// // Build histogram of values in "values" tensor
+// histogram::Histogram histo;
+// for (int64 i = 0; i < flat.size(); i++) {
+// const double double_val = static_cast<double>(flat(i));
+// if (Eigen::numext::isnan(double_val)) {
+// c->SetStatus(
+// errors::InvalidArgument("Nan in summary histogram for: ", name()));
+// break;
+// } else if (Eigen::numext::isinf(double_val)) {
+// c->SetStatus(errors::InvalidArgument(
+// "Infinity in summary histogram for: ", name()));
+// break;
+// }
+// histo.Add(double_val);
+// }
- Summary s;
- Summary::Value* v = s.add_value();
- const tstring& tags0 = tags.scalar<tstring>()();
- v->set_tag(tags0.data(), tags0.size());
- histo.EncodeToProto(v->mutable_histo(), false /* Drop zero buckets */);
+// Summary s;
+// Summary::Value* v = s.add_value();
+// const tstring& tags0 = tags.scalar<tstring>()();
+// v->set_tag(tags0.data(), tags0.size());
+// histo.EncodeToProto(v->mutable_histo(), false /* Drop zero buckets */);
- Tensor* summary_tensor = nullptr;
- OP_REQUIRES_OK(c, c->allocate_output(0, TensorShape({}), &summary_tensor));
- CHECK(SerializeToTString(s, &summary_tensor->scalar<tstring>()()));
- }
-};
+// Tensor* summary_tensor = nullptr;
+// OP_REQUIRES_OK(c, c->allocate_output(0, TensorShape({}), &summary_tensor));
+// CHECK(SerializeToTString(s, &summary_tensor->scalar<tstring>()()));
+// }
+// };
#define REGISTER(T) \
REGISTER_KERNEL_BUILDER( \
Name("ScalarSummary").Device(DEVICE_CPU).TypeConstraint<T>("T"), \
- SummaryScalarOp<T>); \
- REGISTER_KERNEL_BUILDER( \
- Name("HistogramSummary").Device(DEVICE_CPU).TypeConstraint<T>("T"), \
- SummaryHistoOp<T>);
+ SummaryScalarOp<T>);
+ // REGISTER_KERNEL_BUILDER( \
+ // Name("HistogramSummary").Device(DEVICE_CPU).TypeConstraint<T>("T"), \
+ // SummaryHistoOp<T>);
TF_CALL_REAL_NUMBER_TYPES(REGISTER)
#undef REGISTER
diff --git a/tensorflow/core/ops/logging_ops.cc b/tensorflow/core/ops/logging_ops.cc
index 6489074..e620da8 100644
--- a/tensorflow/core/ops/logging_ops.cc
+++ b/tensorflow/core/ops/logging_ops.cc
@@ -94,12 +94,12 @@
.Attr("T: realnumbertype")
.SetShapeFn(shape_inference::ScalarShape);
-REGISTER_OP("HistogramSummary")
- .Input("tag: string")
- .Input("values: T")
- .Output("summary: string")
- .Attr("T: realnumbertype = DT_FLOAT")
- .SetShapeFn(shape_inference::ScalarShape);
+// REGISTER_OP("HistogramSummary")
+// .Input("tag: string")
+// .Input("values: T")
+// .Output("summary: string")
+// .Attr("T: realnumbertype = DT_FLOAT")
+// .SetShapeFn(shape_inference::ScalarShape);
REGISTER_OP("ImageSummary")
.Input("tag: string")