You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@singa.apache.org by zh...@apache.org on 2023/10/10 07:10:16 UTC

[singa] branch dev-postgresql updated: Add the optimizer for model selection

This is an automated email from the ASF dual-hosted git repository.

zhaojing pushed a commit to branch dev-postgresql
in repository https://gitbox.apache.org/repos/asf/singa.git


The following commit(s) were added to refs/heads/dev-postgresql by this push:
     new 3ce7c333 Add the optimizer for model selection
     new 9d8a2f5e Merge pull request #1109 from zmeihui/23-10-9-optimizer
3ce7c333 is described below

commit 3ce7c3336ef4c9db70a2b5e47f13c6094bf7c5a4
Author: zmeihui <me...@bit.edu.cn>
AuthorDate: Mon Oct 9 19:07:51 2023 +0800

    Add the optimizer for model selection
---
 .../model_selection_psql/ms_mlp/train_ms_model.py  | 28 +++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/examples/model_selection_psql/ms_mlp/train_ms_model.py b/examples/model_selection_psql/ms_mlp/train_ms_model.py
index b87af52b..0283b91e 100644
--- a/examples/model_selection_psql/ms_mlp/train_ms_model.py
+++ b/examples/model_selection_psql/ms_mlp/train_ms_model.py
@@ -32,8 +32,34 @@ from PIL import Image
 
 np_dtype = {"float16": np.float16, "float32": np.float32}
 
-# singa_dtype = {"float16": tensor.float16, "float32": tensor.float32}
 singa_dtype = {"float32": tensor.float32}
+# singa_dtype = {"float16": tensor.float16, "float32": tensor.float32}
+
+### MSOptimizer
+class MSOptimizer(Optimizer):
+    def __call__(self, loss):
+        pn_p_g_list = self.call_with_returns(loss)
+        # print ("optimizer1 before self.step()")
+        # print ("optimizer1 before print len(pn_p_g_list): \n", len(pn_p_g_list))
+        self.step()
+        # print ("optimizer1 after print len(pn_p_g_list): \n", len(pn_p_g_list))
+        # print ("optimizer1 after self.step()")
+        return pn_p_g_list
+
+    def call_with_returns(self, loss):
+        # print ("call_with_returns before apply loss.data: \n", loss.data)
+        pn_p_g_list = []
+        for p, g in autograd.backward(loss):
+            if p.name is None:
+                p.name = id(p)
+            self.apply(p.name, p, g)
+            # print ("call with returns")
+            # print ("p.name: \n", p.name)
+            # print ("p.data: \n", p.data)
+            # print ("g.data: \n", g.data)
+            pn_p_g_list.append([p.name, p, g])  # need iterables
+        # print ("call_with_returns after apply loss.data: \n", loss.data)
+        return pn_p_g_list
 
 
 # Data augmentation