是否可以通过张量流图中的张量访问当前的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。
答案 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>