diff --git a/tensorflow/core/kernels/save_restore_tensor.cc b/tensorflow/core/kernels/save_restore_tensor.cc index 1a5b6b92bd6..baee31aa24a 100644 --- a/tensorflow/core/kernels/save_restore_tensor.cc +++ b/tensorflow/core/kernels/save_restore_tensor.cc @@ -301,6 +301,24 @@ struct RestoreOp { TF_RETURN_IF_ERROR( reader->LookupSlice(tensor_name, parsed_slice, restored_tensor)); } + if (VLOG_IS_ON(5)) { + if (restored_tensor->dtype() == DT_FLOAT) { + const float* t_data = restored_tensor->flat().data(); + float min = std::numeric_limits::infinity(); + float max = -std::numeric_limits::infinity(); + float avg = 0.0; + for (int i = 0; i < restored_tensor->NumElements(); ++i) { + if (t_data[i] < min) min = t_data[i]; + if (t_data[i] > max) max = t_data[i]; + avg += t_data[i]; + } + VLOG(5) << " min " << min << " max " << max << " avg " + << avg / restored_tensor->NumElements() << " total elts " + << restored_tensor->NumElements(); + } + } + VLOG(1) << "Done restoring tensor " << idx << " : " << tensor_name << " : " + << restored_full_shape.num_elements(); return Status::OK(); } diff --git a/tensorflow/core/kernels/save_restore_v2_ops.cc b/tensorflow/core/kernels/save_restore_v2_ops.cc index 07e120e042c..9ea9fa4e6ef 100644 --- a/tensorflow/core/kernels/save_restore_v2_ops.cc +++ b/tensorflow/core/kernels/save_restore_v2_ops.cc @@ -112,6 +112,7 @@ class SaveV2 : public OpKernel { for (int i = 0; i < num_tensors; ++i) { const string& tensor_name = tensor_names_flat(i); const Tensor& tensor = context->input(i + kFixedInputs); + VLOG(2) << "Starting save of " << tensor_name; if (!shape_and_slices_flat(i).empty()) { const string& shape_spec = shape_and_slices_flat(i); @@ -133,8 +134,28 @@ class SaveV2 : public OpKernel { } else { OP_REQUIRES_OK(context, writer.Add(tensor_name, tensor)); } + + if (VLOG_IS_ON(5)) { + if (tensor.dtype() == DT_FLOAT) { + const float* t_data = tensor.flat().data(); + float min = std::numeric_limits::infinity(); + float max = -std::numeric_limits::infinity(); + float avg = 0.0; + for (int i = 0; i < tensor.NumElements(); ++i) { + if (t_data[i] < min) min = t_data[i]; + if (t_data[i] > max) max = t_data[i]; + avg += t_data[i]; + } + VLOG(5) << " min " << min << " max " << max << " avg " + << avg / tensor.NumElements() << " total elts " + << tensor.NumElements(); + } + } + + VLOG(2) << "Done save of " << tensor_name; } OP_REQUIRES_OK(context, writer.Finish()); + VLOG(1) << "Done BundleWriter, prefix_string: " << prefix_string; } }; REGISTER_KERNEL_BUILDER(Name("SaveV2").Device(DEVICE_CPU), SaveV2);