Tensorflow Data Augmentation 给出警告:Using a while_loop for conversion

Kar*_*ski 11 keras tensorflow data-augmentation

我根据官方TensorFlow教程使用数据增强。首先,我创建一个具有增强层的顺序模型:

def _getAugmentationFunction(self):
    if not self.augmentation:
        return None
    pipeline = []
    
    pipeline.append(layers.RandomFlip('horizontal_and_vertical'))
    pipeline.append(layers.RandomRotation(30))
    pipeline.append(layers.RandomTranslation(0.1, 0.1, fill_mode='nearest'))
    pipeline.append(layers.RandomBrightness(0.1, value_range=(0.0, 1.0)))

    model =  Sequential(pipeline)
    return lambda x, y: (model(x, training=True), y)
Run Code Online (Sandbox Code Playgroud)

然后,我在数据集上使用映射函数:

data_augmentation = self._getAugmentationFunction()
self.train_data = self.train_data.map(data_augmentation,
                                      num_parallel_calls=AUTOTUNE)
Run Code Online (Sandbox Code Playgroud)

该代码按预期工作,但我收到以下警告:

WARNING:tensorflow:Using a while_loop for converting RngReadAndSkip
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting StatelessRandomUniformV2
WARNING:tensorflow:Using a while_loop for converting RngReadAndSkip
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting StatelessRandomUniformV2
WARNING:tensorflow:Using a while_loop for converting ImageProjectiveTransformV3
WARNING:tensorflow:Using a while_loop for converting RngReadAndSkip
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting StatelessRandomUniformV2
WARNING:tensorflow:Using a while_loop for converting RngReadAndSkip
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting StatelessRandomUniformV2
WARNING:tensorflow:Using a while_loop for converting RngReadAndSkip
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting StatelessRandomUniformV2
WARNING:tensorflow:Using a while_loop for converting ImageProjectiveTransformV3
WARNING:tensorflow:Using a while_loop for converting RngReadAndSkip
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting Bitcast
WARNING:tensorflow:Using a while_loop for converting StatelessRandomUniformV2
Run Code Online (Sandbox Code Playgroud)

警告的原因是什么以及如何解决?我使用的是 TF v2.9.1

小智 6

这不仅仅是警告 - 这些层非常慢!就我而言,一个 epoch 的时间从 30 秒增加到几分钟。

\n

这似乎是 keras 版本 2.9 和 2.10 中的一个错误(包含在tensorflow中):https ://github.com/keras-team/keras-cv/issues/581

\n

它可以在 TF v2.8.3 上正常工作 - 没有错误消息,并且训练速度很快。

\n

在我的拱门系统 \xe2\x80\x93\xc2\xa0 上,我已经通过python-tensorflow-opt-cuda使用pacman\xe2\x80\x93 安装软件包来安装 TF,我发出以下命令解决了问题:

\n
python -m pip install tensorflow-gpu==2.8.3\n
Run Code Online (Sandbox Code Playgroud)\n


小智 2

TensorFlow 中的警告可以通过 tf.get_logger().setLevel(). 要关闭警告,您可以使用

tf.get_logger().setLevel('ERROR')
Run Code Online (Sandbox Code Playgroud)

我试图在要点中复制它,请在这里找到它。谢谢你!