2016-10-29 2 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]과 패딩

하지만 h.get_shape()가 저를 제공 'SAME "이고 (?,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,128)

어디에서 오류가 발생했는지 파악하는 데 도움을 줄 수 있습니까?

    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을 만들 때 모양의 마지막 매개 변수 두 개를 바꿔보십시오.

+0

그러나 이것은 deconv를위한 것입니다. 무게의 원래 모양을 유지해야합니까? – ATANG

+0

x 깊이 128의 x를 깊이 64의 다른 텐서로 변형하려고합니다. 따라서 [3, ​​3, 128, 64] 모양을 사용해야합니다. –

관련 문제