WARNING:tensorflow:AutoGraph could not transform xxx and will run it as-is 的一种解决思路

Posted MarToony|名角

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WARNING:tensorflow:AutoGraph could not transform xxx and will run it as-is 的一种解决思路相关的知识,希望对你有一定的参考价值。

警告内容:
WARNING:tensorflow:AutoGraph could not transform <bound method TensorflowDataset.load_and_preprocess_image of <__main__.TensorflowDataset object at 0x7fc8d36be3d0>> and will run it as-is.
Cause: mangled names are not yet supported
To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert

一般来说,警告可以被忽视。但是相关操作时比较重要的一环,因此不希望其出现任何问题。
不过百度、谷歌得到的解决方案并不尽人意。

结合自己的代码特征,考虑是因为私有方法格式的原因。
如下所示:

# 类中的内容
image_ds = path_ds.map(self.__load_and_preprocess_image, num_parallel_calls=tf.data.AUTOTUNE)

def __preprocess_image(self, image):
    image = tf.image.decode_jpeg(image, channels=3)
    image = tf.image.resize(image, self.initialMeta["presize"])
    image /= 255.0  # normalize to [0,1] range
    return image

def __load_and_preprocess_image(self, path):
    image = tf.io.read_file(path)
    return self.__preprocess_image(image)

最后,我放弃使用私有方法,消除了警告内容。
即:

image_ds = path_ds.map(self.load_and_preprocess_image, num_parallel_calls=tf.data.AUTOTUNE)

def preprocess_image(self, image):
    image = tf.image.decode_jpeg(image, channels=3)
    image = tf.image.resize(image, self.initialMeta["presize"])
    image /= 255.0  # normalize to [0,1] range
    return image

def load_and_preprocess_image(self, path):
    image = tf.io.read_file(path)
    return self.preprocess_image(image)

以上说明,tensorflow框架中的tf.dataAPI中的方法使用,可以比较稳定的在类中进行,但是涉及到私有方法时可能会出现一些问题,因此平时编写代码时应该努力这种写法。

以上是关于WARNING:tensorflow:AutoGraph could not transform xxx and will run it as-is 的一种解决思路的主要内容,如果未能解决你的问题,请参考以下文章