Ich verwende Tensorflow scatter_update, um die Werte eines Arrays in einem einfachen Test festzulegen. Ich würde erwarten, dass der folgende Code alle Werte im Array auf 1.0 setzt.Inkonsistente Ergebnisse bei der inkrementellen Zuweisung von Tensorflow mit scatter_update
pt = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
numOne = tf.constant(1)
xi = tf.Variable(0)
out = tf.Variable(pt)
tf.global_variables_initializer().run()
xi_ = xi + numOne
out_ = tf.scatter_update(out, [xi], [tf.cast(numOne, tf.float32)])
step = tf.group(
xi.assign(xi_),
out.assign(out_)
)
for i in range(15): step.run()
print(out.eval())
Stattdessen erhalte ich inkonsistente Ergebnisse wie:
[ 1. 1. 1. 0. 1. 1. 1. 1. 1. 1. 1. 0. 1. 1. 1. 1.]
Gibt es irgendeine Art von Verriegelungsmechanismus, dass ich fehle?
Abgesehen von der Tatsache, dass Ihre pt Größe 16, und Sie erwarten, 15 Werte zu füllen, ich denke, es ist etwas los mit der zufälligen Reihenfolge, in der die Ops ausgeführt werden .. – Uvar