Keras model's embedding weight get NaN value

I am working on 3 categorical and 19 numerical features in which I plan to use trained embedding weights (from categorical features). After training, and get weights from embedding layers, I got NaN values. Please help me if you know problem.

This is the model:

def create_model(embedding1_vocab_size = 7,
                embedding1_dim = 3,
                embedding2_vocab_size = 7,
                embedding2_dim = 3,
                embedding3_vocab_size = 7,
                embedding3_dim = 3):
    
    embedding1_input = Input((1,))
    embedding1 = Embedding(input_dim=embedding1_vocab_size,
                           output_dim=embedding1_dim,
                           name='embedding1')(embedding1_input)

    embedding2_input = Input((1,))
    embedding2 = Embedding(input_dim=embedding2_vocab_size,
                           output_dim=embedding2_dim,
                           name='embedding2')(embedding2_input)
    
    embedding3_input = Input((1,))
    embedding3 = Embedding(input_dim=embedding3_vocab_size,
                           output_dim=embedding3_dim,
                           name='embedding3')(embedding3_input)

    flatten = Flatten()(concatenate([embedding1, embedding2, embedding3]))

    normal_input = Input((19,)) # đây là số còn lại của các dữ liệu như numberical của data

    merged_input = concatenate([flatten, normal_input], axis=-1)

    dense1 = Dense(128, activation='relu')(merged_input)
    dropout1 = Dropout(0.001)(dense1)
    dense2 = Dense(128, activation='relu')(dropout1)
    dropout2 = Dropout(0.001)(dense2)

    output = Dense(1, activation='linear')(dropout2)

    model = Model(inputs=[embedding1_input, embedding2_input,embedding3_input, normal_input], outputs=output)
    model.compile(loss='mean_squared_error', optimizer=Adam(lr=.05, clipnorm=1.), metrics=['mae'])

    return model

How it look like by layers:

The result of embedding weights:

weights = model.get_layer('embedding1').get_weights()
pd.DataFrame(weights[0])
    0   1   2
0   -0.036907   -0.047382   -0.047246
1   NaN NaN NaN
2   NaN NaN NaN
3   NaN NaN NaN
4   NaN NaN NaN
... ... ... ...
21173   NaN NaN NaN
21174   NaN NaN NaN
21175   NaN NaN NaN
21176   NaN NaN NaN
21177   NaN NaN NaN
21178 rows × 3 columns

I am thinking about the problem on target values which contain negative numbers (negative numbers means the package is returned to suppliers.

Any help is appriciated.

Topic weight-initialization machine-learning-model keras tensorflow python

Category Data Science

About

Geeks Mental is a community that publishes articles and tutorials about Web, Android, Data Science, new techniques and Linux security.