From e4984f13e9ddaa035234f0672781b6e324591ed8 Mon Sep 17 00:00:00 2001
From: qiaolongfei <qiaolongfei@baidu.com>
Date: Wed, 19 Jul 2017 23:02:27 +0800
Subject: [PATCH] fix tensor usage in sgd-op

---
 paddle/operators/sgd_op.h | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/paddle/operators/sgd_op.h b/paddle/operators/sgd_op.h
index 2ee21ef8f9..4b2d214618 100644
--- a/paddle/operators/sgd_op.h
+++ b/paddle/operators/sgd_op.h
@@ -14,6 +14,7 @@ limitations under the License. */
 
 #pragma once
 #include "glog/logging.h"
+#include "paddle/framework/eigen.h"
 #include "paddle/framework/operator.h"
 
 namespace paddle {
@@ -30,8 +31,10 @@ public:
 
     param_out->mutable_data<T>(ctx.GetPlace());
 
-    param_out->flat<T>().device(*(ctx.GetEigenDevice<Place>())) =
-        param.flat<T>() - lr * grad.flat<T>();
+    framework::EigenVector<T>::Flatten(*param_out)
+        .device(*(ctx.GetEigenDevice<Place>())) =
+        framework::EigenVector<T>::Flatten(param) -
+        lr * framework::EigenVector<T>::Flatten(grad);
   }
 };