testDrivenImageClassification
Kexin Zhao 8 years ago
parent cbf502e5d4
commit aa2635fe65

@ -12,7 +12,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. */ limitations under the License. */
#include <fstream> #include <fstream>
#include <iostream>
#include "paddle/fluid/framework/data_type_transform.h" #include "paddle/fluid/framework/data_type_transform.h"
#include "paddle/fluid/framework/op_registry.h" #include "paddle/fluid/framework/op_registry.h"
@ -53,9 +52,6 @@ class LoadOp : public framework::OperatorBase {
auto in_dtype = framework::ToDataType(tensor->type()); auto in_dtype = framework::ToDataType(tensor->type());
auto out_dtype = load_as_fp16 ? framework::proto::VarType::FP16 : in_dtype; auto out_dtype = load_as_fp16 ? framework::proto::VarType::FP16 : in_dtype;
std::cout << "In load op: " << std::endl;
std::cout << "before conversion block" << std::endl;
if (in_dtype != out_dtype) { if (in_dtype != out_dtype) {
// convert to float16 tensor // convert to float16 tensor
auto in_kernel_type = framework::OpKernelType(in_dtype, place); auto in_kernel_type = framework::OpKernelType(in_dtype, place);
@ -63,20 +59,15 @@ class LoadOp : public framework::OperatorBase {
framework::LoDTensor fp16_tensor; framework::LoDTensor fp16_tensor;
// copy LoD info to the new tensor // copy LoD info to the new tensor
fp16_tensor.set_lod(tensor->lod()); fp16_tensor.set_lod(tensor->lod());
std::cout << "before TransDataType" << std::endl;
framework::TransDataType(in_kernel_type, out_kernel_type, *tensor, framework::TransDataType(in_kernel_type, out_kernel_type, *tensor,
&fp16_tensor); &fp16_tensor);
std::cout << "after TransDataType" << std::endl;
// reset output tensor // reset output tensor
out_var->Clear(); out_var->Clear();
tensor = out_var->GetMutable<framework::LoDTensor>(); tensor = out_var->GetMutable<framework::LoDTensor>();
tensor->set_lod(fp16_tensor.lod()); tensor->set_lod(fp16_tensor.lod());
std::cout << "before TransDataType" << std::endl;
tensor->ShareDataWith(fp16_tensor); tensor->ShareDataWith(fp16_tensor);
std::cout << "after TransDataType" << std::endl;
} }
std::cout << "Out of load op: " << std::endl;
} }
}; };

@ -127,17 +127,13 @@ TEST(LoadFP16Op, CPU) {
auto load_var = scope.Var("out_var"); auto load_var = scope.Var("out_var");
auto load_op = paddle::framework::OpRegistry::CreateOp( auto load_op = paddle::framework::OpRegistry::CreateOp(
"load", {}, {{"Out", {"out_var"}}}, attrs); "load", {}, {{"Out", {"out_var"}}}, attrs);
LOG(INFO) << "before load op run";
load_op->Run(scope, place); load_op->Run(scope, place);
LOG(INFO) << "after load op run";
auto target = load_var->Get<paddle::framework::LoDTensor>(); auto target = load_var->Get<paddle::framework::LoDTensor>();
paddle::platform::float16* actual = target.data<paddle::platform::float16>(); paddle::platform::float16* actual = target.data<paddle::platform::float16>();
LOG(INFO) << "after target->data";
for (int64_t i = 0; i < tensor->numel(); ++i) { for (int64_t i = 0; i < tensor->numel(); ++i) {
EXPECT_EQ(expect[i], static_cast<float>(actual[i])); EXPECT_EQ(expect[i], static_cast<float>(actual[i]));
} }
LOG(INFO) << "after expect equal";
auto& actual_lod = target.lod(); auto& actual_lod = target.lod();
EXPECT_EQ(expect_lod.size(), actual_lod.size()); EXPECT_EQ(expect_lod.size(), actual_lod.size());

Loading…
Cancel
Save