2016-10-29 3 views
0

私はdeconvを行うために以下のスニペットを持っています。Tensorflow conv2d_transposeシェイプ

x.get_shapeは()私に与えます(?、14、14、128)

self.w.get_shape()は私に(3、3、64、128)を与える

output_shapeは(あるべき?、14、14、64)

フィルタサイズは、[3,3]、ストライド[1、1、1、1]であり、パディングは 'SAME'

しかしh.get_shape()が私を与えています私が見たいと思っていた(?、?、?、128)(?, 14,14,64)。

どこにエラーがあるのか​​を教えてもらえますか?

    print(x.get_shape()) 
        print(self.w.get_shape()) 
        output_shape = tf.pack([tf.shape(x)[0], 
              self.output_size[0], 
              self.output_size[1], 
              self.output_size[2]]) 
        h = self.activation(
         tf.nn.bias_add(
          tf.nn.conv2d_transpose(
           x, self.w, 
           output_shape=output_shape, 
           strides=self.stride, 
           padding=self.padding 
          ), self.b 
         ) 
        ) 
        print(h.get_shape()) 

答えて

0

畳み込みのための変数は、[height, width, input_channels, output_channels]の形状でなければなりません。したがって、self.wを作成するときに、形状の最後の2つのパラメータを入れ替えるようにしてください。

+0

しかしこれはdeconvです。体重の元の形を維持する必要がありますか? – ATANG

+0

理解している限り、深さ128のxを深さ64の別のテンソルに変換しようとしています。したがって、[3、3、128、64]の形を使用する必要があります。 –

関連する問題