我正在按照此代码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
还是需要创建Embedding
可以处理的GRU
层?
答案 0 :(得分:0)
我有同样的错误,解决方法是
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