keras实现Bi-LSTM+CRF
2017-12-20 14:56
477 查看
keras官方版目前还没有实现CRF层,但是网上有大牛实现的扩展包戳这里,取用之。
安装方法1
安装方法2
我自己在使用方法1的时候一直出错,google了好久也没解决,故改用方法2。
安装完之后就可以直接使用了,上面给出的链接里有example,很容易上手。
代码
下面这部分代码是之前做实验搭baseline写的。
注意
keras-contrib在linux python2.7 theano后端的情况下不work!
虽然不知道原因,总之后端改成tensorflow就没有任何问题。
安装方法1
git clone https://www.github.com/farizrahman4u/keras-contrib.git cd keras-contrib python setup.py install
安装方法2
pip install git+https://www.github.com/farizrahman4u/keras-contrib.git
我自己在使用方法1的时候一直出错,google了好久也没解决,故改用方法2。
安装完之后就可以直接使用了,上面给出的链接里有example,很容易上手。
代码
下面这部分代码是之前做实验搭baseline写的。
input_layer = Input(shape = (max_len, )) embedding_layer = Embedding(len(vocabulary) + 1, output_dim = embedding_dim, mask_zero = True) bi_lstm_layer = Bidirectional(LSTM(64, return_sequences = True)) bi_lstm_drop_layer = Dropout(0.5) dense_layer = TimeDistributed(Dense(len(tag_list))) crf_layer = CRF(len(tag_list), sparse_target = True) input = input_layer embedding = embedding_layer(input) bi_lstm = bi_lstm_layer(embedding) bi_lstm_drop = bi_lstm_drop_layer(bi_lstm) dense = dense_layer(bi_lstm_drop) crf = crf_layer(dense) model = Model(input = [input], output = [crf]) model.summary() optmr = optimizers.Adam(lr = 0.001, beta_1 = 0.5) model.compile(optimizer = optmr, loss = crf_layer.loss_function, metrics = [crf_layer.accuracy]) check_pointer = ModelCheckpoint(filepath = 'best_model.hdf5', verbose = 1, save_best_only = True) hist = model.fit(train_x, train_y, batch_size = 32, epochs = 20, verbose = 2, validation_data = [val_x, val_y], callbacks = [check_pointer]) model.load_weights('best_model.hdf5') test_y_pred = model.predict(test_x).argmax(-1) test_y_true = test_y[:, :, 0]
注意
keras-contrib在linux python2.7 theano后端的情况下不work!
虽然不知道原因,总之后端改成tensorflow就没有任何问题。
相关文章推荐
- 基于深度学习的命名实体识别bi-lstm+crf
- Pytorch Bi-LSTM + CRF 代码详解
- keras实现BiLSTM+CNN+CRF文字标记NER
- TensorFlow (RNN)深度学习下 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 双向LSTM+CRF跑序列标注问题
- End to End Sequence Labeling via Bi-directional LSTM CNNs CRF
- lstm+crf实现命名实体识别
- Keras框架下LSTM的一种实现
- TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载
- 词法分析之Bi-LSTM-CRF框架
- keras的LSTM文本分类预处理及代码简单实现
- LSTM梳理,理解,和keras实现
- LSTM的神经网络keras实现
- Keras 实现 LSTM在20_newsgroup新闻数据集
- 使用tensorlayer来实现:通过keras例子来理解lstm循环神经网络
- 用keras实现lstm 利用Keras下的LSTM进行情感分析
- LSTM梳理,理解,和keras实现 (一)
- Bi-LSTM + CRF 命名实体识别
- Keras实现LSTM
- TensorFlow (RNN)深度学习 双向LSTM(BiLSTM)+CRF 实现 sequence labeling 序列标注问题 源码下载
- 手把手教你用 Keras 实现 LSTM 预测英语单词发音