Python 基于keras的RNN文本分类
我在keras中编写了这个RNN文本分类系统,并提供了web上的教程。它工作正常,并显示输出。但是有人能检查我的代码并告诉我我的实现是否正确吗Python 基于keras的RNN文本分类,python,python-2.7,neural-network,keras,recurrent-neural-network,Python,Python 2.7,Neural Network,Keras,Recurrent Neural Network,我在keras中编写了这个RNN文本分类系统,并提供了web上的教程。它工作正常,并显示输出。但是有人能检查我的代码并告诉我我的实现是否正确吗 # LSTM with dropout for sequence classification import numpy from keras.models import Sequential from keras.layers import Dense, Activation from keras.layers import LSTM from ke
# LSTM with dropout for sequence classification
import numpy
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.layers import LSTM
from keras.preprocessing import sequence,text
from keras.layers.embeddings import Embedding
import pandas as pd
# fix random seed for reproducibility
numpy.random.seed(7)
#fetching sms spam dataset
url = 'https://raw.githubusercontent.com/justmarkham/pydata-dc-2016-tutorial/master/sms.tsv'
sms = pd.read_table(url, header=None, names=['label', 'message'])
#binarizing
sms['label_num'] = sms.label.map({'ham':0, 'spam':1})
sms.head()
X = sms.message
y = sms.label_num
print(X.shape)
print(y.shape)
###################################
tk = text.Tokenizer(nb_words=200, lower=True)
tk.fit_on_texts(X)
x = tk.texts_to_sequences(X)
print len(tk.word_counts)
###################################
max_len = 80
print "max_len ", max_len
print('Pad sequences (samples x time)')
x = sequence.pad_sequences(x, maxlen=max_len)
max_features = 200
model = Sequential()
print('Build model...')
model = Sequential()
model.add(Embedding(max_features, 128, input_length=max_len, dropout=0.2))
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='rmsprop')
model.fit(x, y=y, batch_size=500, nb_epoch=1, verbose=1, validation_split=0.2, show_accuracy=True, shuffle=True)
您的实现很好,但是不推荐使用show_accurity=True功能。如果您想在培训和测试期间监控精度,请将其用作度量。指标可以自定义,但其中一些指标(如准确性)是预先实现的。像这样使用它:
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
如果定义客户度量,请执行以下操作:
def my_metric(y_pred, y_true):
....
return metric_computed
您可以这样使用它,它将与训练期间默认的精度和损失同时计算:
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy',my_metric])
否则,实现似乎很好:请尝试我投票结束这个问题,因为它属于codereview.stackexchange.com。如何确定最大功能、输入长度以及什么是128?