[解決済み] TensorFlow、なぜpythonが選ばれたのか?
質問
最近、深層学習や他のML技術を勉強し始め、ネットの構築やトレーニングのプロセスを簡素化するフレームワークを探し始めたところ、TensorFlowを見つけました。インタープリタではなく、コンパイル可能な言語で作った方が良いのでは?
機械学習にC++のような言語ではなく、Pythonを使うメリットは何でしょうか。
どのように解決するのですか?
TensorFlowで最も重要なことは、ほとんどの場合、そのことを認識することです。 コアはPythonで書かれていない : 高度に最適化されたC++とCUDA(NvidiaのGPUプログラミング用言語)の組み合わせで書かれているのです。 その多くは、順番に、以下を使用することで実現されています。 アイゲン (高性能なC++およびCUDA数値計算ライブラリ)および NVidiaのcuDNN (のために非常に最適化されたDNNライブラリ)。 NVidia GPUs などの機能に対して コンボリューション ).
TensorFlowのモデルは、プログラマが"ある言語"(ほとんどの場合Python!)を使用してモデルを表現することです。 このモデルは、以下のようなTensorFlowの構成要素で書かれています。
h1 = tf.nn.relu(tf.matmul(l1, W1) + b1)
h2 = ...
は、Pythonが実行されたときに実際に実行されるわけではありません。 その代わり、実際に作成されるのは データフローグラフ には、特定の入力を受け取り、特定の操作を適用し、その結果を他の操作の入力として提供する、というようなことが書かれています。 このモデルは高速なC++コードによって実行され、ほとんどの場合、操作間のデータはPythonコードにコピーバックされることはありません。 .
そして、プログラマーは、学習用には通常Python、サービス用にはPython、時には生のC++で、ノードをプルすることによってこのモデルの実行をドライブするのです。
sess.run(eval_results)
この1つのPython(またはC++の関数呼び出し)は、C++へのプロセス内呼び出しか、または RPC 分散版では、C++のTensorFlowサーバに呼び出して実行を指示し、その結果をコピーバックする。
では、それを踏まえて、質問を言い直そう。 なぜTensorFlowは、モデルの学習を表現し、制御するために、最初によくサポートされた言語としてPythonを選んだのでしょうか?
その答えは簡単です。 Pythonはおそらく その データサイエンティストや機械学習の専門家にとって最も使いやすい言語で、C++のバックエンドと簡単に統合でき、Googleの社内外で広く使われており、オープンソースであること。 TensorFlowの基本モデルでは、Pythonの性能はそれほど重要ではないので、自然にフィットしたのです。 また、以下の点も大きなプラスです。 ナムパイ TensorFlowでCPUに負荷のかかる処理をする前に、Pythonで簡単に前処理をすることができます。
また、モデルの表現には、実行時には使われない複雑な部分がたくさんあります。形状推論(例えば、matmul(A, B)を実行したら、結果のデータの形状はどうなるのか)や自動的な グラデーション を計算します。 Pythonでそれらを表現できたのはよかったと思いますが、長期的には、他の言語を簡単に追加できるように、C++のバックエンドに移行すると思います。
(もちろん、将来的には他の言語にも対応し、モデルを作成・表現できるようにしたいと考えています)。 すでに他のいくつかの言語を使って推論を実行することは非常に簡単です -- 今はC++が使えますし、Facebookの誰かが 行く バインディングをレビューしているところです。)
関連
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] Pythonのクラスはなぜオブジェクトを継承するのですか?
-
[解決済み] Python 3 の "python -m SimpleHTTPServer" に相当するものは何ですか?
-
[解決済み】なぜPythonはこのJSONデータをパースできないのですか?[終了] PythonがこのJSONデータをパースできないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python string splicing.join()とsplitting.split()の説明
-
Python jiabaライブラリの使用方法について説明
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】Pythonでgoogle APIのJSONコードを読み込むとエラーになる件
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み】ValueError: xとyは同じサイズでなければならない