私のネットワークを使用して、出力の入力の勾配を評価しようとしています。ネットワークは、前方の小道具の間に完全に正常に動作するので、問題はありません。グラデーションのコードは次のようになります。tf.gradientsの結果を評価するときにTensorflowがスタックする
images, labels = inputs(train_dir,
True,
batch_size,
num_batches,
one_hot_labels=True)
predictions = InterpolNet(images)
restorer = tf.train.Saver()
with tf.Session() as sess:
restorer.restore(sess, checkpoint_dir)
print 'Get grads'
grad_output = np.zeros((1,h,w,3), dtype=np.float32)
grad_output[0,0,0,0] = 1
grad = tf.gradients(predictions, images, grad_output)
print grad[0]
res = grad[0].eval()
だから、基本的に、私はinputs
機能で自分のネットへの入力を宣言し、私はInterpolNet
に呼び出して、私のモデルを取得し、私は、最新のトレーニングの重みでチェックポイントを復元します。 feed_dictで入力を入れたところ、すべてが問題なく、実行の出力はネットの予想される出力です。sess.run(predictions, feed_dict=feed_dict)
代わりに(上記のコードで)グラデーションを取得しようとすると、プログラムは明らかにres = grad[0].eval()
行(GPU使用率0%、顕著なCPU使用率)で止まってしまいます。正しいテンソルどのように見えるかprint grad[0]
プリントは:
Tensor("gradients/conv1/conv1_1/Conv2D_grad/Conv2DBackpropInput:0", shape=(1, 128, 384, 6), dtype=float32)
が、コードは次の行に到達しません。私は何か間違っているのですか? grad_output
を使用しても問題には影響しないようです。ちょうど参考として、私はhttps://arxiv.org/pdf/1603.06041v2.pdfから
からペーパーを再実装しようとしていますありがとう!
キューがありますか?通常のハングは、空のキューからデキューするときです。診断する方法は、[ここ](https://github.com/tensorflow/tensorflow/issues/2130#issuecomment-215180165) –
で説明されているように、operation_timeout_in_msを有効にすることです。実際にはい、私はそうです、あなたは正しいです、タイムアウトを設定してくださいそれが明らかに問題であることを示しています。私は入力をネットに与える方法を変更しようとするので、キューに詰まることはありません。ありがとう! – powder