2017-01-25 4 views
1

私は文書を分類するためにtflearnとtensorflowを使用しています。しかし、私は文書と訓練時間のサイズに問題に直面しています、私の最大の文書の長さは〜98000単語であり、建物のためにこれを使用するとネットワークは非常に時間がかかるでしょう。私は、データの次元を減らすためのさまざまな方法や、モデルを訓練するのに十分速い技術を探していました。私はdoc2vecとword2vecを見て、それぞれのモデルを作りましたが、tflearnでそれらを使う方法はわかりません。また、doc2vecとword2vecモデルを作成し、モデルの語彙に存在するすべての単語の特徴ベクトルを平均化して特徴ベクトルを得ることで文書を分類しています。この最終的な特徴ベクトルをDNNに使用することはできますか?または誰かが私が使用できる他の提案をしていますか?文書分類のためのtflearnディープラーニングの使い方

答えて

3

TensorFlowを使用してDocument Classificationモデルを簡単に構築し、TF.Learnライブラリに統合することができます。

様々な文書分類モデルの例は、examplesフォルダにでもあります任意の長さのドキュメントのhttps://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/learn#text-classification

最速のモデルは、単語モデルのバッグになります - 言葉の一つその平均値の埋め込み。これは、どのような文書分類問題に対しても推奨されるベースラインです。次に、RNNやCNNなど、より複雑なモデルを試すことができます。 https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/learn/text_classification.py

あなたは簡単にtf.contrib.layers.fully_connectedを追加することによって、より完全に接続された層(例えばDNN部分)を拡張することができます - それを実行する方法の詳細については

def bag_of_words_model(features, target): 
    """A bag-of-words model. Note it disregards the word order in the text.""" 
    target = tf.one_hot(target, 15, 1, 0) 
    features = tf.contrib.layers.bow_encoder(
     features, vocab_size=n_words, embed_dim=EMBEDDING_SIZE) 
    logits = tf.contrib.layers.fully_connected(features, 15, activation_fn=None) 
    loss = tf.losses.softmax_cross_entropy(target, logits) 
    train_op = tf.contrib.layers.optimize_loss(
     loss, 
     tf.contrib.framework.get_global_step(), 
     optimizer='Adam', 
     learning_rate=0.01) 
    return ({ 
    'class': tf.argmax(logits, 1), 
    'prob': tf.nn.softmax(logits) 
    }, loss, train_op) 

、ここを参照してください:ここで

は、そのためのコード例ですlogitsの前に計算されます。

訓練済みのチェックポイントからword2vecなどの埋め込みをtf.contrib.framework.init_from_checkpointsee documentation)を使用して初期化することもできます。

+0

返信いただきありがとうございます。私は深い学習とtflearnに新しいです。私はこの例[リンク] https://github.com/tflearn/tflearn/blob/master/examples/nlp/bidirectional_lstm.pyを使っていて、ネットワークの第1層を変更したいと思っていました。深いネットワーク分類子を使用して、どのように達成するための任意の提案? Max_document_lengthが主な問題であり、何らかの次元削減が必要な場合は他に何もありません –

+0

モデルの最初のレイヤーは埋め込みです。 'tflearn'はTensorFlow自身のライブラリとは異なりますが、この場合も同じことが適用されます - DNNに変更するには、' fully_connected'レイヤーを追加するだけです。 – ilblackdragon

+0

私は、ソフトマックスと分類について早くそれを理解しました。私が知りたいのは、埋め込みレイヤーに渡す前に、doc2vecやword2vecなどのフィーチャの数を減らす方法があるかどうかです。 –

関連する問題