ProblemTF: Erstellen Maske aus binären Daten lesen (Punkt-Zuordnung)
ich Daten aus einer binären Datenbank und ein Teil dieser Daten gelesen werden Koordinaten (x, y) innerhalb eines Bildes Maske und das Bild selbst. Die Maske selbst ist einfach zu erstellen, wenn ich die Bildform und die Koordinaten kenne. Im Grunde muss ich nur eine leere Maske mit der Form erstellen, die durch das gelesene Bild definiert ist, und das Pixel an den gegebenen Koordinaten auf eins setzen. Also, was ich im Grunde wollen, ist so etwas wie die folgenden:
import tensorflow as tf
import numpy as np
# coord read from binary file
x = tf.constant([1])
y = tf.constant([1])
# shape is taken from another image read from binary file
shape = tf.shape(tf.constant(np.ones([3, 3]).astype('float32')))
# create empty image but set (x,y) = 1
mask = tf.zeros(shape)
mask[x, y] = 1
die aufgrund einer Typeerror versagt:
TypeError: 'Tensor' object does not support item assignment
Versuch 1
tmp = np.zeros([3, 3])
tmp[x, y] = 1
mask = tf.constant([tmp.tolist()])
Zuerst dachte ich, es eine sein könnte Guter Ansatz, um ein numpy Array mit den gewünschten Daten zu erstellen und es dann mit tf.constant() in einen Tensor umzuwandeln. Aber das führt zu dem Problem, dass ich die Tensoren x, y nicht zur Indizierung verwenden kann. Dies liegt daran, dass diese zum Zeitpunkt der Erstellung lediglich Platzhalter für die Daten sind, die aus der Datenbank gelesen werden (das gleiche Problem würde auftreten, wenn ich die Größe 3x3 aus den Binärdaten lesen möchte). Bitte beachten Sie, dass das Ausführen der Tensoren x und y in einer Sitzung, um die Werte nicht eine Lösung für mich zu bekommen, weil ich die Daten benötigen, um ein Netzwerk zu trainieren. Es ist also notwendig, alle Daten innerhalb eines Aufrufs zu erfassen und zu verarbeiten.
Versuch 2
zero_tensor = tf.zeros(shape)
delta = tf.SparseTensor([[1, 1]], [1.0], [3, 3])
mask = zero_tensor + tf.sparse_tensor_to_dense(delta)
sess = tf.Session()
mask_val = sess.run([mask])
print mask_val
Online fand ich eine Lösung, wie eine spärliche Tensor erstellen und verwenden es einen Tensor zu ändern. Problem ist, dass die Koordinaten und die Form der Maske fest codiert sein müssen und nicht zur Laufzeit vom Tensor gelesen werden können.
Ich schätze Ihre Vorschläge.
Vielen Dank, das hat geholfen! – zimmermc