2016-08-09 2 views
2

私は任意のサイズのグレースケール画像受け付け畳み込みネットワーク作りしようとしている:最後の畳み込み層のTensorflowリシェープ

inputs = tf.placeholder(tf.float32, [None, None, None, 1]) 

出力は、形状を有しているが[なし、なし、なし、512 ]、512はチャネル数です。これまでのところすべてが素晴らしいです。問題は、私は第二次元と第三次元を崩壊させる必要があるので、私は再形成する必要があります。しかし、私は、グラフのビルド時に第二と第三の次元を知らないので、私はこれを行う:

dims = tf.shape(output) 
output = tf.reshape(output, [-1, dims[1] * dims[2], 512]) 

私は、最終的な形状があることを期待[、、512?]が、それは[ですか? 、?、?]。私はコードの後半でビルド時に最後の次元を知る必要があるので、最後の次元のサイズを保持する方法で出力テンソルを再形成する方法はありますか? ありがとうございます。

+1

どのバージョンのTensorFlowを使用していますか?これはHEAD(および0.10リリース)のコードを使用して私の作品です。 – mrry

+0

ええ、それは、私は0.9.0を使用しました、0.10.0で動作します。ありがとう! – user1760770

答えて

3

TensorFlowの静的形状推定は、部分的に既知の値に関する情報を伝播することに依存するため、これは微妙なケースです。リリース0.10では、このケース(およびテンソルを形状として扱う類似のケース)のサポートを追加しました。

+0

うん、そうだった、ただアップグレードする必要があった。 – user1760770