Keras Bi LSTM CRF Python至R

Keras Bi LSTM CRF Python至R,keras,sequence,lstm,crf,labeling,Keras,Sequence,Lstm,Crf,Labeling,我正在尝试创建一个bi lstm crf,以便在序列建模场景中分配标签。我有很多句子,其中单词被标记在一个BIO(开始,内部,外部)方案中,我希望深层神经网络能够从单词序列和指定的标记中学习,具有正向和反向传播,并使用条件随机场 我遵循中所示的python实现,并尝试在R中实现它 我已经对序列进行了排序和填充,并创建了X_-Train和Y_-Train,以输入深度学习网络 模型的Python实现如下(从上面的链接) 如何在R中实现这一点? 到目前为止,我得到的信息如下,但似乎不正确 input

我正在尝试创建一个bi lstm crf,以便在序列建模场景中分配标签。我有很多句子,其中单词被标记在一个BIO(开始,内部,外部)方案中,我希望深层神经网络能够从单词序列和指定的标记中学习,具有正向和反向传播,并使用条件随机场

我遵循中所示的python实现,并尝试在R中实现它

我已经对序列进行了排序和填充,并创建了X_-Train和Y_-Train,以输入深度学习网络

模型的Python实现如下(从上面的链接)

如何在R中实现这一点? 到目前为止,我得到的信息如下,但似乎不正确

input <- layer_input(shape = c(max_len,))  ## --- Does not seem correct --

output <- input %>%
  layer_embedding(input_dim = n_words + 1, output_dim = 20, input_length=max_len, mask_zero = TRUE) %>%
  bidirectional(layer_lstm(units=50, return_sequences = TRUE,recurrent_dropout = 0.1)) %>%
  time_distributed(layer_dense(units = 50, activation = "relu"))
         ## -- Dont know how to create a CRF layer

model <- keras_model(input, output)

model %>% compile(
  optimizer = "rmsprop",
  loss = "categorical_crossentropy"
)

summary(model)
model %>% fit(S1S2S3XTrain, S1S2S3YTrain, epochs = 5, batch_size = 32)
model %>% evaluate(x_train, y_train)
input%
双向(层lstm(单位=50,返回序列=TRUE,周期性丢失=0.1))%>%
时间分布(层密度(单位=50,激活=“relu”))
##--不知道如何创建CRF层
模型%compile(
optimizer=“rmsprop”,
loss=“分类的交叉熵”
)
摘要(模型)
型号%>%适合(S1S2S3XTrain,S1S2S3YTrain,历代=5,批次大小=32)
型号%>%评估(x列车、y列车)

请帮忙。

供参考。R中的CRF模型可在以下位置使用R软件包进行拟合:。您可以在其中输入任何项目属性。这也意味着来自BiLSTM的功能
input <- layer_input(shape = c(max_len,))  ## --- Does not seem correct --

output <- input %>%
  layer_embedding(input_dim = n_words + 1, output_dim = 20, input_length=max_len, mask_zero = TRUE) %>%
  bidirectional(layer_lstm(units=50, return_sequences = TRUE,recurrent_dropout = 0.1)) %>%
  time_distributed(layer_dense(units = 50, activation = "relu"))
         ## -- Dont know how to create a CRF layer

model <- keras_model(input, output)

model %>% compile(
  optimizer = "rmsprop",
  loss = "categorical_crossentropy"
)

summary(model)
model %>% fit(S1S2S3XTrain, S1S2S3YTrain, epochs = 5, batch_size = 32)
model %>% evaluate(x_train, y_train)