Keras:如何访问模型中的步骤

时间:2019-06-01 08:00:18

标签: tensorflow keras

是否可以通过张量流图中的张量访问当前的Keras训练步骤?

我正在尝试建立一个具有“ε”参数的模型,该参数会根据当前训练步骤而衰减。

epsilon = some_fn_of(K.global_step) # <- Something like this?
self.q = K.Sequential([
    K.layers.InputLayer(input_shape),
    K.layers.Dense(n, name='q'),
    K.layers.Lambda(lambda x: tf.cond(tf.random.uniform((), 0, 1) < epsilon,
        lambda _: tf.constant(0.0),
        lambda ac: ac)
], name='q')

仅供参考:我正在使用Tensorflow捆绑的Keras。

2 个答案:

答案 0 :(得分:0)

我怀疑Keras在图中没有任何张量,并且访问此步骤的唯一方法是通过回调(Keras Docs,Tensorflow Docs)。尤其是因为Keras的后端是不可知的,因此很可能会保持在张量流之外。

答案 1 :(得分:0)

我不知道这是否可以全部使用,但是您似乎可以使用model.optimizer.iterations找到下一个训练步骤编号。变量名称的格式似乎为“ <优化器名称> / iter:0”。您可以在Optimizer文档中找到iterations属性。值示例:

<tf.Variable 'Adam/iter:0' shape=() dtype=int64, numpy=5978>