【问题标题】:add LSTM/GRU to BERT embeddings in keras tensorflow在 keras tensorflow 中将 LSTM/GRU 添加到 BERT 嵌入
【发布时间】:2019-10-29 19:58:00
【问题描述】:

我正在按照此代码https://github.com/strongio/keras-bert/blob/master/keras-bert.py 尝试 BERT 嵌入

这些是代码的重要部分(第 265-267 行):

bert_output = BertLayer(n_fine_tune_layers=3)(bert_inputs)
dense = tf.keras.layers.Dense(256, activation="relu")(bert_output)
pred = tf.keras.layers.Dense(1, activation="sigmoid")(dense)

我想在 BertLayer 和 Dense 层之间添加一个 GRU

bert_output = BertLayer(n_fine_tune_layers=3)(bert_inputs)
gru_out = tf.keras.layers.GRU(100, activation='sigmoid')(bert_output)
dense = tf.keras.layers.Dense(256, activation="relu")(gru_out)
pred = tf.keras.layers.Dense(1, activation="sigmoid")(dense)

但我收到此错误TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'

我不完全确定如何解决这个问题。我需要重塑bert_output 还是需要创建GRU 可以处理的Embedding 层?

【问题讨论】:

  • 运气好如何使用它? daria

标签: lstm word-embedding tf.keras


【解决方案1】:

我也遇到了同样的错误,解决办法是

embedding_size = 768

bert_output = BertLayer(n_fine_tune_layers=3)(bert_inputs)
# Reshape bert_output before passing it the GRU
bert_output_ = tf.keras.layers.Reshape((max_seq_length, embedding_size))(bert_output)

gru_out = tf.keras.layers.GRU(100, activation='sigmoid')(bert_output_)
dense = tf.keras.layers.Dense(256, activation="relu")(gru_out)
pred = tf.keras.layers.Dense(1, activation="sigmoid")(dense)

希望可以,有需要可以参考my question

【讨论】:

    猜你喜欢
    • 2019-01-21
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    相关资源
    最近更新 更多