rsm*_*rsm 5 python keras tensorflow tensorflow2.0
阅读这个 和这个答案,我明白对于 TensorFlow-2.0 上的非动态模型,Keras 将使用 AutoGraph。但是现在编写一个回调来获取训练期间变量的历史记录,
class TrainHistory(tf.keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.vars = []
def on_batch_end(self, batch, logs={}):
self.vars.append([v.numpy() for v in self.model.variables])
Run Code Online (Sandbox Code Playgroud)
我看到.numpy()
可以使用渴望张量的方法。我期待这样的错误numpy() is only available when eager execution is enabled
。将 Keras 与 TensorFlow-2.0 结合使用时,是否正在执行 Eager 代码?
这里提到,对于像卷积这样的计算密集型函数,与tf.function
Eager 代码相比,装饰函数的速度并没有太大提升,但从示例中显示的数字来看,我认为这种差异对于长时间训练可能意义重大。使用GradientTape
装饰的自定义训练函数tf.function
而不是 Keras 的fit()
方法在性能方面会更好吗?
如果您打算@tf.function
在外部循环(即“纪元”循环)上使用,它可能不会给您的模型带来太大好处。这只会让开发变得更加困难。代码越多,就越复杂。
但是,您绝对必须使用tf.function
自定义损失函数和其他每批调用一个的函数。
而且,不,使用GradientTape
-d customtf.function
可能不会优于 keras 的 fit 方法。多年来它经过了彻底的测试和完善。
这能回答您的问题吗?
归档时间: |
|
查看次数: |
398 次 |
最近记录: |