私はミニバッチのサイズの何倍もタイルしたい次元(1,5)の変数a
を持っています。たとえば、ミニバッチサイズが32の場合、元の(1,5)変数a
と同じ値を持つ次元(32,5)のテンソルc
を作成します。タイル張りテンソルのテンソルフロー形状
しかし、私は実行時にのみミニバッチサイズを知っている:それはプレースホルダb
の大きさ0のサイズです:tf.shape(b)[0]
は、ここで、Cを構築するために私のコードです:
a = tf.Variable(np.random.uniform(size=(1,5)))
b = tf.placeholder(shape=[None, 12], dtype=tf.float32)
batch_size = tf.shape(b)[0]
c = tf.tile(a, tf.pack([batch_size, 1]))
これは正常に動作します。しかし、c.get_shape()
は(?、?)を返します。私はなぜこれが戻ってこないのか分からない(?、5)。
マトリックス変数W
を作成したときに、これは私のコードの後に問題を引き起こしています。列数がc.get_shape()[1]
で、5よりもむしろ?
ご協力いただければ幸いです。ありがとう。
どのバージョンですか?同様の問題が0.10rcで解決されました。また回避策としてset_shapeを使用することができます –
ありがとう、set_shapeは仕事をします。 。バージョン0.8.0rc0です。 –