tensorflow - 通过回调 api 动态更新数据集过滤器中使用的 tensorflow 变量
问题描述
def myfilter(x, my_var):
return tf.equal(x['vars'], my_var)
data = tf.data.TFRecordDataset(tf.io.match_filenames_once('part-*'))
my_var = tf.Variable(1, trainable=False, name='my_var', dtype=tf.int64)
data = data.map(parsing_func, num_parallel_calls=multiprocessing.cpu_count() - 1)
data= data.filter(lambda x : myfilter(x, my_var) )
data = data.batch(batch_size=32)
在这里,使用 static my_var
,我可以过滤数据。但是,我想继续从 [1, 2, .... n] 更新 var 值。关于在培训期间如何做到这一点的任何想法?
我正在尝试这样的事情:
class CustomVarScheduler(tf.keras.callbacks.Callback):
def __init__(self, my_var):
super(CustomPhaseScheduler, self).__init__()
self.var = my_var
def on_epoch_begin(self, epoch, logs=None):
# Set the value back to the optimizer before this epoch starts
tf.keras.backend.set_value(self.my_var, tf.math.add(self.my_var, 1))
print("\nEpoch %05d: my_var is %6.4f." % (epoch, self.my_var))
无法使其正常工作。有什么帮助吗?谢谢。
解决方案
推荐阅读
- c - 如何在 C 程序中打印序数指示符?无法打印带有 'st'、'nd'、'rd' 的数字。(初学者)
- vbscript - VBS 错误:BOF 或 EOF 为真或当前记录已被删除 错误 800AOBCD
- c++ - 编译错误:使用已删除的函数
- python - 如何用 NaN 替换数组的空值
- xamarin - 为什么它没有捕捉到异常?
- windows - 使用 ReactOS 构建环境编译音频驱动程序时出错
- android - 如何将滚动视图放在另一个滚动视图中
- tensorflow - tensorflow.compat.v1.disable_v2_behavior() 应该对使用 Keras API 的训练产生什么影响?
- c# - UWP RadExpanderControl 正在绑定 ContentTemplate 但不是 ExpandableContentTemplate
- chromium - Bootstrap Dual Listbox - 在基于 Chromium 的移动浏览器中,两个列表都叠加有“0 selected”