2017-05-07 11 views
1

Ich bin ein kompletter Anfänger in Tensorflow, und ich entschuldige mich, wenn meine Frage trivial ist, aber ich habe sowohl die Dokumentation und Google untersucht und ich konnte die Antwort nicht finden. (Ich auch für mein Englisch entschuldigen)Tensorflow - Dimensionen von Daten, Platzhalter

Ich möchte etwas tun, wie

sess.run(train, {x:x_train, y:x_train} 

wo x_train ist ein Array der Größe 3190 meine Eingangsdaten enthalten (Arrays der Dimension 60 * 4)

Meine Frage ist, sollte x sein:

x = tf.placeholder(tf.bool, [60,4]) 

oder

x = tf.placeholder(tf.bool, [None,60,4]) 

?

Die erste gibt die folgenden Fehler:

ValueError: Cannot feed value of shape (3190, 60, 4) for Tensor u'Placeholder:0', which has shape '(60, 4)' 

und wenn ich die zweiten verwenden, wie kann ich erreichen x [i] [j] mit 0 < = i < 60 und 0 < = j < 4 wenn ich zum Beispiel

berechnen möchte
tf.logical_and(x[i1][j1],x[i2][j2]) 

?

Wir danken Ihnen im Voraus für Ihre Antwort.

+0

Sie tun müssen, einen 3D-Tensor in diesem Fall verwendet werden. Das Beispiel "tf.logical_and (x [i1] [j1], x [i2] [j2])" ist jedoch nicht klar genug. Was ist die Beziehung zwischen "i1, j1" und "i2, j2"? Beabsichtigen Sie, einen '60 * 4 * 60 * 4' 4D Tensor zu berechnen? –

+0

Vielen Dank für Ihre Antwort. Jeder meiner 3190-Eingänge ist ein 60 * 4-Tensor, der eine DNA-Sequenz von 60 Nukleotiden darstellt. Jedes Nukleotid wird als ein 1 × 4-Array von booleschen Werten dargestellt, die anzeigen, ob das Nukleotid A, C, G oder T ist (zum Beispiel x [30] = [1,0,0,0], wenn A an Position 30 ist). . Ich möchte einige "UND" Operationen an den Eingängen durchführen, zum Beispiel "es gibt ein A an Position 3 UND es gibt ein C an Position 15" (x [3] [0] AND x [15] [1]) . Also wäre jeder ein 1 * 1 Tensor. Ich hoffe, das ist klarer? – DNAprototype

Antwort

1

Do

x = tf.placeholder(tf.bool, [None,60,4]) 

und für Ihre logische und Verwendung

x_flat = tf.reshape(x , [ -1 , 60*4 ]) 
ij1 = tf.reshape(tf.one_hot([i1*4+j1] , 60*4 , dtype=tf.float32) , [ 60*4 , 1 ]) 
ij2 = tf.reshape(tf.one_hot([i2*4+j2] , 60*4 , dtype=tf.float32) , [ 60*4 , 1 ]) 

tf.logical_and(tf.matmul(x_flat , ij1) , tf.matmul(x_flat , ij2)) 
+0

Danke! Ich habe ein paar Casts hinzugefügt (bool zu float32 für Matmul und float32 zu bool für logical_and) und das scheint zu funktionieren. Vielen Dank ! – DNAprototype

+0

Bitte markieren Sie diese Antwort als Lösung @ DNAprototype – Wontonimo

Verwandte Themen