e-AIのフォーラム開設

管理人のAyrです。

お待たせしました。

ルネサスサイトのe-AIツール
https://www.renesas.com/ja-jp/solutions/key-technology/e-ai/tool.html
 の公開を機に、e-AIのフォーラムも開設しました。

e-AIツールの活用方法、課題解決のアイデアなどユーザの皆様と意見交換させて頂き、

e-AIのフォーラムを盛り上げていきたいと考えています。

みなさまの投稿をお待ちしております。

Parents
  • (続きです)
    e-AIトランスレータのConfiguration & TranslationウィンドウでInput Shape Dimensionsを「1,1,1,1」に設定し実行したところ,以下のログが出力されました。

    [2017-08-24 17:22:24,627 INFO network_decoder_tensorflow.py:70 - generate_network() ] The tensorflow model is being converted to protobuf format.
    [2017-08-24 17:22:24,745 INFO freeze.py:72 - freeze_graph() ] The model is freezed by considering the output node's name as Sum

    [2017-08-24 17:22:24,749 INFO tf_logging.py:82 - info() ] Restoring parameters from C:\share\e-AI\jiseitai_model\tensorflow_model
    [2017-08-24 17:22:24,769 INFO tf_logging.py:82 - info() ] Froze 2 variables.
    [2017-08-24 17:22:24,801 INFO freeze.py:98 - freeze_graph() ] 24 ops in the final graph.
    [2017-08-24 17:22:24,860 INFO network_decoder.py:85 - __del__() ] Uninitializing and cleaning up network_decoder object..
    [2017-08-24 17:22:24,860 INFO network_decoder_tensorflow.py:124 - __del__() ] Uninitializing and cleaning up tensorflow network_decoder object..


    何か手がかりを教えていただけないでしょうか?
    caffe_windowsにある学習済みモデルの変換は成功しております。
    どうぞよろしくお願いいたします。
  • 石川さん、詳細な情報、ありがとうございます。
    スタッフのdartsmanです。

    いただいた情報から、こちらでも同様の問題が発生することを確認しました。
    大変申し訳ないのですが、解析にもうしばらくお時間をください。
    よろしくお願いいたします。
Reply
  • 石川さん、詳細な情報、ありがとうございます。
    スタッフのdartsmanです。

    いただいた情報から、こちらでも同様の問題が発生することを確認しました。
    大変申し訳ないのですが、解析にもうしばらくお時間をください。
    よろしくお願いいたします。
