![](/img/trans.png)
[英]Use Scipy Optimizer with Tensorflow 2.0 for Neural Network training
[英]Use callback information for training neural network in tensorflow 2
我目前正在尝试扩展此问题中建议的代码: How to get layer weight while training?
通过使用下面的代码:
class CustomCallback(keras.callbacks.Callback):
def on_train_batch_begin(self, batch, logs=None):
print(model.layers[2].get_weights())
history = model.fit(train_x, train_y,
epochs=200,
validation_data=(test_x, test_y),
verbose=1,
callbacks=[CustomCallback()])
我可以在训练时获得神经网络特定层的权重(在每批梯度下降的每次迭代开始时)。
我的问题是,我可以使用这些信息并允许损失函数访问它吗? 我想使用此信息来定义要优化的新表达式,作为要使用的自定义损失 function 的一部分。
换句话说,我想访问在每个批次的每个训练步骤期间通过回调获得的信息,并将此信息提供给自定义损失 function 以定义要优化的目标 function 术语之一。
例如,考虑以下自定义损失:
def Custom_Loss(y_true, y_pred):
return f(y_true, y_pred)
我想将上述定义的损失修改如下:
def Custom_Loss(y_true, y_pred):
return f(y_true, y_pred) + g(layer_2_weight, y_pred)
我想出的一个非常菜鸟的技巧(但不知道该怎么做)是定义一个“虚拟”变量,该变量在回调内部重新定义并将其用于丢失 function 定义,但我不确定这是否可行或如果这是正确的做法。
如果上述任务是可以实现的,是否可以获得一些示例代码或stackoverflow中的任何帖子(我试图找到它,但我找不到任何东西。如果有的话,请告诉我)?
就个人而言,我会做下面列出的两件事之一,
model.fit()
, run the model itself as a function. 您可以在官方 TensorFlow 网站上获得有关 Eager Execution 的更好信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.