PytorchPytorchはテンソル操作や機械学習に関する処理が実装されたPythonライブラリです。Learningのフレームワークのひとつと認知されており、研究者が積極的に利用しているらしいです(詳しくはないです)。ここでは下記にある公式チュートリアルコードをreticulateパッケージを用いたRから実行できるように、テンソル同士の四則演算とスライシングによる値更新を関数に置き換えております(Tensorとndarrayの演算がサポートされていないみたいな内容をちらっと読みましたが、詳しくないので中身はあまり考えていません)。LOSS:0.000103"AllenNLPAllenNLPは前述のPytorchで作られた自然言語処理ライブラリです。Learningによるアプローチ)の開発に利用されています。本記事ではチュートリアル記事にあるコードをRで実行して、事前学習されたELMoの分散表現の取得を試しています(allennlp.commands.elmo.ElmoEmbedderクラスを呼び出し)。BERTは誰かに任せたいです。0.1802062まとめここまででPythonが書かれたファイルやライブラリなどを呼び出し・評価して、Rで結果を得る方法を示しました。これにより、Pythonで開発された有用なライブラリがPythonを書けないというRユーザーにも広く使われることでしょう。先ほどのSpaCyを用いたspacyrパッケージを始め、reticulateパッケージでPythonライブラリを利用したRパッケージは増えてきています。前書きで触れたtensorflowパッケージやkerasパッケージ(これらはreticulateパッケージを開発しているRStudio社による)を筆頭に以下で挙げるようなパッケージがCRAN公開されており、今後も目が離せないです。してPythonとPythonライブラリをインストールし、reticulateパッケージで指定したバージョンが呼び出せるように設定します(事前準備が済んでいる場合はこの章は飛ばしてください)。reticulateで用いるPython環境の準備reticulateパッケージでは「バージョン2.7以降のPython」が事前にインストールされている必要があります。ソースコードからビルドまたはyumやaptなどのパッケージ管理システムでインストールしたPython以外にvirtualenvやconda環境を指定でき、その場合はuse_virtualenv()やuse_condaenv()を用います。本記事ではuse_python()でパス指定していますが、以下の公式サイトを参考に自身の環境に応じて適宜設定ください。ConfigurationPythonライブラリであるNumpy(>=1.6)とPandasも事前にインストールしておきましょう(Scipyもあるとよいでしょう)。これらはR-Python間の型変換で用いられます。reticulateパッケージではvirtualenvやconda環境の構築する関数群も提供されており、それらを利用する場合はpy_install()でPythonライブラリのインストールも行えます(今回はこれらの環境を使わないので、参照するライブラリはあらかじめpipで入れておきました)。使用するPython環境が用意できたらreticulateパッケージで呼び出せる状態になっているか確認します。ここではパッケージ管理システムでインストールしたPython3.6のバイナリをuse_python()でパス指定し、py_config()で設定状況を表示しています。確認済みで問題なく指定バージョンを参照できていれば、py_config()やpy_available()は飛ばしても構いません。指定したPythonを使わせるのに苦しむ場合も少なくありません。私が遭遇した事例として、py_config()をuse_python()の前に呼び出してしまうとreticulateパッケージ内の変数を上書きして、use_python()で指定したPythonではなくシステムデフォルトが利用されました(そのうち修正されることを期待しています。利用するPythonの指定が一度しかされないためという可能性もあります)。"/usr/local/bin/python3.6"py_discover_config()では影響が出ません。"/usr/local/bin/python3.6"RMarkdownでreticulateパッケージを利用するときに別チャンク内でpy_config()を呼び出した場合も影響するので、呼び出しているPythonバージョンには注意した方がいいかもしれません。use_python()で指定したPythonは、一度設定するとセッション中は変更できそうにないのでしょうか。Pythonバージョンを横断して使用するケースは少ないでしょうが、一応留意しておきましょう。functionその他いろいろreticulateパッケージは今回のような使い方の他にRMarkdownのPython設定(eng_python())や、Rセッション中からのインタラクティブ実行(repl_python())もできます。1.2ではreticulateパッケージを用いたPython利用をサポートする機能が導入されています。reticulateこうしたreticulateパッケージでPythonライブラリを活用するRパッケージを開発したい場合は、公式サイトを参考にしてください。Packageまとめと所感RからPythonを活用するパッケージであるreticulateについて、定義された関数やPythonライブラリに適用した結果を表示して動作を確認しました。今回はそもそも動いてくれるかどうかを検証するために簡易な実装を複数のPythonライブラリで試しましたが、見たところ問題はなさそうですので、今後はもっと本格的なモデルを動かしてもいいかもしれません(ただし、その場合はGPU環境を検討すべきでしょう)。Pytorchに関しては自動微分の例もreticulateパッケージで書き換えてやってみたのですが、withのところでうまくいきませんでした。したらPytorch側の問題であろうかと調べてみたら下記のissueがあったので、しばらく様子を見ることにしました。with-statement個人的にはPythonライブラリをRで用いる行為は学習済みモデルを別タスクに使う感覚に近く、この流れが進めば実装という壁は意味をなさなくなっていくのだろうかなとか感じました(GraalVMベースのRの話も興味深い)。インフラ」というレイヤーのうち、ビジネスとアルゴリズム以外はよしなにできてしまえて楽できるかと思ったものですが(データは学習済みモデル、実装は今回の話、インフラはクラウド)、そんな未来はまだ来そうにないです。少なくとも言語が違う点で争うのはもうやめにしましょう。upLoginユーザーは見つかりませんでした。