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

 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系をわざわざ開く機会は間違いなく減るだろう。