2017-11-27 18 views
0

私はこのpaperに基づいてテキスト分類のCNNモデルを実装しました。 CNNは固定サイズの文章しか扱えないので、私はデータセットの文の最大長として入力のサイズを設定し、短い文はゼロを埋めます。しかし、私の理解のために、入力文がどれくらい長くても、最大プール戦略は常に各フィルタマップに対して1つの値しか抽出しません。したがって、入力文のサイズが長くても短くても問題はありません。なぜなら、フィルタが畳み込まれた/プールされた後、出力は同じサイズになるからです。この場合、すべての短い文章を固定サイズに詰める必要がありますか?テキスト分類におけるCNNモデルの入力の可変サイズ?

例えば、CNNモデルにデータを供給するための私のコードは、私がmax_lenを指定し、現在のトレーニング文の長さに基づいているNone valueを使用していないことができ、self.input_data = tf.placeholder(tf.int32,[None,max_len],name="input_data")のですか?

さらに、私は、CNNモデルの変数入力を解決できる他の新しいアプローチがあるのだろうかと思っていました。私はまた、この問題を解決できる他のpaperを見つけましたが、私の理解のために、max-poolingの1つの値の代わりにmax-poolingのk値を使用しました。どうやって?

+0

と呼ばれています。私が知っているように、バッチ内のトレーニングデータは同じ長さでなければならないため、文章の長さ(またはパディング)を制限するために 'max_len 'を使用します。つまり、トレーニングデータの形状は '[batch_size、max_len]'となります。入力データに対して '[none、none]'を指定することはできません。 – greeness

答えて

0

クイック答え:

ありませんあなたは答えない

長いことができます。

プールはreduce関数のようなものです。それをレイヤーに適用すると、ディメンションが小さくなります。しかし、異なる入力形状は同じ出力形状を生成しません。しかし、ゼロ埋め込みではおそらくこれをシミュレートできますが、max_lenではこれを行っています。したがって、2番目の論文では、動的な計算グラフを作成することを考えています。以前と同じことではありません。基本的には、異なる深度の(入力サイズに応じて)いくつかのネットワークを作成しています。エンコーダ/デコーダアーキテクチャの一般化バージョンはbytenet

+0

ありがとう、それは私の間違いです、私はプーリングが削減機能であると思っていました、最大プールは入力の中で最大の値を見つけることなので、入力が同じ形をしている必要はありません。 2番目の論文では、深さの異なるいくつかのネットワークを作成しましたが、これらの異なるモデルが同じフィルタを共有しているのは本当ですか? –

+0

私はそれをいくつかのネットワークと呼ぶべきではありません。それはseq2seqを使ってNMTのバケツに似ています。異なる計算グラフを作成します。だから、彼らはパラメータを共有します。私は、CNNs byetetが実装のための良い方向だと思っています。 wavenetもご覧ください:https://arxiv.org/pdf/1609.03499.pdf – Mehdi

関連する問題