「TensorFlowSharp」の版間の差分
ナビゲーションに移動
検索に移動
(→概要) |
|||
30行目: | 30行目: | ||
* プラットフォーム:x64 ←これ重要 | * プラットフォーム:x64 ←これ重要 | ||
*: Xamarin Studioで「コンソールアプリケーション」を作るとデフォルトで「x86」となっているので変更する。libtensorflowが64ビット必須であるため「x86」にしたままビルドすると実行時に落ちる。必ずx64でビルドする必要がある。 | *: Xamarin Studioで「コンソールアプリケーション」を作るとデフォルトで「x86」となっているので変更する。libtensorflowが64ビット必須であるため「x86」にしたままビルドすると実行時に落ちる。必ずx64でビルドする必要がある。 | ||
− | * フレームワーク:.NET Framework 4.6. | + | * フレームワーク:.NET Framework 4.6.1以上 |
*: Xamarin Studioで「コンソールアプリケーション」を作るとデフォルトで「.NET Framework 4.5」となっているので変更する。これをやらないとTensorFlowSharpを参照に追加する際にグレーアウトしている。 | *: Xamarin Studioで「コンソールアプリケーション」を作るとデフォルトで「.NET Framework 4.5」となっているので変更する。これをやらないとTensorFlowSharpを参照に追加する際にグレーアウトしている。 | ||
+ | *: [[Visual Studio for Mac]]でプロジェクトを新規作成すると.NET Framework 4.7が選ばれるはずなので変更する必要はない。 | ||
* TensorFlowSharpへの「参照」を追加する。 | * TensorFlowSharpへの「参照」を追加する。 | ||
− | *: NuGetにもTensorFlowSharpCoreというライブラリがあるようだが何故かパッケージ追加に失敗する。TensorFlowSharpのソースコードを落としてきてプロジェクトごと参照に追加する方法だと問題ない。 | + | *: <s>NuGetにもTensorFlowSharpCoreというライブラリがあるようだが何故かパッケージ追加に失敗する。TensorFlowSharpのソースコードを落としてきてプロジェクトごと参照に追加する方法だと問題ない。</s> |
+ | *: NuGet版も正常に動くようになっている。「TensorFlowSharp」で検索していれる。 | ||
== サンプル == | == サンプル == | ||
74行目: | 76行目: | ||
{{stub}} | {{stub}} | ||
+ | <references /> |
2018年8月21日 (火) 05:01時点における版
TensorFlowSharp[1]とは、TensorFlowをMonoから叩けるようにしたバインディングライブラリである。
概要
Monoの神様であるMiguel de Icaza氏のツイッターから流れてきた。 ソースコードレベルでの移植ではなくバインディングなので事前の環境構築が必要となる。 事前に構築したデータベースをもとにXamarinとスマホ単体で人工知能が使えるようになると色々おもしろいかもしれない。
環境構築
Mac
TensorFlowSharp公式の説明ではlibtensorflowのバイナリを直接ダウンロードするように指示されているが、macだとhomebrewにもlibtensorflowがあるようなのでこちらを使った。
brew install libtensorflow
homebrewではlibtensorflowの拡張子が「.so」のままなので「.dylib」のシンボリックリンクを貼る。
ln -s /usr/local/lib/libtensorflow.so /usr/local/lib/libtensorflow.dylib
TensorFlowSharpのソースコード(サンプル含む)を落としてくる。
git clone https://github.com/migueldeicaza/TensorFlowSharp.git cd TensorFlowSharp
なぜかサンプル周りで使われているパッケージの復元をXamarin Studioで実行すると失敗するのでコンソール上で復元しておく。
nuget restore
Xamarin Studioで開いてみる
open TensorFlowSharp.sln
SampleTestプロジェクトを実行してみると以下の部分で例外が発生して落ちる。なぜかは知らん。
TFWhileParams result = TF_NewWhile (handle, inputs, inputs.Length, cstatus.handle);
プロジェクトを作る
- プラットフォーム:x64 ←これ重要
- Xamarin Studioで「コンソールアプリケーション」を作るとデフォルトで「x86」となっているので変更する。libtensorflowが64ビット必須であるため「x86」にしたままビルドすると実行時に落ちる。必ずx64でビルドする必要がある。
- フレームワーク:.NET Framework 4.6.1以上
- Xamarin Studioで「コンソールアプリケーション」を作るとデフォルトで「.NET Framework 4.5」となっているので変更する。これをやらないとTensorFlowSharpを参照に追加する際にグレーアウトしている。
- Visual Studio for Macでプロジェクトを新規作成すると.NET Framework 4.7が選ばれるはずなので変更する必要はない。
- TensorFlowSharpへの「参照」を追加する。
NuGetにもTensorFlowSharpCoreというライブラリがあるようだが何故かパッケージ追加に失敗する。TensorFlowSharpのソースコードを落としてきてプロジェクトごと参照に追加する方法だと問題ない。- NuGet版も正常に動くようになっている。「TensorFlowSharp」で検索していれる。
サンプル
とりあえず「c = a + b」という式をTensorFlowに投げて実行してみる。
using System;
using System.Collections.Generic;
using System.Linq;
using TensorFlow;
namespace sample
{
class MainClass
{
public static void Main(string[] args)
{
var graph = new TFGraph();
var a = graph.Const( 1, "a"); // a = 1
var b = graph.Const( 2, "b"); // b = 2
var c = graph.Add( a, b, "c"); // c = a + b
// 実行
var session = new TFSession(graph, new TFSessionOptions());
var runner = session.GetRunner();
var result = runner.Run(c);
// c = 3
Console.WriteLine(result.FirstOrDefault());
}
}
}
関連項目
参考文献