2017-11-30 18 views
1

Keras를 사용하여 CNN에 입력으로 사용하는 일련의 처리 된 오디오 파일이 있습니다. Keras 1D Convolutional 레이어는 다양한 시퀀스 길이를 지원합니까? Keras 문서를 보면 이것이 명확하지 않습니다. 128 차원 벡터 가변 길이 시퀀스가 ​​사용할 수 언급 문서의 상부 (없음, 128)에서1D 컨벌루션 레이어는 가변 시퀀스 길이를 지원합니까?

https://keras.io/layers/convolutional/

. 그러나 하단은 입력 형태는 다음과 같은 예를 감안할

3D tensor with shape: (batch_size, steps, input_dim) 

해야 함을 선언합니다 어떻게해야 내가 입력

내가 두 가지 예를 말할 수 있습니다 네트워크에 가변 길이의 시퀀스 (a와 b) X가 I에게

a.shape = (100, 100) 
b.shape = (200, 100) 

가 I (2의 입력 형상을 사용할 수있는 입력으로 1DConv 층으로 공급하고자하는 길이 (100)의 1 차원 벡터를 포함 없음 , 100)?

c.shape = (300, 100) 

는 그런 일 3가 배치 크기, 100

c_reshape.shape = (3, 100, 100) 

수를 바꿀 어디 C에 이러한 텐서을 연결해야합니까 단계의 수이고, 두 번째 100입니다 입력 크기? 입력 벡터에 대한 문서는 명확하지 않습니다.

답변

1

Keras는 모델을 정의 할 때 각 차원에서 None을 사용하여 가변 길이를 지원합니다.

종종 input_shape은 배치 크기없이 모양을 나타냅니다.

따라서 (batch_size, steps, input_dim) 모양의 3D 텐서는 input_shape=(steps, input_dim)과 완벽하게 일치합니다.

input_shape=(None, input_dim) 

지금, 가변 길이에 대한 NumPy와 제한이 :

이 모델은 가변 길이를 수용하기 위해 필요한 모든 단계의 차원에서 None를 사용합니다. 변수 길이에 맞는 모양으로 numpy 배열을 작성할 수 없습니다.

두 솔루션을 사용할 수 있습니다 더미 값

  • 패드 당신의 순서 모두 동일한 크기에 도달 할 때까지 모양 (batch_size, length, input_dim)의 NumPy와 배열에 넣어 수 있습니다. 더미 값을 무시하려면 Masking 계층을 사용하십시오.
  • 형태가 각기 다른 numpy 어레이를 가진 열차 (1, length, input_dim), 각 어레이는 자체 길이를 가지고 있습니다.