lstm_process.py 文件源码

python
阅读 15 收藏 0 点赞 0 评论 0

项目:ParseLawDocuments 作者: FanhuaandLuomu 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号