MNISTデータセットで分類子を実行しようとしています。私はこれを正しく行うためにセッションを初期化する必要があることを知っています。なぜ異なるタイプのセッションを使用すると、変数がテンソルフローで初期化されるかどうかに影響しますか?
しかし、ニューラルネットワークでトレーニング反復を実行しているときに、値をプリントアウトすることができます。
このように、これらの変数の値を印刷するには、print(sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}))
行を印刷します。
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import argparse
import sys
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
data_dir='/tmp/tensorflow/mnist/input_data'
mnist = input_data.read_data_sets(data_dir, one_hot=True)
# Create the model
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.matmul(x, W) + b
# Define loss and optimizer
y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=y))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
# sess = tf.InteractiveSession()
sess = tf.Session()
tf.global_variables_initializer().run()
# Train
for k in range(1000):
# print loss function at each iteration
if k%100 == 0 and k!=0:
print(sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}))
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
私はこの約2つの関連の問題を持っている:あなたはtensorflow
がインストールされている場合は次のコードが実行可能です。ラインが上記である私は、私はあなたが見ることができる(sess = tf.InteractiveSession()
を使用Session()
の代わりに使用してこれを実行しようとすると、その後
FailedPreconditionError (see above for traceback): Attempting to use uninitialized value Variable_14
[[Node: Variable_14/read = Identity[T=DT_FLOAT, _class=["loc:@Variable_14"], _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_14)]]
:私はsess = tf.Session()
を使用して、私のセッションを初期化することによって、これを実行しようとする問題は、私はFailedPredictionError
を取得していますそれ)。私がそれをするとき、それは動作しますが、それは損失関数の実際の値の代わりにNone
を印刷しています。
私の二つの質問は以下のとおりです。
- は、なぜ私が使用しています
Session
の種類は、変数が初期化されているかどうかに影響しますか? - 印刷するラインが、そのトレーニングステップでの損失機能の実際の値ではなく、
print(sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
の印刷None
であるのはなぜですか?私は反復を通して変化する損失関数を観察したい。
私の評判はまだ私を投票させませんが、ありがとうございます。 – nundo
@nundoあなたは私の答えを受け入れることができます。 – Sraw
私はやったと思う?申し訳ありません...私はこれにnewtoです – nundo