Windows環境でのC++の実行について

1,059 views
Skip to first unread message

Yu

unread,
Jul 2, 2018, 10:50:28 PM7/2/18
to Neural Network Console Users (JP)
こんにちは。

Windows環境でのC++の推論実行で、下記の2点で行き詰っています。

1. nnp、pgm画像の作成ができない
2. C++のための環境を構築後に、NNCが動かなくなった

~~~~~
動作環境
 Windows10
 neural network console1.1.6
 nnabla0.9.9

~~~~~~
1. nnp、pgm画像の作成ができない
 以下に従って、C++の環境を構築し、サンプルプログラムが動くのを確認しました。
 NNCで作成したほかの推論器も動かしたいと思ったのですが、nnpファイルとpgmファイルの作成方法がわかりません。
 nnpはh5ファイルをprotobufに変換し、zipにした後に拡張子を変更しましたが、読み込めません。
 pgmはフリーソフトで画像変換をかけましたが、これも同じく読み込めません。
 できれば、ソースコードやコマンドレベルで変換する手段があれば、ご教示いただけたらと思います。


2. C++のための環境を構築後に、NNCが動かなくなった
 C++の環境構築後にNNC(nnalba)を実行するとhdf5周りのエラーがでて、実行できなくなりました。
 出ているエラーは下に記載します。
 おそらく、Microsoft Visual Studio 14.0あたりが原因だと思うのですが、
 パスを通したり、バージョンが高いものをインストールしても問題が解決しません。
 修正案をいただければと思います。

●NNC実行時
2018-07-03 09:17:45,833 Training process is started.
python "C:\XXX\neural_network_console\libs\nnabla\python\src\nnabla\utils\cli\cli.py" train
 -c "C:\XXX\neural_network_console\surface_detection\caffe_base.files\20180703_091745\net.nntxt"
 -o "C:\XXX\neural_network_console\surface_detection\caffe_base.files\20180703_091745"
2018-07-03 09:17:46,683 [nnabla]: Creating cache data for "C:\XXX\neural_network_console\XXX\XXXcsv"
2018-07-03 09:17:47,894 [nnabla]: Creating cache data for "C:\XXX\neural_network_console\XXX\XXX.csv"
2018-07-03 09:17:53,559 [nnabla]: Train with contexts {'cpu': ['default'], 'cuda': ['default', 'cudnn']}
Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\XXX\neural_network_console\libs\Miniconda3\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "C:\XXX\neural_network_console\libs\Miniconda3\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "C:\XXX\neural_network_console\libs\nnabla\python\src\nnabla\utils\cli\cli.py", line 154, in main
    args.func(args)
  File "C:\XXX\neural_network_console\libs\nnabla\python\src\nnabla\utils\cli\train.py", line 246, in train_command
    o.optimizer.data_iterator())
  File "C:\XXX\neural_network_console\libs\nnabla\python\src\nnabla\utils\load.py", line 395, in <lambda>
    cache_dir, batch_size, shuffle, normalize=dataset.normalize))
  File "C:\XXX\neural_network_console\libs\nnabla\python\src\nnabla\utils\data_iterator.py", line 432, in data_iterator_cache
    normalize=normalize)
  File "C:\XXX\neural_network_console\libs\nnabla\python\src\nnabla\utils\data_source_implements.py", line 85, in __init__
    with self._filereader.open_cache(filename) as cache:
  File "C:\XXX\neural_network_console\libs\Miniconda3\lib\contextlib.py", line 81, in __enter__
    return next(self.gen)
  File "C:\XXX\neural_network_console\libs\nnabla\python\src\nnabla\utils\data_source_loader.py", line 148, in open_cache
    with h5py.File(filename, 'r') as h5:
  File "C:\XXX\neural_network_console\libs\Miniconda3\lib\site-packages\h5py\_hl\files.py", line 269, in __init__
    fid = make_fid(name, mode, userblock_size, fapl, swmr=swmr)
  File "C:\XXX\neural_network_console\libs\Miniconda3\lib\site-packages\h5py\_hl\files.py", line 99, in make_fid
    fid = h5f.open(name, flags, fapl=fapl)
  File "h5py\_objects.pyx", line 54, in h5py._objects.with_phil.wrapper
  File "h5py\_objects.pyx", line 55, in h5py._objects.with_phil.wrapper
  File "h5py\h5f.pyx", line 78, in h5py.h5f.open
OSError: Unable to open file (file signature not found)


●nnabla(pythonからの実行)
 
Warning! ***HDF5 library version mismatched error***
The HDF5 header files used to compile this application do not match
the version used by the HDF5 library to which this application is linked.
Data corruption or segmentation faults may occur if the application continues.
This can happen when an application was compiled by one version of HDF5 but
linked with a different version of static or shared HDF5 library.
You should recompile the application or check your shared library related
settings such as 'LD_LIBRARY_PATH'.
You can, at your own risk, disable this warning by setting the environment
variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'.
Setting it to 2 or higher will suppress the warning messages totally.
Headers are 1.10.2, library is 1.10.1
            SUMMARY OF THE HDF5 CONFIGURATION
            =================================
General Information:
-------------------
                   HDF5 Version: 1.10.1
                  Configured on: 2017-05-08
                  Configured by: Visual Studio 14 2015 Win64
                    Host system: Windows-10.0.15063
              Uname information: Windows
                       Byte sex: little-endian
             Installation point: C:/Program Files/HDF5
