LoginSignup
2
1

More than 5 years have passed since last update.

Win10でPyTorch C++API ExamplesのDCGANを動かす

Posted at

はじめに

普段はPythonを使って学習させているのですが、何となくC++APIを使ってみたくなりました。しかし、WindowsでMSBuild使うと(当たり前ですが)、チュートリアル通りでは動きませんでした。
これ以外の方法もあるかと思いますが、私はこの方法で成功したので残しておきます。

環境

Windows 10
CUDA 10.0
NVIDIA Driver 430.39
MSBuild ver. 15.9.21+g9802d43bc3
cmake ver. 3.13.3

libtorchをダウンロード

PyTorchの公式サイトから自分に合ったlibtorchをダウンロード
展開して/path/to/libtorchに配置
私はCドライブ直下に入れてしまったので今回はそれで進めます。

ビルド方法

pytorchのexamplesをcloneするところから始めます。
lsを使えているのはcmdの代わりにcmder使っているからです。

注意
今回の方法でcloneしたまま行うと、エラーが出ずに"CUDA is available! Training on GPU."とだけ
Logに出力されて終了します。
これはdataディレクトリが適切な場所に置かれていないためです。
なので以下の方法のどちらかをとってください。

  • dcgan.cppファイルの17行目のkDataFolderの値を"./data" から "../data"に変更
dcgan.cpp
17   const char* kDataFolder = "./data" // => "../data"に変更
  • 以下に示す流れで生成されたdcgan.exeと同じディレクトリ(dcgan/build/Release)に生成されたdataディレクトリ(dcgan/build/data)を入れる。

というわけで流れを示します。

$ git clone https://github.com/pytorch/examples.git
$ cd examples/cpp/dcgan
$ ls
CMakeLists.txt  dcgan.cpp  display_samples.py  README.md
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_PREFIX_PATH=C:\libtorch -Ax64 -DCMAKE_BUILD_TYPE=Release
... (長いのでカット)
$ msbuild dcgan.sln /p:Configuration=Release
... (非常に長いのでカット warningがいっぱい出ます)
$ cd Release
$ dcgan
CUDA is available! Training on GPU.
define Generator.
Defined Generator.
Define Discriminator.
Defined Discriminator.
Define MNIST
Defined MNIST
[ 1/30][ 10/938] D_loss: 0.8263 | G_loss: 1.6410
[ 1/30][ 20/938] D_loss: 0.6547 | G_loss: 2.2157
[ 1/30][ 30/938] D_loss: 0.6314 | G_loss: 2.3801
[ 1/30][ 40/938] D_loss: 0.5518 | G_loss: 3.0052
[ 1/30][ 50/938] D_loss: 0.4735 | G_loss: 3.4814
[ 1/30][ 60/938] D_loss: 0.4381 | G_loss: 3.8758
.
.
.
Training complete!

参考

pytorchのissueを参考にしたのですが、どのissueだったか忘れてしまいました...。
https://github.com/pytorch/pytorch/issues

2
1
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
2
1