Python Keras Tensorflow自定义层仅调用一次
经过两天的紧张搜索,我在keras文档/一堆文档中没有找到答案 我正在尝试创建一个自定义层,以某种概率对每个批次执行增强(现在演示1)。 数据是具有一个通道的图像 我需要一种方法来知道增强功能是否在训练时实际发生,因为增强功能中的打印只在定义网络时发生一次,在激活Python Keras Tensorflow自定义层仅调用一次,python,tensorflow,keras,tensorflow2.0,keras-layer,Python,Tensorflow,Keras,Tensorflow2.0,Keras Layer,经过两天的紧张搜索,我在keras文档/一堆文档中没有找到答案 我正在尝试创建一个自定义层,以某种概率对每个批次执行增强(现在演示1)。 数据是具有一个通道的图像 我需要一种方法来知道增强功能是否在训练时实际发生,因为增强功能中的打印只在定义网络时发生一次,在激活fit功能时发生另一次 任何帮助都将不胜感激,谢谢 基本可运行工作示例,请注意call()中的打印数: 从tensorflow.keras.layers导入输入、密集、Conv2D、展平 从tensorflow.keras.models
fit
功能时发生另一次
任何帮助都将不胜感激,谢谢
基本可运行工作示例,请注意call()
中的打印数:
从tensorflow.keras.layers导入输入、密集、Conv2D、展平
从tensorflow.keras.models导入顺序
随机输入
将numpy作为np导入
导入tensorflow作为tf
从tensorflow.keras导入优化器
#自定义增强层
类增强层(tf.keras.layers.Layer):
定义初始化(self,p):
超级(增强层,自我)。\uuuu初始化
self.p=p
def呼叫(自我、输入、培训=无):
如果不是培训:
返回输入
打印('输入自定义图层调用,训练=',训练)
如果random.random()
如果使用tf.print()
它在图形执行中运行时也会打印。您可以在这里了解更多信息:。对于将来的人,我将补充一点,在编译模型时,有一个默认值,用于防止从自定义层内部运行某些函数(这就是为什么常规print()不起作用),以提高性能。其中包括:print()、np.save()以及更多
model.compile(..., run_eagerly=False) # default
如果要启用上述所有功能,请使用以下工具编译模型:
model.compile(..., run_eagerly=True)
层被调用一次,以构建由TensorFlow创建的计算图。这正是我所寻找的!当我使用tf.print()时,消息被打印到我预期的标准输出中-在每个批次。非常感谢。
model.compile(..., run_eagerly=True)