@peppere

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Pythonのtensorflowで学習したモデルをC言語で利用するには?

tensorflowで機械学習モデルを保存し、そのモデルを使ってC言語で推定を行いたいのですが、どのように学習モデルをC言語に適用すればよいかわかりません。

windowsのvoscodeを使用しており,tensorflow for Cというものがあることを知り、導入の手順がわからず断念してしまいました。
tensorflow for Cの導入手順もしくはpythonのtensorflowで学習したモデルをC言語で流用できるようにするための別の方法があればご教授お願い致します。

0 likes

2Answer

どのみちtensorflow for Cにおいて重要なc_api.hを読んで実行しないといけないので,導入に理解を割くべきだと考えます.

導入手順に関してはTensorFlow公式のもので十分だと思われますが,これのどこが不明だったのでしょうか

0Like

Comments

  1. @peppere

    Questioner

    ご返信いただきありがとうございます!

    まず、C言語で導入可能であるのかという点が不明でした。
    C++に導入するようなサイトは多く見られたのですが、C言語に導入するものはあまり見られませんでしたので。

    そして、導入の際にダウンロードしたファイル(ヘッダーファイルなど)を読み込ませようと公式サイトを確認しながらチャレンジしましたが私の知識不足で読み込ませることができませんでした.

    解凍後のヘッダーファイル(c_api.h)を特定の場所に移動させれば導入完了するのでしょうか?それとも他の作業も必要となるのでしょうか?

    お手数をおかけして申し訳ありませんがご回答いただけますと幸いです。
  2. @peppere

    Questioner

    補足
    tensorflowの公式より「Windows、CPU のみ」をダウンロード・解凍すると追加した写真のようなフォルダとファイルが展開されました。
    このフォルダやファイルを作業フォルダに移動させるなど試みましたが下記のエラーが出ている状態です.

    hello_tf.c:2:32: fatal error: tensorflow/c/c_api.h: No such file or directory
    #include <tensorflow/c/c_api.h>
    ^
    compilation terminated.
  3. コンパイルオプションはどのようにしましたか?
    zip展開後のincludeとlibをgccが読み取れる状態でなければならないです
  4. @peppere

    Questioner

    実行するCファイルと同じフォルダにダウンロードしたものを配置し、

    gcc hello_tf.c -ltensorflow -o hello_tf
    gcc -o hello_tf hello_tf.c

    など実行してみました.
    実行したファイルは下記の通りです.

    //hello_tf.c
    #include <stdio.h>
    #include <tensorflow/c/c_api.h>
    //#include "tensorflow/c/c_api.h"

    int main() {
    printf("Hello from TensorFlow C library version %s\n", TF_Version());
    return 0;
    }
  5. なるほど,Windowsでそれは無理ですね
    1番最後に示されているコンパイル方法である

    gcc -I/usr/local/include -L/usr/local/lib hello_tf.c -ltensorflow -o hello_tf

    の方を適宜,zip展開したincludeとlibのディレクトリを絶対パスで指定してやってください
  6. @peppere

    Questioner

    ご返信いただきありがとうございます!

    それでは下記の通りコンパイルするという認識でお間違いないでしょうか?

    gcc -IC:\Users\USER\Documents\~~~\include -LC:\Users\USER\Documents\~~~\lib hello_tf.c -ltensorflow -o hello_tf

    こちらを入力したところ下記のエラーが出てしまいました。

    C:\Users\USER\AppData\Local\Temp\ccbHAwyr.o:hello_tf.c:(.text+0xf): undefined reference to `_imp__TF_Version'
    collect2.exe: error: ld returned 1 exit status

    何度も申し訳ございません。よろしくお願いいたします。
  7. @peppere

    Questioner

    ありがとうございます!

    -o hello_tfなしでもダメそうでした。
    教えていただいた内容を参考に頑張ってみます!

Your answer might help someone💌