「TensorFlowSharp」の版間の差分

imported>Administrator
編集の要約なし
14行目: 14行目:
  ln -s /usr/local/lib/libtensorflow.so /usr/local/lib/libtensorflow.dylib
  ln -s /usr/local/lib/libtensorflow.so /usr/local/lib/libtensorflow.dylib


== 公式サンプルを動かしてみる ==
TensorFlowSharpの[[ソースコード]](サンプル含む)を落としてくる。
TensorFlowSharpの[[ソースコード]](サンプル含む)を落としてくる。
  git clone https://github.com/migueldeicaza/TensorFlowSharp.git
  git clone https://github.com/migueldeicaza/TensorFlowSharp.git
27行目: 28行目:
  TFWhileParams result = TF_NewWhile (handle, inputs, inputs.Length, cstatus.handle);
  TFWhileParams result = TF_NewWhile (handle, inputs, inputs.Length, cstatus.handle);


== プロジェクトを作る ==
== プロジェクトを作ってみる ==
* プラットフォーム:x64 ←これ重要
* プラットフォーム:x64 ←これ重要
*: Xamarin Studioで「コンソールアプリケーション」を作るとデフォルトで「x86」となっているので変更する。libtensorflowが64ビット必須であるため「x86」にしたままビルドすると実行時に落ちる。必ずx64でビルドする必要がある。
*: Xamarin Studioで「コンソールアプリケーション」を作るとデフォルトで「x86」となっているので変更する。libtensorflowが64ビット必須であるため「x86」にしたままビルドすると実行時に落ちる。必ずx64でビルドする必要がある。
38行目: 39行目:


== サンプル ==
== サンプル ==
=== 足し算 ===
とりあえず「c = a + b」という式をTensorFlowに投げて実行してみる。
とりあえず「c = a + b」という式をTensorFlowに投げて実行してみる。


<source lang="csharp">
=== 保存と読込 ===
<syntaxhighlight>
using System;
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TensorFlow;
using TensorFlow;


namespace sample
namespace tensor1
{
{
class MainClass
    class MainClass
{
    {
public static void Main(string[] args)
        public static void Main(string[] args)
{
        {
var graph = new TFGraph();
            using (var graph = new TFGraph())
var a = graph.Const( 1, "a"); // a = 1
            {
var b = graph.Const( 2, "b"); // b = 2
                Console.WriteLine("-- save --");
var c = graph.Add( a, b, "c"); // c = a + b
                using (var session = new TFSession(graph))
                {
                    // 数値を作る
                    var a = session.Graph.Const(30, "a");
                    var b = session.Graph.Const(12, "b");
 
                    // 足し算
                    var multiplyResults = session.GetRunner().Run(session.Graph.Add(a, b));
                    var multiplyResultValue = multiplyResults.GetValue();
                    Console.WriteLine("a + b = {0}", multiplyResultValue);


// 実行
                    // 保存
var session = new TFSession(graph, new TFSessionOptions());
                    session.SaveTensors("saved.tsf", ("a", a), ("b", b));
var runner = session.GetRunner();
                }
var result = runner.Run(c);


// c = 3
                Console.WriteLine("-- load --");
Console.WriteLine(result.FirstOrDefault());
                using (var session = new TFSession())
}
                {
}
                    // 読込
                    var a = session.RestoreTensor("saved.tsf", "a", TFDataType.Int32);
                    var b = session.RestoreTensor("saved.tsf", "b", TFDataType.Int32);
                    // 足し算
                    var multiplyResults = session.GetRunner().Run(session.Graph.Add(a, b));
                    var multiplyResultValue = multiplyResults.GetValue();
                    Console.WriteLine("a + b = {0}", multiplyResultValue);
                }
            }
        }
    }
}
}
</source>
</syntaxhighlight>


== 関連項目 ==
== 関連項目 ==