0

結果アグリゲータとして機能するはずのtf.Variableテンソルがあります。テンソルフロー変数に行を集約

考えられるのは、データのバッチを含むグラフ上で操作を実行し、その結果を結果の変数に新しい行として追加するということです。冒頭で変数が空でなければなりませんので

は、私はこのようにそれを初期化します。

result_tensor = tf.Variable(0, expected_shape=[0, 5], dtype=tf.float32) 

その後、私がやっていることは(新しい行として)0軸に沿って新しい行を連結しています

total_output = tf.concat([result_tensor, operation], 0) 

は最後に、私は、変数を再割り当て:

assign_op = tf.assign(result_tensor, total_output, validate_shape=False) 

しかし、このすべてが実行されたとき、私はフォローを取得しますエラー:

ValueError: Shape must be rank 0 but is rank 2 for 'concat_1' (op: 'ConcatV2') with input shapes: [], [?,25088], []. 

私が間違っていることを明白にするのに手伝ってもらえますか?

ありがとうございます!

答えて

0

result_tensorは0を入力して作成しています。つまり、result_tensorはスカラー値であり、期待通りの行ではありません。 expected_shapeプロパティはそれを修正しません。

代わりに、result_tensortf.zeros([1, 25088])と宣言してください。追加する行のサイズは25088と思われます。その後、すべての結果が得られたら、スライスして最初の行を削除します。

注:tf.Variableクラスは結果を格納するのではなく、グラフに訓練可能な値を追加するためのクラスです。 Tensorflowを使った私のすべての実験で、私はそれを使う必要はなかった。一度も。 tf.layersモジュールには、通常、必要なものすべてが含まれています。

+0

どこに結果を保存すればよいですか?後で私はそれらの操作を行う必要があることに留意してください。 –

+0

私はあなたの答えをあなたに示しました。あなたはそれらの操作を行う必要があります。確かに。しかし、グラフを練習するときに値を更新する必要はありませんか? – Sunreef