在Keras中对可训练的参数进行排序

时间:2019-07-13 07:06:27

标签: python tensorflow machine-learning keras deep-learning

当我有一些可训练的参数时,说layer.trainable_weights。我想在进行其他操作之前对这些权重进行排序,我可以这样做吗?我可以使用

之类的东西吗
import tensorflow as tf
p = layer.trainable_weights
p = tf.sort(p)

或者Keras中有什么特别的方法吗?

我是Keras和TensorFlow的新手。非常感谢有人可以回答我的问题,谢谢!


编辑: 对于“其他操作”,我想将这些排序的可训练权重输入另一个神经网络,但是该神经网络是固定的(不可训练)。所以我想做的是像

import tensorflow as tf
p = model.layer[0].trainable_weights
p = tf.sort(p)

another_model.trainable = False
x = another_model(p)
# x is involved in the loss function of the original model

希望这很清楚,希望任何人都能帮助我! (而且,我可以只使用x=another_model.predict(p)而不是上面的x=another_model(p)吗?)

1 个答案:

答案 0 :(得分:0)

当然可以。由于您尚未清楚说明这些下游操作是什么,因此很难回答您的问题。

如果您只想做一些事情来监视培训过程,例如监视自定义指标以测量感兴趣的权重矩阵的累积分布函数,请随时使用tf.sort(在对它进行排序之前,可以使用K.stop_gradient(W),以进一步确保没有梯度从任何下游流回处理)。

如果您要执行监控以外的其他操作,例如计算自定义正则项以在培训优化中发挥作用,您应该重新考虑如何高效,有效地实施这一部分。但是直接使用tf.sort并没有帮助!为什么?由于此功能未通过反向传播实现,(您可能需要仔细检查以查看最新版本是否支持此功能)