TensorFlow #Session, Variable, & Placeholder ?

TensorFlowの解りにくいところ、Session()の挙動、VariableとPlaceholderの使い分け
———————————————————————–
まずは、Session()の挙動:変数はsessionの繰り返しで更新される!

と、変数a=0と、定数b=1を和して、結果cをaの更新に使い、cとa更新値を乗してdを得る。
dを求めるsess.run()を3連続で繰り返すと、

というように、値が更新されていく。ses.runは繰り返されると変数の更新に対応して、結果も更新されていくわけだ。

とすると、

となる。つまり、sess.run()の中での繰り返しでは、変数は更新されていないが、次のsess.runの繰り返しでは、アップデートされた変数が用いられて、結果も更新された。

では、placeholderでどうなるか見てみる。

と、sessionごとに変数xが更新されて、結果も更新されてく。

ーーーーーーーーーーーーーーーーー
VariableとPlaceholderの違いは?
ーーーーーーーーーーーーーーーーー
変数:
多くは学習パラメータであり、値はトレーニングから得られる
初期値が必要(しばしばランダム)

プレースホルダ:
データのための割り当てられた記憶域
初期値は必須ではない(tf.placeholder_with_defaultで設定可能)。
ーーーーーーーーーーーーーーーーー

に対して、出力は、

Placeholderでは、変数と異なり、初期値設定も、初期化も不要で、Shapeも適当でOKで、session内で値をfeedすればよい。

出力結果は、

プレースホルダーとVariableをうまく使い分ける例は、以下の通り:
つまり、y=ax+bの直線回帰において、xやyへのデータはplaceholderを設定し、aやbの
パラメータにはvariableを使う。

出力結果は、