2017-11-30 14 views
1

私はKerasを使用してCNNに入力として使用している一連の処理済みオーディオファイルを持っています。 Keras 1D畳み込みレイヤは可変長シーケンスをサポートしていますか? Kerasのドキュメントはこれを不明瞭にしています。 128次元のベクトルの可変長配列の場合、それはあなたが使用することができます言及ドキュメントの最上部(なし、128)で1D畳み込みレイヤは可変シーケンス長をサポートしますか?

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

。しかし、一番下に、それは入力形状は、以下の例を考えると

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

でなければならないことを宣言してどのようにすべきI入力

が、私は2つの例を考えてみましょうネットワークへの可変長の列(AおよびB)Iが入力

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

として1DConv層に供給する長さ100の1次元ベクトルは、I(2の入力形状を使用することができX、なしを含みます、100)?私は

c.shape = (300, 100) 

が、それは何か

3は、バッチサイズである
c_reshape.shape = (3, 100, 100) 

、100であることを再形成Cにこれらのテンソルを連結する必要がありますか、ステップの数であり、第二100があります入力サイズ?入力ベクトルに関する文書はあまり明確ではない。

答えて

1

Kerasは、モデルを定義するときにそれぞれの次元でNoneを使用して可変長をサポートします。

多くの場合、input_shapeは、形状をいい、バッチサイズはありません。

したがって、形状が​​の3Dテンソルは、input_shape=(steps, input_dim)のモデルに完全に適合します。

あなたはこのモデルは、変数の長さを受け入れるようにするために必要なすべてのステップの次元でNoneを使用している:

input_shape=(None, input_dim) 

、変数の長さについてnumpyのは限界があります。可変長に適した形状のnumpy配列を作成することはできません。

つのソリューションが用意されています

  • パッドダミーの値を使用してシーケンス、それらはすべてあなたがシェイプ(batch_size, length, input_dim)のnumpyの配列にそれらを置くことができるように、同じ大きさになるまで。 Maskingレイヤーを使用して、ダミー値を見直します。
  • 形状の個別のnumpy配列を持つ列車は、それぞれの長さが独自の長さを持つ(1, length, input_dim)です。
関連する問題