2016-04-26 82 views
4

我有以下批處理形狀:TensorFlow:如何通過權重變量批量變更批量張量?

[?,227,227] 

而下面的權重變量:

weight_tensor = tf.truncated_normal([227,227],**{'stddev':0.1,'mean':0.0}) 

weight_var = tf.Variable(weight_tensor) 

但是當我做tf.batch_matmul

matrix = tf.batch_matmul(prev_net_2d,weight_var) 

我失敗,出現以下錯誤:

ValueError: Shapes (?,) and() must have the same rank


所以我的問題變成:我該怎麼做?

如何在2D中獲得weight_variable乘以每個單獨圖片(227x227)以便產生(227x227)輸出?這個操作的平板版本完全耗盡的資源...加上漸變不會在平坦的形式正確地改變權重...


或者:我怎麼拆沿批維輸入張量(?,),以便我可以使用我的weight_variable在每個分裂張量上運行tf.matmul函數?

+0

曾找到解決這個? – MattClimbs

+0

我需要解決方案以及..分享? – Shivam

+0

@ User104我可能已經想通了。這個週末我打算拉起我的舊代碼......但我現在還沒有模糊不清。 – bordeo

回答

4

你可以沿着第一維度瓦的重量

weight_tensor = tf.truncated_normal([227,227],**{'stddev':0.1,'mean':0.0}) 
weight_var = tf.Variable(weight_tensor) 
weight_var_batch = tf.tile(tf.expand_dims(weight_var, axis=0), [batch_size, 1, 1]) 
matrix = tf.matmul(prev_net_2d,weight_var_batch) 

雖然batch_matmul不存在了

+0

這將是很好的解釋對tf.expand_dims和tf.tile的調用。無論如何感謝您的答案,+1 :) – dburner