2016-12-21 22 views
4

Kerasの1つのホットな前処理を使用して埋め込んだ70kサンプルのテキストがあります。これは私に[40,20,142 ...]の配列を与え、私は28の長さ(長さの長いサンプルの長さ)をパッドします。私がしようとしているのは、これらの値をいくつかのカテゴリラベル(0から5まで)で予測することだけです。私はモデルを訓練するとき、私は-1.3%の精度を超えて何も得ることができません(現在、私のエラーはthisです)私は入力を渡すために多くの方法を試しています。Keras LSTM入力サイズ(ホットテキスト埋め込みあり)

This is my data現在、単純なLSTMを作成しようとしています。私のデータは、X - > [長さ28の整数値、埋め込み]とY - > [長さ3の整数1、(100,143など)]です。私が間違ってやっていることは何ですか?私は多くの人に尋ねてきましたが、誰も助けられませんでした。ここに私のモデルのコードは...任意のアイデアですか? :(

optimizer = RMSprop(lr=0.01) #saw this online, no idea 
model = Sequential() 
model.add(Embedding(input_dim=28,output_dim=1,init='uniform')) #28 features, 1 dim output? 
model.add(LSTM(150)) #just adding my LSTM nodes 
model.add(Dense(1)) #since I want my output to be 1 integer value 

model.compile(loss='sparse_categorical_crossentropy', optimizer=optimizer, metrics=['accuracy']) 
print(model.summary()) 

編集:は 'model.add(埋め込み(input_dim = 900、output_dim = 8と、init =' 制服を '))' を使用して...しかし、まだ精度が向上したことがない動作しているようです、私は何をすべきかの損失にしています。

答えて

3

私は2つの提案がある。

  1. 使用目的変数(Y)ものための1つのホットな表現。あなたは整数としてYを与えた場合、それは回帰になりますあなたがホットエンコーディングを1つだけ与えると、それは分類の問題になります。
  2. 1つのホット埋め込みではなく、大量のテキストがある場合はword2vec埋め込みを試してください。

編集:

optimizer = RMSprop(lr=0.01) 
embedding_vecor_length = 32 
max_review_length = 28 
nb_classes= 8 
model = Sequential() 
model.add(Embedding(input_dim=900,embedding_vecor_length,input_length=max_review_length)) #input_length is the number of features 
model.add(LSTM(150)) 
model.add(Dense(output_dim=nb_classes, activation='sigmoid')) #output_dim is a categorical variable with 8 classes 

model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy']) 
print(model.summary()) 

model.fit(X_train, y_train, nb_epoch=3, batch_size=64) 

# Final evaluation of the model 
scores = model.evaluate(X_test, y_test, verbose=0) 
print("Accuracy: %.2f%%" % (scores[1]*100)) 
0

Iは、入力データをトークン化し、シーケンスに変換するトークナイザを使用することをお勧めします。

tokenizer = Tokenizer() 

tokenizer.fit_on_texts(data) 
tokenized_data = tokenizer.texts_to_sequences(data) 

Kerasドキュメント:トークナイザを使用して分類モデルのためのhttps://keras.io/preprocessing/text/

例:https://github.com/sreeram004/Machine-Learning/blob/master/Youtube%20Spam%20Classification%20using%20CNN%20LSTM/youtube-spam-classification-cnn_lstm.py

それはトークナイザのためkeras.preprocessing.text

例で空くです