Python 3でPyBrainを実行する

こんにちは、%username%!

python3へのPyBrainライブラリの移植についての話をしたいと思います。これは最近ハブで説明されました
カットの下の詳細。

pythonを習い始めたばかりで、 ニューラルネットワークにも興味があるので、ライブラリの機能に非常に興味を持ちました。
ロードして設定するのは便利でしたが、それは不運です! Pybrainpython3をサポートしておらず、4か月間は更新されていません。
悲しい考えで、デビッド・ビーズリーによる「Python:A Complete Reference」を開き、読書に飛び込んだ。
python3パッケージには2to3ユーティリティがあります。
githubでpybrainプロジェクトを分岐し 、彼女を拷問し始めました。
最初に、 2to3の助けを借りて、彼はpybrainフォルダー悪用し、次にフォルダーを例のサンプルと共に悪用しました。
奇妙なことに、すべてがほとんど痛みを伴わずに行われ、チームは簡単に不名誉になりました(記事の最後にある「2to3オプションのクイックリファレンス」を参照してください)。
2to3 -Wn -o pybrain3/ pybrain/ 2to3 -Wn -o examples3/ examples/ 

この場合、コードをその場で編集したくありませんでしたが、ユーティリティが既に移植されたソーステキストを保存する2つの追加フォルダー(examples3とpybrain3)を作成しました。

ライブラリのバグをテストする


ライブラリのパフォーマンスをテストするために、テストに付属のサンプルを使用することにしました。
最初の起動時に、次のようなエラーが発生しました。
 Traceback (most recent call last): File "test1.py", line 2, in <module> from pybrain.tools.shortcuts import buildNetwork File "/usr/lib/python3.2/site-packages/PyBrain-0.3.1-py3.2.egg/pybrain/__init__.py", line 1, in <module> from .structure.__init__ import * File "/usr/lib/python3.2/site-packages/PyBrain-0.3.1-py3.2.egg/pybrain/structure/__init__.py", line 1, in <module> from .connections.__init__ import * File "/usr/lib/python3.2/site-packages/PyBrain-0.3.1-py3.2.egg/pybrain/structure/connections/__init__.py", line 1, in <module> from .full import FullConnection File "/usr/lib/python3.2/site-packages/PyBrain-0.3.1-py3.2.egg/pybrain/structure/connections/full.py", line 5, in <module> from .connection import Connection File "/usr/lib/python3.2/site-packages/PyBrain-0.3.1-py3.2.egg/pybrain/structure/connections/connection.py", line 3, in <module> from pybrain.utilities import abstractMethod, Named File "/usr/lib/python3.2/site-packages/PyBrain-0.3.1-py3.2.egg/pybrain/utilities.py", line 15, in <module> from string import split ImportError: cannot import name split 

ファイルを操作する必要がありました。 誤ったインポートについてコメントし、いくつかの関数名を修正しました...一般的に、初心者でも特に複雑なことはありません。
いくつかの例で、 matplotlibpylabモジュールが不足しているため、操作不能に遭遇しました。
AUR'e(ArchLinuxを持っています)でpython-matplotlib-gitパッケージを見つけてインストールしました。 幸いなことに、既にpython3に移植されていますが、サポートされているパッケージのリストには含まれていません。 他のシステムでは、おそらくモジュールを手動でインストールする必要があります。 ここで取ってください
私は特にpylabを理解していませんでした。 それはscipyの一部です。 配信されたコミュニティ/ python-scipyバージョン0.10-サンプルの別の部分が機能しました。
matplotlibを介してこれらの美しいグラフィックを表示する例からいくつかの写真を提供します。
コンソールに出力する他の例のダンプは提供しません-たくさんの数字で、特に興味深いものはありません。
TinyPicによる画像とビデオのホスティング
TinyPicによる画像とビデオのホスティング

おわりに


したがって、わずか数時間で、最小限の労力でライブラリを十分に機能する状態に移植することができました。 ありがとう2to3
ライブラリは機能しているようですが、次のとおりです。

理想的には、ライブラリを完全にカバーするテストスイートを作成します。 python2python3でテストを実行し、結果を比較します。 そうして初めて、ポートが正しいと結論付けることができます。

アドバイス、提案、推奨事項があれば嬉しいです!
誰かが手助けする準備ができている場合-書き込み、私はうれしいです!

PS。 githubのメインpybrainブランチへのプルリクエストはまだ行われていません。 私もそれをひねり、あまり明らかでないバグを探したい。 それまでの間、移植されたpybrainライブラリはこちらにあります

参照:

  1. 「Pythonでニューラルネットワークを操作するPyBrain」
  2. パイブレイン
  3. David Beasley、Python:The Complete Reference、第4版


作業例のリスト


壊れた例のリスト


2to3オプションのクイックリファレンス

 Usage: 2to3 [options] file|dir ... : -h, --help      -d, --doctests_only   doctests -f FIX, --fix=FIX  FIX  ;  : all -j PROCESSES, --processes=PROCESSES  2to3  PROCESSES  -x NOFIX, --nofix=NOFIX    NOFIX -l, --list-fixes    -p, --print-function Modify the grammar so that print() is a function -v, --verbose   --no-diffs      -w, --write    -n, --nobackups      -o OUTPUT_DIR, --output-dir=OUTPUT_DIR         .    -n. -W, --write-unchanged-files   .    (  --output-dir);  -w. --add-suffix=ADD_SUFFIX       .   -n,    . : --add-suffix='3'   .py3 

Source: https://habr.com/ru/post/J148597/


All Articles