Keras LSTM多类分类 [英] Keras LSTM multiclass classification

查看:2320
本文介绍了Keras LSTM多类分类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这段适用于二进制分类的代码.我已经对keras imdb数据集进行了测试.

I have this code that works for binary classification. I have tested it for keras imdb dataset.

    model = Sequential()
    model.add(Embedding(5000, 32, input_length=500))
    model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])        
    print(model.summary())
    model.fit(X_train, y_train, epochs=3, batch_size=64)
    # Final evaluation of the model
    scores = model.evaluate(X_test, y_test, verbose=0)

我需要将以上代码转换为多类分类,总共有7个类.在阅读了几篇文章以转换上面的代码后,我了解了我必须更改的内容

I need the above code to be converted for multi-class classification where there are 7 categories in total. What I understand after reading few articles to convert above code I have to change

model.add(Dense(7, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])  

显然,仅更改两行以上是行不通的.为了使代码适用于多类分类,我还需要更改什么.另外,我认为我必须将类更改为一种热门编码,但不知道如何在keras中使用.

Obviously changing just above two lines doesn't work. What else do I have to change to make the code work for multiclass classification. Also I think I have to change the classes to one hot encoding but don't know how in keras.

推荐答案

是的,您需要一个热点目标,您可以使用to_categorical或较短的方式对目标进行编码:

Yes, you need one hot target, you can use to_categorical to encode your target or a short way:

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

这是完整的代码:

from keras.models import Sequential
from keras.layers import *

model = Sequential()
model.add(Embedding(5000, 32, input_length=500))
model.add(LSTM(100, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(7, activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

model.summary()

摘要

Using TensorFlow backend.
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
embedding_1 (Embedding)      (None, 500, 32)           160000    
_________________________________________________________________
lstm_1 (LSTM)                (None, 100)               53200     
_________________________________________________________________
dense_1 (Dense)              (None, 7)                 707       
=================================================================
Total params: 213,907
Trainable params: 213,907
Non-trainable params: 0
_________________________________________________________________

这篇关于Keras LSTM多类分类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