Keras 中的贪心初始化

Greedy Initialization in Keras

我目前正在 Tensorflow 中编写一个前馈网络,我想制作一个自定义初始化器,它使用具有最高 MSE 的点的(外部定义的)函数来初始化每一层。

伪代码:

 Given any input data being passed to my current layer:

 - Identify datapoint *X* with highest MSE from target
 - Initialize at *f(X)*

抱歉,如果我没有发布伪代码,但我完全不知道如何在 Keras(Python 不是 R)中实现它。

由于您希望 Weights 相对于 Maximized Loss 而不是 Minimized Loss 进行更新(来自评论),因此可以通过传递 -loss 来实现,如下代码所示:

Tensorflow 版本 2.x:

loss = tf.keras.losses.MSE()
opt = tf.keras.optimizers.Adam(learning_rate=0.01)
model.compile(optimizer=opt, loss = -loss)

Tensorflow 版本 1.x:

loss = tf.reduce_mean(tf.keras.losses.MSE(y_true, y_pred))
trainm = tf.train.GradientDescentOptimizer(0.01).minimize(-loss)

希望对您有所帮助。