2016-07-28 9 views
2

가변 크기 입력 (문장 행렬)을 취한 CNN 모델을 만들고 이후에 완전히 연결된 레이어 (similar to this paper)에 고정 크기 출력을 생성하려고합니다.가변 크기 길쌈 신경망 입력 및 고정 출력

최대 풀링 레이어에 동적 커널 크기를 구현하려고하므로 런타임에 입력 모양이 필요합니다. ksize=[1, s, 1, 1]

input = tf.placeholder(tf.float32) 
# convolution layer here .... 

tf.nn.max_pool(convolution_output, ksize=[1, s, 1, 1], 
         strides=[1, 1, 1, 1], padding='VALID') 

s 입력 형상으로부터 유추되어야한다.

그러나 Tensorflow로 할 수있는 방법을 찾을 수 없습니다.

누구나 할 수있는 방법을 알고 계십니까?

+0

여기에 나와있는 것과 비슷한 소리가납니다 (https://arxiv.org/abs/1412.6071). 그러나 유감스럽게도 이것은 아직 tensorflow (https://github.com/tensorflow/tensorflow/issues/2953)에 의해 직접 지원되지 않습니다. 일단 추가되면, 단지 확장 일 수 있습니다. –

+1

아마도이 경우'tf.reduce_max'가 작동 할 수 있습니까? 이것이 당신이 구현하고있는 논문을위한 것인지는 확실하지 않지만 적어도 가변 입력 크기를 가진 간단한 CNN에서 작동합니다. –

+0

tf.reduce_max는 제가하고 싶은 일을했습니다. 배치 크기의 크기에 따라 풀을 만들고 싶었습니다. (모든 문장에 대한 것은 아닙니다) 감사합니다! – rAyyy

답변

2

나는 오래된 스레드라는 것을 알고 있지만 해결책을 찾고있는 사람들을 위해. tensorflow 1.4.0

tf.nn.max_pool()은 이전 버전의 int 목록과 대조적으로 1d 텐터를 입력으로 사용합니다. 따라서 ksize의 인수로 자리 표시자를 사용할 수 있습니다.

2

나는 Tensorflow에서이를 수행 할 방법을 찾지 못했고, theano에서 내 모델을 다시 구현하고 다른 솔루션, Dynamic KMax Pooling을 사용해야했습니다.