2017-08-09 35 views
1

當我有形狀[2,2,2],例如數據:如何在張量流中製作一個整形圖層?

a = np.array([[(1,2), (3,4)], 
       [(5,6), (7,8)] 
       ]) 

我想層到輸出[2,2],如:

b = np.array([[1,0], 
       [0,1]]) 

我如何構建圖層?我的當前設置返回[2,2,1]的形狀,我似乎無法能夠在層的單位變量指定的尺寸:

tf_x = tf.placeholder(tf.float32, [None, 2, 2]) 

output = tf.layers.dense(tf_x, 1, tf.nn.relu) 

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer())  
    pred = sess.run(output, {tf_x: a}) 

回答

1

我的當前設置返回[2,2,1]的形狀,並且我不能似乎能在層的單元變量來指定尺寸:

a = a.reshape(1, -1) 

tf_x = tf.placeholder(tf.float32, [None, a.shape[-1]]) 

# now if you want the final array to have total 4 element, you can set it as number of output 
output = tf.layers.dense(tf_x, 4, tf.nn.relu) 

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer())  
    pred = sess.run(output, {tf_x: a}) 
pred = pred.reshape(2, 2) 
+0

這只是在處理之前和之後重塑數據,不是?我想也許你可以在圖層中指定它。無論如何,謝謝。 – sandboxj

+0

不是,它使用矩陣將輸入數組映射到輸出數組。重塑就是將數據轉化爲所需的形狀。 'output = tf.layers.dense(tf_x,4,tf.nn.relu)'這裏你指定了輸出的元素數量。 –

1

你可以做這樣的事情:

b = tf.reshape(a, shape) 
+0

我的問題是,在邏輯上,每行[(a1,b1),(a2,b2)]中的(a,b)屬於一起,第二個變量b依賴於a(即,在邏輯上,即使b1 = b2,如果a1!= a2,它們也不相等)。如果我以這種方式重塑它,它將看起來像[a1,b1,a2,b2],其中這兩個數字的邏輯配對可能會丟失,即如果b1 = b2,重整後的行將包含相同的數字兩次儘管他們不是這個意思。這是重塑它的正確方法嗎? – sandboxj

相關問題