diff --git a/paddle/gserver/evaluators/Evaluator.cpp b/paddle/gserver/evaluators/Evaluator.cpp index 1a43d3bd996109c24daf622a71a427f7fd7fb931..1b06519713dbba509dee8d6e41b13355a39dd036 100644 --- a/paddle/gserver/evaluators/Evaluator.cpp +++ b/paddle/gserver/evaluators/Evaluator.cpp @@ -888,19 +888,10 @@ Evaluator* Evaluator::create(const EvaluatorConfig& config) { */ class ValuePrinter : public Evaluator { public: - ValuePrinter() {} - virtual void eval(const NeuralNetwork& nn) { for (const std::string& name : config_.input_layers()) { - auto& argu = nn.getLayer(name)->getOutput(); - std::unordered_map out; - argu.getValueString(&out); - for (auto field : {"value", "id", "sequence pos", "sub-sequence pos"}) { - auto it = out.find(field); - if (it != out.end()) { - LOG(INFO) << "layer=" << name << " " << field << ":\n" << it->second; - } - } + nn.getLayer(name)->getOutput().printValueString(LOG(INFO), + "layer=" + name + " "); } } diff --git a/paddle/gserver/layers/PrintLayer.cpp b/paddle/gserver/layers/PrintLayer.cpp index f1f3dd412c67a9570831a3299905487c5ddacc6b..de198af111be4200dd1b240f6de9464e3f43b06d 100644 --- a/paddle/gserver/layers/PrintLayer.cpp +++ b/paddle/gserver/layers/PrintLayer.cpp @@ -19,25 +19,17 @@ namespace paddle { class PrintLayer : public Layer { public: explicit PrintLayer(const LayerConfig& config) : Layer(config) {} - void forward(PassType passType) override; - void backward(const UpdateCallback& callback) override {} -}; -void PrintLayer::forward(PassType passType) { - Layer::forward(passType); - for (size_t i = 0; i != inputLayers_.size(); ++i) { - auto& argu = getInput(i); - const std::string& name = inputLayers_[i]->getName(); - std::unordered_map out; - argu.getValueString(&out); - for (auto field : {"value", "id", "sequence pos", "sub-sequence pos"}) { - auto it = out.find(field); - if (it != out.end()) { - LOG(INFO) << "layer=" << name << " " << field << ":\n" << it->second; - } + void forward(PassType passType) override { + Layer::forward(passType); + for (size_t i = 0; i != inputLayers_.size(); ++i) { + getInput(i).printValueString(LOG(INFO), + "layer=" + inputLayers_[i]->getName() + " "); } } -} + + void backward(const UpdateCallback& callback) override {} +}; REGISTER_LAYER(print, PrintLayer); diff --git a/paddle/parameter/Argument.cpp b/paddle/parameter/Argument.cpp index e9de0f66987603fdfd3c84853b531330f1852896..7a343cca33f5b420be6192231ac73ca1c2da5fb9 100644 --- a/paddle/parameter/Argument.cpp +++ b/paddle/parameter/Argument.cpp @@ -628,6 +628,18 @@ void Argument::getValueString( } } +void Argument::printValueString(std::ostream& stream, + const std::string& prefix) const { + std::unordered_map out; + getValueString(&out); + for (auto field : {"value", "id", "sequence pos", "sub-sequence pos"}) { + auto it = out.find(field); + if (it != out.end()) { + stream << prefix << field << ":\n" << it->second; + } + } +} + void Argument::subArgFrom(const Argument& input, size_t offset, size_t height, diff --git a/paddle/parameter/Argument.h b/paddle/parameter/Argument.h index c751dbb855d31d6b6a765de97aca2f5ba2aa3586..e2a8500c3f82a196b3e611167e9728a31de713d3 100644 --- a/paddle/parameter/Argument.h +++ b/paddle/parameter/Argument.h @@ -305,6 +305,9 @@ struct Argument { * @param out [out]: the return values. */ void getValueString(std::unordered_map* out) const; + + void printValueString(std::ostream& stream, + const std::string& prefix = "") const; }; } // namespace paddle