C++

ChatGPTにlibtorchでのテンソル正規化について質問してみた

ChatGPTにlibtorchでテンソルの正規化について質問してみた。 質問文に対して少しズレた答えである上に、テンソルの割り算部分で形状に互換性がなく、エラーの出るコードが返ってきた。 やはり鵜呑みには出来ないが、エラー箇所を具体的にChatGPTがわかるよ…

libtorchの学習にはリファレンスやドキュメントよりChatGPTを優先して使う

libtorchのリファレンスや公式チュートリアルサイトはあるにはあるのだが、良い学習効率が得られるとは思えないので、ChatGPTを使ってみた。 「libtorchで何々をするには?」と聞くだけでサンプルコードと説明をずらずらっと出してくれる。 以下のような質問…

libtorchにおけるテンソルのスライスやリダクションが分かりづらい時

libtorchにおいて3次元以上のスライスで-1を指定し、テンソルをリダクションする時の記法で迷ったので練習。 using torch::indexing::Slice; using torch::indexing::None; using torch::indexing::Ellipsis; //3階テンソル torch::Tensor t = torch::aran…

Visual Studio 2022でDiagnostic Toolsが動かない時

VSインストーラーから.NET開発環境(診断ツールは必須)を入れておく Visual Studio Standard Collector Serviceが開始されていることをWindowsサービスで確認する learn.microsoft.com 他のソフトウェアからの操作やVSのアンインストールなどが影響してVisu…

DLLにMQL5のdatetime型を引数として渡す時

MQL5のdatetime型はMQL5内ではlongと互換性があり64bit(8バイト)である。 64bitのC++プログラムに渡す場合、longが32bitでlong longが64bitの場合には、DLL側の引数の型をlong long型にする。 C++DLL側の引数を32bitのlong型にしてしまうと、ポインターか…

Visual C++ 2022でPLplotを使う際にフォントファイルが無いと怒られる場合

【環境】 Windows 11 64bit Visual Studio 2022 vcpkg 【問題】 vcpkgのリポジトリにPLplotがあったのでインストールし、サンプルプログラムを走らせてみたが、以下のエラーが出る。 *** PLPLOT ERROR, IMMEDIATE EXIT *** Unable to either (1) open/find o…

vcpkg+Visual Studio 2022でboostをビルドしてもvc140のライブラリしか生成されない時

【環境】 Windows 11 64bit Visual Studio 2022 vcpkg ツールは全て記事投稿時点で最新 【目的】 vc143(VC++2022)用のboostをvcpkgでビルドしてインストールする。【問題】 VS2022ツールセットしかインストールされていないにも関わらず、なぜかvc140とい…

libtorchに於いてleaf-tensorのgrad()を呼び出すと怒られる

libtorchの公式サンプルをいじっていて、ネットワークのリーフノードの勾配を取得したらどうなるか試した所、以下のようなWarningが出た。 y.grad() = [W TensorBody.h:494] Warning: The .grad attribute of a Tensor that is not a leaf Tensor is being a…

libtorchでmnist学習サンプルプログラムがデータのロード時にランタイムエラーや例外を出す時

LibtorchはPytorch C++ Frontendなどとも呼ばれており、Tensorflowなどに比べてVisual Studioへの組み込みが簡単なのだが、環境を構築した後に試せと至るところで書かれているMNISTデータセットでの学習サンプルプログラムがデータ読み込みの時点でよくコケ…

Windows10でTensorflow2のC++ライブラリビルドが出来た

前に一度試して、ビルド条件がとても面倒くさそうなので放置していたが、下の記事を参考にして試したところ、Windows10においてTensorflow2のC++ライブラリビルドに成功した。 qiita.com めちゃくちゃ勘違いしていたのだが、WSL2などは使わずにMSYSで出来…

TensorFlow C++ライブラリのWindows環境におけるビルド

Windowsで汎用的なディープラーニング系のC++ライブラリを選ぼうとすると、導入の簡単さではPyTorchが上だが、一応TensorFlowのC++ライブラリの導入にもなれておかないとなぁということでやってみた。多分使わないと思うが。 下記内容は基本的な流れだけであ…

vcpkgでインストールしたパッケージとerror LNK2001

vcpkgでtripletをx64-windowsにしてインストールしたライブラリを使用してビルドした際に、error LNK2001、が出る場合。 vcpkg/triplet以下にあるx64-windows.cmakeへ以下の様に記述することで解決する公算が高い。 set(VCPKG_PLATFORM_TOOLSET v141) set(VC…

vcpkgにおけるboostのアンインストール

.\vcpkg.exe --triplet=x64-windows remove boost-uninstall --recurse PCにVS141以降しかインストールされて無くてもv140のバイナリしかインストールされない。tripletでツールセットバージョンv141を設定しても駄目。 v140とVS141はバイナリ互換性があるの…

C++におけるstd::moveとムーブコンストラクタ

C++

今までコンテナぐらいにしかstd::moveを使ってこなかったので其の挙動はあまり理解していなかったが、ユーザー定義のクラスや構造体でムーブコンストラクタやムーブ代入演算子などを実装する場合、結局は、昔からスマートポインタなど行っていた様なコピー先…

Visual Studio 2022における自動整形

自動整形のタイプをVisual Studio形式にすると、変数の型が自動的に下記の様に整形されるように変更されている。変数の型なんだから&や*は型名にくっつけておけというポリシーを感じる。 わからんではない。 const std::string& _base mcpp.hatenablog.com

Visualo Studio 2022における参照型引数への右辺値渡しでエラー

Visual Studio 2022(VC17)においてC++言語標準を「Preview - Features from the Latest C++ Working Draft (/std:c++latest)」に設定してVisual Studio 2017(VC15、C++14)のソースをコンパイルしたところ、参照型引数に「右辺値」を渡すことが禁止されて…

Visual Studio 2022とサードパーティライブラリの足並み

VS2022がリリースされて焼1年になるが、有用なサードパーティライブラリがVS2019にすら対応してない事も少なくなく、VS2017を主に使う理由になっていたりする。 そういうものに依存しない体制にしようとも思うが、ライブラリが有用すぎてジレンマが発生して…