def LSTM_model2(X_train,Y_train,X_val,Y_val,X_test,Y_test,test_label):
print('Loading embedding successful!')
print('len(X_train):'+str(len(X_train)))
print('len(X_val):'+str(len(X_val)))
print('len(X_test):'+str(len(X_test)))
print('len(Y_train):'+str(len(Y_train)))
print('len(Y_val):')+str(len(Y_val))
print('len(Y_test):'+str(len(Y_test)))
# print(test_label)
print('X_train shape:',X_train.shape)
print('X_val shape:',X_val.shape)
print('X_test shape:',X_test.shape)
print('Build model...')
model=Sequential()
# ??lstm
# model.add(LSTM(lstm_output_dim,return_sequences=True,\
# input_shape=(maxlen,embedding_dim)))
# model.add(LSTM(lstm_output_dim,return_sequences=True))
# model.add(LSTM(lstm_output_dim))
model.add(LSTM(lstm_output_dim,input_shape=(maxlen,embedding_dim)))
model.add(Dense(hidden_dim))
model.add(Activation('relu'))
model.add(Dropout(0.5))
# model.add(Dense(hidden_dim))
# model.add(Activation('relu'))
# model.add(Dropout(0.5))
model.add(Dense(nb_classes))
model.add(Activation('softmax'))
# optmr=Adadelta(lr=0.9,rho=0.90,epsilon=1e-08)
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
plot(model,to_file='model.png')
checkpointer=ModelCheckpoint(filepath='best_model.hdf5',monitor='val_acc',verbose=1,\
save_best_only=True,mode='max')
# history=LossHistory()
hist=model.fit(X_train,Y_train, batch_size=32, nb_epoch=20, verbose=1, shuffle=True, #20 10
validation_data=(X_val,Y_val),callbacks=[checkpointer])
# print(history.losses)
print hist.history
model.load_weights('best_model.hdf5')
# score=model.evaluate(X_test,Y_test,batch_size=32,verbose=1)
# print 'score:',score
#p_label=model.predict_classes(X_test,batch_size=32,verbose=1) # ????????
p_prob=model.predict_proba(X_test,batch_size=32,verbose=1)
p_label=np.array([np.argsort(item)[-1] for item in p_prob])
test_acc=np_utils.accuracy(p_label,test_label)
return p_label,p_prob
评论列表
文章目录