2017-11-27 35 views
0

나는이 paper을 기반으로 텍스트 분류를 위해 CNN 모델을 구현했습니다. CNN은 크기가 고정 된 문장만을 처리 할 수 ​​있으므로 입력의 크기를 데이터 집합의 최대 문장 길이로 설정하고 짧은 문장을 0으로 설정합니다. 하지만 필자의 이해를 돕기 위해, 입력 문장의 길이는 상관없이 최대 풀링 전략은 항상 각 필터 맵에 대해 하나의 값만 추출합니다. 따라서 입력 문장의 크기가 길거나 짧다는 것은 중요하지 않습니다. 왜냐하면 필터가 복잡한/풀링 된 후에 출력이 같은 크기가되기 때문입니다. 이 경우, 짧은 문장을 모두 고정 된 크기로 채워야하는 이유는 무엇입니까?텍스트 분류에서 CNN 모델에 대한 입력의 가변 크기?

예를 들어, CNN 모델에 데이터를 공급 내 코드는 내가 max_len를 지정하고 현재의 교육 문장의 길이를 기반으로하는 None value를 사용하지 않을 수 self.input_data = tf.placeholder(tf.int32,[None,max_len],name="input_data")입니까?

또한 CNN 모델에 대한 변수 입력을 해결할 수있는 새로운 방법이 있는지 궁금합니다. 나는 또한이 문제를 해결할 수있는 다른 paper을 찾았지만, 내 이해를 위해 max-pooling에 대한 k 값을 가변 문장을 처리 할 수있는 max-pooling 대신 사용했습니다. 방법?

+0

으로 알 수 있듯이, 배치의 교육 데이터가 동일한 길이 여야하기 때문에 문장 길이 (또는 패딩)를 제한하기 위해 'max_len'을 사용합니다. 즉, 학습 데이터의 모양은'[batch_size, max_len]'이됩니다. 입력 데이터에 대해 [none, none]을 지정할 수 있다고 생각하지 않습니다. – greeness

답변

0

빠른 대답 :

없음 당신이 할 수없는

긴 대답 :

풀링은 감소 기능과 같다.하지 레이어에 적용하면 크기가 줄어 듭니다. 그러나 다른 입력 모양은 동일한 출력 모양을 생성하지 않습니다. 그러나 제로 패딩을 사용하면 이것을 시뮬레이션 할 수 있습니다. max_len을 사용하면이 작업을 수행 할 수 있습니다. 그래서, 두 번째 논문에서, 아이디어는 역동적 인 계산 그래프를 갖는 것입니다. 이전과 같은 것이 아닙니다. 기본적으로 깊이가 다른 여러 네트워크를 만듭니다 (입력 크기에 따라 다름). 인코더 - 디코더 아키텍처의 일반화 된 버전은 bytenet

+0

고마워요, 그건 내 실수입니다. 나는 풀링이 감소 함수라고 생각합니다. 최대 풀링은 입력 중에서 가장 큰 값을 찾는 것입니다. 그래서 입력이 같은 모양이어야합니다. 두 번째 논문에서는 깊이가 다른 여러 네트워크를 만들었지 만이 두 모델이 동일한 필터를 공유하고 있다는 사실입니까? –

+0

좋아, 나는 그것을 여러 네트워크라고 부르지 말아야한다. 그것은 seq2seq와 함께 NMT를 버켓 팅하는 것과 같다. 다른 계산 그래프를 만듭니다. 그렇습니다. 매개 변수를 공유합니다. 나는 CNNs byetet이 구현을위한 더 나은 방향이라고 생각한다. wavenet도 살펴볼 수 있습니다. https://arxiv.org/pdf/1609.03499.pdf – Mehdi