libtorchのリファレンスや公式チュートリアルサイトはあるにはあるのだが、良い学習効率が得られるとは思えないので、ChatGPTを使ってみた。
「libtorchで何々をするには?」と聞くだけでサンプルコードと説明をずらずらっと出してくれる。
以下のような質問に対し、ChatGPTの返答はこうなった。内容が誤っていることもあるので注意は必要だが、大体の事がわかるというだけで非常に有り難い。
自分 libtorchでCSVから入力データを作るには? ChatGPT LibTorchを使用してCSVファイルから入力データを読み込む方法はいくつかあります。基本的な手法の1つは、C++のファイル入出力機能を使用してCSVファイルを読み込み、データをテンソルに変換することです。以下はその例です。
#include <torch/torch.h> #include <iostream> #include <fstream> #include <sstream> #include <vector> // CSVファイルからデータを読み込み、テンソルに変換する関数 torch::Tensor readCSVToTensor(const std::string& filename, const int numColumns) { std::ifstream file(filename); std::string line; std::vector<float> data; while (std::getline(file, line)) { std::stringstream ss(line); std::string cell; while (std::getline(ss, cell, ',')) { data.push_back(std::stof(cell)); } } file.close(); // データをテンソルに変換 auto options = torch::TensorOptions().dtype(torch::kFloat32); torch::Tensor tensor = torch::from_blob(data.data(), {static_cast<long>(data.size() / numColumns), numColumns}, options); return tensor.clone(); // コピーして返す } int main() { // CSVファイルからデータを読み込み std::string filename = "data.csv"; // 適切なファイルパスに変更してください torch::Tensor input_data = readCSVToTensor(filename, 3); // 3はCSVの列数を表します // 入力データの表示 std::cout << "Input Data:\n" << input_data << std::endl; return 0; }
この例では、readCSVToTensor()関数を使用して、指定されたCSVファイルからデータを読み込み、それをテンソルに変換しています。CSVファイルはコンマ区切りとして扱われ、各行のデータは1行ごとに読み込まれ、それぞれの要素はカンマで区切られます。読み込まれたデータは、torch::from_blob()関数を使用して、直接テンソルに変換されます。 データの形状はCSVファイルの列数と、各列のデータ数に基づいて自動的に決定されます。この例では、CSVファイルの列数が3と仮定していますが、必要に応じて変更してください。
プロンプターが人海戦術的に学習させていなければChatGPTと言えどもさすがに今のようなクオリティにはならないのだが、Cookbook系をわざわざ開く機会は間違いなく減るだろう。