class LSTMRec(Model): def __init__(self, vocabulary_size, emb_output_dim, lstm_units, lstm_activation, lstm_recurrent_activation, lstm_dropout, lstm_recurrent_dropout, dense_activation): super(LSTMRec, self).__init__() self.emb = Embedding(input_dim=vocabulary_size + 1, output_dim=emb_output_dim, mask_zero=True) self.lstm = LSTM(units=lstm_units, activation=lstm_activation, recurrent_activation=lstm_recurrent_activation, dropout=lstm_dropout, recurrent_dropout=lstm_recurrent_dropout) self.dense = Dense(units=vocabulary_size, activation=dense_activation) # https://stackoverflow.com/questions/39854390/nan-in-summary-histogram # https://stackoverflow.com/questions/53080289/keras-nan-in-summary-histogram-lstm # self.emb.add_loss(10.0) # self.lstm.add_loss(10.0) # self.dense.add_loss(10.0) def call(self, x): mask = self.emb.compute_mask(x) x = self.emb(x) x = self.lstm(x, mask=mask) x = self.dense(x) return x