LoginSignup
11
16

More than 5 years have passed since last update.

visual studioでtensorflow

Posted at

はじめまして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にて機械学習を動かす部分を目指します。

11
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
16