Двунаправленный LSTM с ELMO2 RuntimeError: Попытка захвата EagerTensor без построения функции - PullRequest
0 голосов
/ 10 октября 2019

# Это часть моего кода, которая вызывает ошибку во время выполнения. Это происходит, когда я называю x = двунаправленным и добавляю вложение. Может ли кто-нибудь помочь мне с этим?

elmo_model = hub.Module("https://tfhub.dev/google/elmo/2", trainable=True) # For fine-tuning the model
sess.run(tf.compat.v1.global_variables_initializer())
sess.run(tf.compat.v1.tables_initializer())


# Define function to apply elmo embedding model
def ElmoEmbedding(x):
    return elmo_model(inputs={
        "tokens": tf.squeeze(tf.cast(x, tf.string)),
        "sequence_len": tf.constant(batchSize * [maxSentLen])
    },
        signature="tokens",
        as_dict=True)["elmo"]

inputLayer = Input(shape=(maxSentLen,), dtype="string")
embedding = Lambda(ElmoEmbedding, output_shape=(maxSentLen, embeddingDimension))(inputLayer)

Ошибка выполнения возникает при выполнении этой строки.

x = Bidirectional(LSTM(units=nUnits, return_sequences=True, recurrent_dropout=recurrentDropOutRate, dropout=dropOutRate))(embedding)

#

xRNN = Bidirectional(LSTM(units=nUnits, return_sequences=True, recurrent_dropout=recurrentDropOutRate, dropout=dropOutRate))(x)
x = add([x, xRNN])
out = TimeDistributed(Dense(nTags, activation="softmax"))(x)
model = Model(inputLayer, out)
       # return model

model = build_model()
...