| #pragma once |
| |
| #include "caffe2/core/tensor.h" |
| |
| namespace caffe2 { |
| |
| // This is a wrapper around the TensorPrinter that doesn't require the user to |
| // explicit specify the type of the tensor while calling the Print() method. |
| // It also supports a convenience function with a default constructed printer as |
| // a static method. |
| class CAFFE2_API SmartTensorPrinter { |
| public: |
| // The proliferation of constructors is to give the feature parity with |
| // TensorPrinter |
| // yet not repeat the default arguments explicitly in case they change in the |
| // future. |
| SmartTensorPrinter() = default; |
| |
| explicit SmartTensorPrinter(const std::string& tensor_name); |
| |
| SmartTensorPrinter( |
| const std::string& tensor_name, |
| const std::string& file_name); |
| |
| SmartTensorPrinter( |
| const std::string& tensor_name, |
| const std::string& file_name, |
| int limit); |
| |
| void Print(const Tensor& tensor); |
| |
| void PrintMeta(const Tensor& tensor) { |
| tensorPrinter_.PrintMeta(tensor); |
| } |
| |
| // Uses a default constructed SmartTensorPrinter |
| static void PrintTensor(const Tensor& tensor); |
| |
| // Uses a default constructed SmartTensorPrinter |
| void PrintTensorMeta(const Tensor& tensor) { |
| DefaultTensorPrinter().PrintMeta(tensor); |
| } |
| |
| private: |
| // Returns a thread local default constructed TensorPrinter |
| static SmartTensorPrinter& DefaultTensorPrinter(); |
| |
| TensorPrinter tensorPrinter_; |
| }; |
| } |