也许过度拟合试图用keras实现rnn

时间:2018-11-03 03:41:12

标签: machine-learning neural-network keras text-classification rnn

我正在尝试为情感分类(-1(neg)或1(pos))创建RNN。我的数据集文件如下所示: 文字,极性 “这是一条线”,1 “这是第二行”,-1 ..... 等等 像这样的2603行 这是我到目前为止所获得的,并且可以非常快速地达到最大精度,所以我认为这是错误的。但是我在做什么错呢?

代码:

from __future__ import print_function
from keras.preprocessing import sequence
import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense, Embedding, Activation, Dropout
from keras.preprocessing.text import Tokenizer
from keras.layers import LSTM
from keras.datasets import imdb
import pandas as pd
import string
import nltk
from sklearn.model_selection import train_test_split
from collections import Counter


batch_size = 32
num_words=2000
epochs=15


print('Loading data...')
data = pd.read_csv("yolo.csv",header=0,encoding = 'UTF-8')
X = data['text']
Y = data['polarity']


x_train,x_test,y_train,y_test = train_test_split(X,Y,test_size=0.2)  #split train/test data

tokenizer = Tokenizer(num_words=num_words, lower=False, split=' ')

tokenizer.fit_on_texts(x_train)
x_train= tokenizer.texts_to_sequences(x_train)
x_test= tokenizer.texts_to_sequences(x_test)

x_train= tokenizer.sequences_to_matrix(x_train, mode='binary')
x_test= tokenizer.sequences_to_matrix(x_test, mode='binary')

y_train = tf.keras.utils.to_categorical(y_train,2)
y_test = tf.keras.utils.to_categorical(y_test,2)


print('x_train shape:', x_train.shape)
print('x_test shape:', x_test.shape)



print('Build model...')
model = Sequential()
model.add(Dense(512, input_shape=(num_words, )))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print (model.metrics_names)
history= model.fit (x_train,y_train, batch_size=batch_size, epochs=epochs, verbose=1)
score= model.evaluate(x_test, y_test, batch_size=batch_size, verbose=1)

print ('Test loss: ()'.format(score[0]))
print ('Test accuracy:{}'.format(score[1]))

0 个答案:

没有答案