c#呼叫tensorflow的例子
阿新 • • 發佈:2019-02-19
一個很簡單的例子,使用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);