неотрицательные веса для вложений

#deep-learning #neural-network #embedding

Вопрос:

Есть ли способ ограничить размеры вложения, чтобы они не были отрицательными? Я попробовал встроить_констринт = tf.keras.ограничения.NonNeg(), но когда я печатаю веса, некоторые из них отрицательные.

 Embedding(embed_input_dim,   self.embed_output,   input_length=embed_input_length,  embeddings_constraint = tf.keras.constraints.NonNeg(),  name = 'Embed_Request')(state_input)  print(self.model.get_layer('Embed_Request').get_weights()[0])  output:[array([[-0.03530975, -0.00357432, -0.02751002, ..., 0.01519774,  -0.04078618, 0.03334286],  [-0.0059206 , 0.01738295, -0.020679 , ..., -0.03848881,  -0.0269975 , 0.025242 ],  [-0.02481667, 0.03084642, 0.02665417, ..., -0.04804039,  -0.01495937, 0.01566639],  ...,  [-0.04929062, -0.03186668, 0.04426355, ..., 0.0278681 ,  -0.02907564, 0.00960131],  [ 0.01267063, -0.00036066, 0.01877231, ..., -0.01406764,  -0.01417869, -0.00672583],  [ 0.00624986, -0.01128934, 0.0309539 , ..., 0.01535386,  -0.02734694, 0.01445917]], dtype=float32)]  

Комментарии:

1. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы выделить именно то, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.

2. Я не уверен, правильно ли я интерпретировал, но из вашего фрагмента похоже, что вы хотите, чтобы вложения были инициализированы как ненулевые. В документации упоминалось, что эти константы применяются во время обучения, поэтому, возможно, вам следует обучить свою сеть и посмотреть на встраивания после обучения?