PyTorch

PyTorch C++ FrontendでTensor <-> cv::Matの相互変換

PyTorchのC++ APIであるLibTorchのTensorとOpencvの行列を相互変換する方法. torch::Tensor -> cv::Mat torch::Tensorをcv::Matに変換する例 例えば,128x128の1ch行列を変換するには以下のようにする. cv::Mat mat(128,128, CV_32FC1, tensor. template d…

PyTorchの便利な周辺ライブラリまとめ

PyTorchの便利な周辺ライブラリのメモ. CV系 NLP Audio 確率的プログラミング 可視化 その他 チュートリアル,入門など (adsbygoogle = window.adsbygoogle || []).push({}); CV系 torchvision: コンピュータビジョンで便利なtransforms, モデル,データセ…

Library not loaded: libmklml.dylib use c++ front

Mac OSでPyTorchのC++ APIのコードを実行しようとすると以下のエラーが出る. dyld: Library not loaded: @rpath/libmklml.dylib Referenced from: /Users/hzq/Documents/www/test/libtorch/lib/libcaffe2.dylib Reason: image not found Abort trap: 6 libm…

PyTorchでKerasのmodel.summary()みたいなやつ

pytorch-summaryを使うとKerasのmodel.summary()のようにモデルの表示ができる. GitHub repo Keras has a neat API to view the visualization of the model which is very helpful while debugging your network. Here is a barebone code to try and mimi…

PyTorchでレイヤーごとに違う学習率を設定する

PyTorchで各レイヤーごとに違うLearning Rateを設定する方法. 例として,以下のようなネットワークを想定する. class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(784, 128) self.fc2 = nn.Linear(128, 256) s…

jupyter notebookでPyTorch C++ APIを試してみる

jupyter notebookでC++を動かすカーネルであるxeus-clingとPyTorchのC++ APIであるlibtorchを利用して,jupyter notebook上でPyTorchをC++から使ってみる. (adsbygoogle = window.adsbygoogle || []).push({}); 準備 LibTorchのインストール はじめに,PyTo…

PyTorchでGrad-CAMによるCNNの可視化.

Grad-CAMはConvolutional Neural Networksの可視化手法の一種.CNNが画像のどの情報を元にして分類を行なっているのかを可視化するのに用いられる. Arxiv Project page 今回はこのGrad-CAMをPyTorchで試してみる. (adsbygoogle = window.adsbygoogle || []…

PyTorch C++ APIでGPUを使ってみる

今回はPyTorchのC++ APIでGPUを使った学習と推論を試してみる. (adsbygoogle = window.adsbygoogle || []).push({}); GPUの使い方 C++でGPUが使えるかどうかは,以下のように確認できる torch::cuda::is_available() ここはpythonとほとんど変わらない GPU…

PyTorch C+ APIで自作データセットを定義する.

PyTorchのC++ APIで自作のデータセットの定義の仕方を紹介. 今回は以下のようなデータセットを作る, データセットクラス:ImageDataset(root, labelfile) 画像が格納されたルートディレクトリ:root 画像は以下のように格納 $ tree test_data/ test_data/ …

PyTorchでTorch Hubに自作モデルの登録

PyTorchの自作モデルをTorch Hubに登録してみる. GitHub repo hubconf.pyの設置 以下のようにhubconf.pyをレポジトリの直下に設置する. # -*- coding: utf-8 -*- from models import MobileNet_v2 def mobilenet_v2(pretrained=False, *args, **kwargs): m…

PyTorchのC++ APIを試してみる

PyTorchではC++ APIが提供されている. pytorch.org (adsbygoogle = window.adsbygoogle || []).push({}); 多層パーセプトロン版 ビルド $ mkdir build $ cd build $ cmake .. $ cmake -DCMAKE_PREFIX_PATH=/absolute/path/to/libtorch .. $ make #include <torch/torch.h> </torch/torch.h>…

PyTorchでTorch Hubを使ったpre-trained modelの共有

Torch Hubは研究の再現性のために,PyTorchのpre-trained modelの共有のための機能. https://pytorch.org/docs/master/hub.html hubconf.py 以下のフォーマットでentrypointを定義する entrypointはPyTorchのモデルを返す関数 def entrypoint_name(pretrain…

PyTorchでConditional GANs

GANsの学習フレームワークの中に明示的にラベル情報を入れるConditional GANsをPyTorchで実装してみる. Conditional Generative Adversarial Nets paper link モジュールのインポート 必要なライブラリをimportしておく ちなみにjupyter notebookの場合は f…

PyTorchでAdversarial Attack. モルモットをインドゾウに誤認識させる

PyTorchを用いて分類器に対する攻撃手法であるAdversarial Attackを実装してみる. これは,分類器に対して故意に誤分類を誘発させるような画像を生成する攻撃手法である.例えば, 自動運転車に対する標識の誤検出の誘発 顔認識システムの第三者による誤認…

PyTorchとPyroでベイジアンニューラルネットワーク

PyTorchと,確率的プログラミングフレームワークであるPyroを用いてベイジアンニューラルネットワークを試してみる. Pyro Uber AI Labsによって開発が行われている github link blog post Pyro is a flexible, scalable deep probabilistic programming lib…