C
VisualStudio
機械学習
TensorFlow
More than 1 year has passed since last update.

はじめましてkatoutです。

この記事は巷で流行ってると聞くTensorFlowをVisualStudioで動かそうという試みです。

ちなみに機械学習についてはこれが入門で始めるので新しい知識を求めている方向けではございません。

また、もっと他の最善の方法があると思うので知っている方がいましたら教えてください。


目的

Installing TensorFlow for Cという公式ドキュメントがありますがwindowsはサポートに含まれていません。

それをwindowsでやってみようというのが今回の目的です。


全体の流れ


  1. jenkinsおじさんがビルドしたdllをダンロード

  2. libの生成

  3. VisualStudioで読み込み

  4. Hello World!


1.dllのダウンロード

tensorflow公式jenkinsよりcライブラリdllをダウンロードします。

libtensorflow-cpu-windows-x86_64.zip

中身を見ると以下のようになっており暗黙的リンクをするにはlibが足りないため生成を行います。


c_api.h

LICENSE

tensorflow.dll



2. libの生成

libを生成するにはvisual studioに付属しているlib.exeを利用することで作成できます。

libを作るためまずdefファイルが必要となるため以下のコマンドで定義を調べ

dumpbin.exe /EXPORTS tensorflow.dll > tensorflow.txt


tensorflow.txt

Microsoft (R) COFF/PE Dumper Version 14.00.24215.1

Copyright (C) Microsoft Corporation. All rights reserved.

Dump of file tensorflow.dll

File Type: DLL

Section contains the following exports for libtensorflow.so

00000000 characteristics
593620A4 time date stamp Tue Jun 6 12:25:24 2017
0.00 version
1 ordinal base
131 number of functions
131 number of names

ordinal hint RVA name

1 0 020A4440 ?DEVICE_CPU@tensorflow@@3QEBDEB
2 1 020A4448 ?DEVICE_GPU@tensorflow@@3QEBDEB
3 2 020A4450 ?DEVICE_SYCL@tensorflow@@3QEBDEB
4 3 00172050 TF_AbortWhile
5 4 00172060 TF_AddControlInput
6 5 00172070 TF_AddGradients
...


defファイル自力を作ります。


tensorflow.def

LIBRARY  tensorflow

EXPORTS
TF_AbortWhile
TF_AddControlInput
TF_AddGradients

...

TF_TensorType
TF_Version


最後に作成したtensorflow.defからlib.exeを利用しtensorflow.libを生成します。

lib /def:tensorflow.def /machine:x64


c_api.h

LICENSE

tensorflow.def

tensorflow.dll

tensorflow.exp

tensorflow.lib

tensorflow.txt



3.visual studioで読み込み


  • 適当にwin32コンソールアプリケーションを作成

  • プラットフォーム設定をx64に

    x64.PNG


  • 構成プロパティ / C/C++ / プリプロセッサの「プリプロセッサの定義」に「COMPILER_MSVC」を追加


    pre.PNG


  • 構成プロパティ / C/C++ / 全般の「追加インクルードディレクトリ」に一番はじめにdlしたc_api.hのフォルダを追加


    inc.PNG


  • 構成プロパティ / リンカー / 全般の「追加ライブラリディレクトリ」にtensorflow.libが含まれるフォルダを追加


    libdir.PNG


  • 構成プロパティ / リンカー / 入力の「追加の依存ファイル」にtensorflow.libを追加


    lib.PNG


  • 一番はじめにdlしてきたtensorflow.dllを実行ファイルと同じ階層へ配置


$(SolutionDir)\x64\Debug\tensorflow.dll


4.Hello World!

Installing TensorFlow for Cのドキュメントに従って以下のファイルを作成し実行。


hello_tf.c

#include <stdio.h>

#include <c_api.h>

void main() {
printf("Hello from TensorFlow C library version %s\n", TF_Version() );
}

fin.PNG


おわりに

素直にcmake CMakeLists.txt でビルドすればいいと思います。時間があるときにやってみたいと思います。

次はc++のライブリラリを読み込んで実際にtensorflowにて機械学習を動かす部分を目指します。