Keras - Nan em resumo histograma LSTM

Eu escrevi um modelo LSTM usando Keras e usando a ativação avançada do LeakyReLU:

    # ADAM Optimizer with learning rate decay
    opt = optimizers.Adam(lr=0.0001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0001)

    # build the model
    model = Sequential()

    num_features = data.shape[2]
    num_samples = data.shape[1]

    model.add(
        LSTM(16, batch_input_shape=(None, num_samples, num_features), return_sequences=True, activation='linear'))
    model.add(LeakyReLU(alpha=.001))
    model.add(Dropout(0.1))
    model.add(LSTM(8, return_sequences=True, activation='linear'))
    model.add(Dropout(0.1))
    model.add(LeakyReLU(alpha=.001))
    model.add(Flatten())
    model.add(Dense(1, activation='sigmoid'))

    model.compile(loss='binary_crossentropy', optimizer=opt,
                  metrics=['accuracy', keras_metrics.precision(), keras_metrics.recall(), f1])

Meus dados são um conjunto rotulado binário equilibrado. ou seja: 50% rotulado 1 50% rotulado 0. Eu useiactivation='linear' para as camadas LSTM anteriores à ativação do LeakyReLU, semelhante aeste exemplo Encontrei no GitHub.

O modelo lançaNan in summary histogram erro nessa configuração. Alterando as ativações do LSTM paraactivation='sigmoid' funciona bem, mas parece a coisa errada a se fazer.

Leiturathis StackOverflow pergunta sugerida "introduzindo um pequeno valor ao calcular a perda", Não sei bem como fazê-lo em uma função de perda intern

Qualquer ajuda / explicação seria apreciada.

Atualizar Eu posso ver que a perda é nan na primeira época

260/260 [==============================] - 6s 23ms/step - 
loss: nan - acc: 0.5000 - precision: 0.5217 - recall: 0.6512 - f1: nan - val_loss: nan - val_acc: 0.0000e+00 - val_precision: -2147483648.0000 - val_recall: -49941480.1860 - val_f1: nan

Update 2 Atualizei o TensorFlow e o Keras para as versões 1.12.0 e 2.2.4. Não houve efeito.

Eu também tentei adicionar uma perda à primeira camada LSTM, como sugerido por @Oluwafemi Sule, parece um passo na direção certa, agora a perda não é nan na primeira época, no entanto, ainda recebo o mesmo erro .. provavelmente por causa de outros valores nan, como o val_loss / val_f1.

[==============================] - 7s 26ms/step - 
loss: 1.9099 - acc: 0.5077 - precision: 0.5235 - recall: 0.6544 - f1: 0.5817 - val_loss: nan - val_acc: 0.5172 - val_precision: 35.0000 - val_recall: 0.9722 - val_f1: nan

Update 3entei compilar a rede apenas com a métrica de precisão, sem sucess

Epoch 1/300
260/260 [==============================] - 8s 29ms/step - loss: nan - acc: 0.5538 - val_loss: nan - val_acc: 0.0000e+00

questionAnswers(1)

yourAnswerToTheQuestion