Tensorflow [2]:feed_dictは必ずしもプレースホルダーにバンドルされているとは限りません



Tensorflow Feed_dict Is Not Necessarily Bundled With Placeholder



Tensorflowの設計コンセプトは、計算フローグラフと呼ばれます。プログラムを作成するときは、最初にシステム全体のグラフを作成します。コードは直接有効になりません。これは、Pythonの他の数値計算ライブラリ(Numpyなど)とは異なります。グラフは静的です。 、dockerの画像に似ています。次に、実際の実行時にセッションが開始され、プログラムが実際に実行されます。これを行う利点は、基盤となるプログラムが実際に実行されるコンテキストを繰り返し切り替えることを回避することです。tensorflowは、システム全体のコードを最適化するのに役立ちます。多くのPythonプログラムの最下層はC言語または他の言語であることを私たちは知っています。スクリプトを実行するには、一度切り替える必要があります。費用がかかります。 Tensorflowは、フローグラフを計算することにより、セッション全体で実行する必要のあるコードを最適化するのに役立ちます。利点。
には多くの架空のものがあり、この記事の主人公であるfeed_dictを紹介します。私が最初にテンソルフローを学んだとき、feed_dictはプレースホルダーとペアになっていると思いました。たとえば、次のコードは、feed_dictの基本的な使用法を示しています。

import tensorflow as tf a = tf.placeholder(dtype=tf.float32) b = tf.placeholder(dtype=tf.float32) c = tf.add(a, b) with tf.Session() as sess: print sess.run(c, feed_dict = {a: 1.0, b: 2.0})

実際、feed_dictは、プレースホルダーだけでなく、他のテンソルに物事をフィードすることができます。たとえば、次のコード:



import tensorflow as tf a = tf.placeholder(dtype=tf.float32) b = tf.constant(2.0) c = tf.add(a, b) with tf.Session() as sess: print sess.run(c, feed_dict = {a: 1.0, b: 3.0})

実行の結果は4で、feed_dictを使用してテンソルbに3.0が与えられます。
要約すると、この原則を知ることは、モデルの回復を理解するのに非常に役立ちます。機械学習システムにはテンソルの流れが伴います(テンソルフローの意味は、ニュ​​ーラルネットワークなどが実際にはテンソルの線形変換と非線形活性化であるということです)、おそらく、中間のテンソルしか得られません。たとえば、画像分類作業を行っている場合、トレーニングプロセス中、マップのプレースホルダーは任意のサイズのピクセルマトリックスですが、モデルを復元すると、前処理された画像ピクセルテンソルが既に存在するため、直接それを行うことができます。対応するテンソルの名前または記号がわかっている場合は、対応するテンソルにインポートできます。この場合、tf.get_tensor_by_name関数を使用する必要がある場合があります。 feed_dictを柔軟に使用することで、グラフの考え方を理解することもできます。

何かおかしいことがあれば、神に知らせてください。ソースを教えてください、ありがとうございます。