2017-05-07 7 views
1

私はTensorflowの初心者です。私の質問が些細なものであれば謝りますが、ドキュメントとGoogleの両方を調べても答えが見つかりませんでした。Tensorflow - データの寸法、プレースホルダー

私はx_trainは私の入力データ(寸法60の配列* 4)

を含むサイズ3190の配列です

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

ような何かをしたいと思います(私も英語をお詫び)

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

または

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

私の質問は、xであるべきであり、

最初のものは、次のエラー与える:0 < = I < 60及び0 < = jに

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

、私は第二いずれかを使用している場合、どのようにIはXに到達することができる[I] [j]を< 4を計算したい場合たとえば

tf.logical_and(x[i1][j1],x[i2][j2]) 

ご回答いただきありがとうございます。

+0

のためにあなたは、この場合、3Dテンソルを必要としますか。しかし、 'tf.logical_and(x [i1] [j1]、x [i2] [j2])の例は十分にはっきりしていません。 'i1、j1'と' i2、j2'の関係はどうですか?あなたは '60 * 4 * 60 * 4' 4Dテンソルを計算しようとしますか? –

+0

ありがとうございました。私の3190入力のそれぞれは、60ヌクレオチドのDNA配列を表す60 * 4テンソルです。各ヌクレオチドは、ヌクレオチドがA、C、GまたはTであるかどうかを示すブール数の1×4アレイとして表される(例えば、30位にAがある場合はx [30] = [1,0,0,0] 。入力に「AND」操作を実行したいとします。たとえば、「位置3にAがあり、位置15にCがあります」(x [3] [0] AND x [15] [1]) 。したがって、それぞれは1 * 1のテンソルになります。 これがより明確になることを望みますか? – DNAprototype

答えて

1

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

を使用し、論理と使用

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

ありがとう!私はいくつかのキャストを追加しました(これはmatmulではfloat32に、logical_andではboolにfloat32)。これが機能しているようです。どうもありがとうございました ! – DNAprototype

+0

この答えをソリューション@DNAprototypeとしてマークしてください – Wontonimo

関連する問題