1. 程式人生 > >c#呼叫tensorflow的例子

c#呼叫tensorflow的例子

一個很簡單的例子,使用c#呼叫tensorflow。

1.安裝tensorflow

首先需要安裝windows 版本的tensowflow,使用64位的python3.5,如果沒有安裝,需要首先安裝python3.5

然後以管理員方式進入命令列,執行

pip install tensorflow

2.c#呼叫程式碼

  • 初始化cle和python35
      StarCoreFactory starcore = StarCoreFactory.GetFactory();
      StarServiceClass Service = starcore._InitSimple("test", "123", 0, 0, null);
      StarSrvGroupClass SrvGroup = (StarSrvGroupClass)Service._Get("_ServiceGroup");
      //--init python raw interface
      SrvGroup._InitRaw("python35", Service);
      StarObjectClass python = Service._ImportRawContext("python", "", false, "");

  •         呼叫tensorflow
     //--import tensorflow as tf
     python._Call("eval", "import tensorflow as tf");   
     StarObjectClass tf = python._GetObject("tf");
     Console.WriteLine(tf);
     //-- a = tf.add(2,5)
     StarObjectClass a = (StarObjectClass)tf._Call("add", 2, 5);
     //-- b = tf.multiply(a,5)
     StarObjectClass b = (StarObjectClass)tf._Call("multiply", a, 3);
     //-- c = tf.constant(2,name="Node_c")
     StarObjectClass c = (StarObjectClass)tf._Call("constant", 2, SrvGroup._NewParaPkg("name", "Node_c")._AsDict(true));
     Console.WriteLine(c);
     //-- sess = tf.Session()
     StarObjectClass Session = (StarObjectClass)tf._Get("Session");
     StarObjectClass sess = Session._New();

     //-- result = sess.run(b,feed_dict={a:25});
     StarParaPkgClass pkg = SrvGroup._NewParaPkg(a, 25)._AsDict(true);
     Object result = sess._Call("run", b, SrvGroup._NewParaPkg("feed_dict", pkg)._AsDict(true));
     Console.WriteLine(result);
  •         如果使用dynamic關鍵字,上述程式碼簡化如下:
     //--import tensorflow as tf
     python.eval("import tensorflow as tf");
     dynamic tf = python.tf;
     //-- a = tf.add(2,5)
     dynamic a = tf.add(2, 5);
     //-- b = tf.multiply(a,5)
     dynamic b = tf.multiply(a, 3);
     //-- c = tf.constant(2,name="Node_c")
     dynamic c = tf.constant(2, SrvGroup._NewParaPkg("name", "Node_c")._AsDict(true));
     //-- sess = tf.Session()
     dynamic Session = tf.Session;
     dynamic sess = Session._New();

     //-- result = sess.run(b,feed_dict={a:25});
     var pkg = SrvGroup._NewParaPkg(a, 25)._AsDict(true);
     dynamic result = sess.run(b, SrvGroup._NewParaPkg("feed_dict", pkg)._AsDict(true));
     Console.WriteLine(result);

3. 例子下載