Compiling Options:
------------------
                     Build Mode:
              Debugging Symbols:
                        Asserts:
                      Profiling:
             Optimization Level:
Linking Options:
----------------
                      Libraries:
  Statically Linked Executables: OFF
                        LDFLAGS: /machine:x64
                     H5_LDFLAGS:
                     AM_LDFLAGS:
                Extra libraries: X:inclib-vc14-x64/zlib.lib;X:/inclib-vc14-x64/libsz.lib;X:/inclib-vc14-x64/libaec.lib
                       Archiver:
                         Ranlib:
Languages:
----------
                              C: yes
                     C Compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe 19.0.24215.1
                       CPPFLAGS:
                    H5_CPPFLAGS:
                    AM_CPPFLAGS:
                         CFLAGS: /DWIN32 /D_WINDOWS /W3
                      H5_CFLAGS:
                      AM_CFLAGS:
               Shared C Library: YES
               Static C Library: YES
                        Fortran: OFF
               Fortran Compiler:
                  Fortran Flags:
               H5 Fortran Flags:
               AM Fortran Flags:
         Shared Fortran Library: YES
         Static Fortran Library: YES
                            C++: ON
                   C++ Compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x86_amd64/cl.exe 19.0.24215.1
                      C++ Flags: /DWIN32 /D_WINDOWS /W3 /GR /EHsc
                   H5 C++ Flags:
                   AM C++ Flags:
             Shared C++ Library: YES
             Static C++ Library: YES
                            JAVA: OFF
                   JAVA Compiler:
Features:
---------
                  Parallel HDF5: OFF
             High-level library: ON
                   Threadsafety: OFF
            Default API mapping: v110
 With deprecated public symbols: ON
         I/O filters (external):  DEFLATE DECODE ENCODE
                            MPE:
                     Direct VFD:
                        dmalloc:
 Packages w/ extra debug output:
                    API Tracing: OFF
           Using memory checker: OFF
Memory allocation sanity checks: OFF
            Metadata trace file:
         Function Stack Tracing: OFF
      Strict File Format Checks: OFF
   Optimization Instrumentation:
Bye...

小林由幸

unread,
Jul 5, 2018, 10:23:04 PM7/5/18
to Neural Network Console Users (JP)
> 1. nnp、pgm画像の作成ができない

作成したnnpファイルが読み込めないとのことですが、こちらの状況をもう少し詳しくお知らせいただけますでしょうか。
(エラーメッセージが表示される場合はその内容など)
pgmについては大変シンプルフォーマットですので、様々なプログラミング言語で簡単に作成することができます。



また、以下に配置しているpgmファイルをテキストエディタやバイナリエディタで開いていただいても参考になるかと思います。
https://github.com/sony/nnabla/tree/master/examples/cpp/mnist_runtime

> 2. C++のための環境を構築後に、NNCが動かなくなった

Neural Network Consoleで発生しているエラーについては、キャッシュファイルのフォルダ
(データセットCSVファイルの拡張子を.cacheに変更した名前のフォルダ)内に
キャッシュファイル(.h5)以外のファイルが存在している可能性があります。
そのようなファイルを削除していただくか、一度.cacheフォルダを削除して再度キャッシュを
作成していただけますでしょうか。

また、Windows上でPythonから推論を行う場合は、動作環境構築済みの
Neural Network Console同梱のPython環境の利用が最も簡単です。

コマンドプロンプトから以下のようにパスを指定することで、Neural Network Console上から
コマンドラインインターフェイスを呼ぶ場合と同じ動作が期待できます。

SET PATH=%PATH%;C:\xxx\neural_network_console\libs\Miniconda3;C:\xxx\neural_network_console\libs\Miniconda3\Scripts
SET PYTHONPATH
=C:\xxx\neural_network_console\libs\nnabla\python\src

yoshi

unread,
Apr 1, 2019, 9:55:29 PM4/1/19
to Neural Network Console Users (JP)
関連して教えて頂ければと思います。

mnist_runtime.exe で付属のlenet_010000.nnpとpgmファイルで正常動作することを確認しています。

これで、NNCでネットワーク構築後にnnpファイルをエクスポートして、そのまま利用できるのかな
と考えておりましたが、エラー表示もなく応答なく終了していまします。
使い方や考え方が間違っているのでしょうか?

yoshi

unread,
Apr 1, 2019, 10:08:36 PM4/1/19
to Neural Network Console Users (JP)
過去記事を参考に自己解決しました。

最後の引数(executor)に Executor を入力したところ動作しました。

これはどこかに解説されているのでしょうか。
記載されているドキュメントがあれば参考にしたいのですが、必要な
情報になかなかたどり着けません。



2019年4月2日火曜日 10時55分29秒 UTC+9 yoshi:

小林由幸

unread,
Apr 13, 2019, 11:22:46 PM4/13/19
to Neural Network Console Users (JP)
こちらはNeural Network Consoleとしての解説はなく、
Neural Network Librariesの以下のドキュメントで解説しています。

Neural Network Consoleの学習結果をNeural Network Librariesを用いて利用する方法については
今後もドキュメントの充実を進めていければと思います。
Reply all
Reply to author
Forward
0 new messages