Children
  • dartsmanさん
    解析ありがとうございます。よろしくお願いいたします。
  • 石川さん、こんにちは。
    スタッフのdartsmanです。

    今回ご質問いただいた件ですが、結論から申し上げますと今回のAIモデルは
    e-AIトランスレータがサポートしていない形式のものでした。
    このため、e-AIトランスレータでの変換は出来ません。
    解析にお時間をいただいた上にこのような結論となり、大変申し訳ありません。

    以下、今回の解析結果です。

    [解析結果]
    e-AIトランスレータが変換に対応しているAIモデルは
    e-AIトランスレータのユーザーズマニュアル(資料番号:R20UT4135)の
    「1.2 変換可能なニューラルネットワークの種類」に記載している通り
    CNN、Auto Encoderといったニューラルネットワークです。

    一方、今回ご連絡いただいたモデルは線形回帰や回帰分析と
    呼ばれるもので、AIモデルの構造はニューラルネットワーク構造となりません。
    このため、e-AIトランスレータでの変換ができませんでした。

    こちらのサイトに、線形回帰とニューラルネットワークの関係を示した
    図がありました。ご参考まで。
    https://camo.qiitausercontent.com/919da5d57341ea9124c0e154f8a5bf70eb1821b6/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f35353338342f62663637626261332d376235382d643663662d313030622d3664326536663037626336302e706e67

  • dartsmanさん,ご報告いただきありがとうございました。tf.multiplyが悪さをしているのかなと思います。もう少し私の方でも検証し,何か分かりましたらご報告させていただきます。よろしくお願いいたします。
  • お世話になっております。石川です。
    対応済み畳み込み層について質問させてください。ユーザーズマニュアルにはConvolution対応と書かれていますが,TensorFlowの関数だと何に対応しているのでしょうか?
    よろしくお願いいたします。
  • 石川さん、こんにちは。
    スタッフのdartsmanです。

    TensorFlowの関数としては、逆に対応していないものをユーザーズマニュアルの「4.注意事項」の章に掲載しています。未対応関数は"tf.placeholder"と"tf.name_scope"になります。先日、かふぇルネに投稿いただいたサンプルコードを拝見しましたが、これらは両方ともご使用されていないと思います。("tf.placeholder_with_default"には対応しています。)

    今回、変換がエラーとなっているのは、先日記載しました通り、線形回帰を変換してもニューラルネットワーク構造にならないためです。現在のe-AIトランスレータはディープラーニング用ツールとしてリリースしていますので、ニューラルネットワーク構造を検出できないものを読み込むとエラーとする動作となっています。

    線形回帰サンプルを現在のe-AIトランスレータで変換するには、サンプルの構造を無理やりニューラルネットワーク構造にするしかないかと思います。無理やりな方法ですのでうまくいくか分かりませんが、一度こちらでも考えてみます。少々お時間をください。

    よろしくお願いいたします。
  • dartsmanさん。こんにちは。
    ご対応ありがとうございます。
    線形回帰ではなくニューラルネットワーク構造である必要があるということは理解できたのですが,どの関数を使用していれば変換可能なのかよく分からなくなってしまい,対応関数という聞き方をしてしまいました。
    以下,私が分かっている範囲で共有させていただきます。

    変換に成功したネットワーク
    gist.github.com/.../e53a70f9e5c3f55852b0
    github.com/.../TensorFlowTest3.py

    変換に失敗したネットワーク
    github.com/.../neural_network_raw.py

    e-AIトランスレータのTips
    ・Configration&Translationで指定するInput Model Locationに日本語が入ると動かない。
    ・Translator Output Locationも日本語が入ると動かない。
    ・C直下などUACが効きそうな場所に出力しようとすると変換に失敗することがある。デスクトップなどが良い。
    ・前回の操作で変換に失敗したあと,frozen_model.pbがロックされていることがある。削除してから変換したほうが良い。

    よろしくお願いいたします。
  • 石川さん、回答が大変遅くなりまして申し訳ありません。
    スタッフのdartsmanです。

    ご連絡いただいた変換に失敗したネットワークなのですが、こちらで以下の方法で試してみたところ変換することができましたのでご連絡いたします。お手数ですが、お試しいただけますでしょうか?

    また、ご指摘いただいたTipsは今後のe-AIトランスレータ ユーザーズマニュアル更新の際に参考とさせていただきます。ご指摘ありがとうございました。

    [変更前のネットワーク]
    github.com/.../neural_network_raw.py

    [変更箇所]
    ・21行目に追加
    import os
    ・102行目以降に追加
    # Save
    out_dir = "./tf_model"
    if os.path.isdir(out_dir) is False:
    os.makedirs(out_dir)
    saver = tf.train.Saver()
    saver.save(sess, out_dir+"/tensorflow_model")

    # Retrieve the protobuf graph definition
    graph = tf.get_default_graph()
    input_graph_def = graph.as_graph_def()

    all_nodes = []
    print("Name of all the nodes/operations in the loaded tensorflow model:\n")
    for n in input_graph_def.node:
    all_nodes.append(n.name)
    print(n.name)
    for n in all_nodes:
    if any(i == "gradients" for i in n.split("/")):
    break
    output_node_names = n
    print("Extracted output node name:\n", output_node_names)
    print("Collect output node name:\n",prediction)

    よろしくお願いいたします。
  • かずさん、こんにちは。
    スタッフのdartsmanです。

    e-AIトランスレータでの変換ができない件、その後正しく変換できるようになりましたでしょうか?

    別のお問い合わせの中で、同様にe-AIトランスレータが動作しない問題があり調査していたのですが、この調査の中で、TensorFlowのインストールを複数回行うと
    トランスレータの実行に必要なファイルが欠落するケースがあることが分かりました。

    欠落するファイルは、MSVCP140.dllという名前のファイルで、これは
    以下のパッケージに含まれています。
    [Microsoft Visual C++ 2015 再頒布可能パッケージ]
    www.microsoft.com/.../details.aspx

    このため、もし現在もe-AIトランスレータでの変換が正しく動作していないようでしたら、
    一度、上記パッケージのインストールを行ったうえで再度動作確認をお願いできませんでしょうか?

    よろしくお願いいたします。
  • 石川さん、たびたび申し訳ありません。
    スタッフのdartsmanです。

    変更箇所の説明ですが、投稿したところタブが消えてしまいましたので、

    再度投稿させていただきます。

    [変更前のネットワーク]
    https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/neural_network_raw.py

     [変更箇所]
    ・21行目に追加
    import os
    ・102行目以降に追加

        # Save
        out_dir = "./tf_model"
        if os.path.isdir(out_dir) is False:
            os.makedirs(out_dir)
        saver = tf.train.Saver()
        saver.save(sess, out_dir+"/tensorflow_model")

        # Retrieve the protobuf graph definition
        graph = tf.get_default_graph()
        input_graph_def = graph.as_graph_def()

        all_nodes = []
        print("Name of all the nodes/operations in the loaded tensorflow model:\n")
        for n in input_graph_def.node:
            all_nodes.append(n.name)
            print(n.name)
        for n in all_nodes:
            if any(i == "gradients" for i in n.split("/")):
                break
            output_node_names = n
        print("Extracted output node name:\n", output_node_names)   
        print("Collect   output node name:\n",prediction)

     

    よろしくお願いいたします。

  • dartsmanさん,手厚いサポートありがとうございます。
    教えていただいたコードで変換することができました。
    ただ,TensorFlowの勉強不足のため,モデルを保存したあとの処理でe-AIトランスレータの結果が変わるのが理解できませんでした。

    今後ともよろしくお願いいたします。