1

我尝试通过在 Google Colab 中调用自定义模块来构建模型,但收到 autoGraph 警告。

文件夹结构:

drive/My Drive/Colab Notebooks/stackoverflow/q001/
├── train
│   └── train.ipynb          # The place where I implement model
│                            # import models.get_ResNet13(.)
│   
└── tools
    └── dl
        ├── __init__.py 
        ├── layers.py
        └── models.py        # import layers.ResidualBottleneckBlock

代码:

层.py 代码

模型.py 代码

import tensorflow as tf
from tensorflow.keras.models import Model
from tensorflow.keras.layers import *
from .layers import ResidualBottleneckBlock

def get_ResNet13(input_shape, output_shape):
    ...
    ...ResidualBottleneckBlock()...
    ...
    return model
...

train.ipynb 代码

## Mount Google Drive
import os
from google.colab import drive 
drive.mount('/content/drive') 
os.chdir("drive/My Drive/Colab Notebooks/stackoverflow/q001/")

## Import
%tensorflow_version 2.x
import tensorflow as tf
import sys
sys.path.append('tools')
from dl import models

## Change Directory
os.chdir('train')
model = models.get_ResNet13(input_shape=(28, 28, 1), output_shape=10)

结果:

在 train.ipynb 的最后一行:

model = models.get_ResNet13(input_shape=(28, 28, 1), output_shape=10)

我收到以下警告:</p>

警告:tensorflow:AutoGraph 无法转换 > 并将按原样运行。请将此报告给 TensorFlow 团队。提交错误时,将详细程度设置为 10(在 Linux 上export AUTOGRAPH_VERBOSITY=10)并附上完整的输出。原因:找不到>的源代码。请注意,在某些环境中定义的函数(例如交互式 Python shell)不会公开其源代码。如果是这种情况,您应该在 .py 源文件中定义它们。如果您确定代码与图形兼容,请使用 @tf.autograph.do_not_convert 包装调用。原始错误:无法获取源代码警告:AutoGraph 无法转换 > 并将按原样运行。请将此报告给 TensorFlow 团队。提交错误时,将详细程度设置为 10(在 Linux 上,export AUTOGRAPH_VERBOSITY=10) 并附加完整的输出。原因:找不到>的源代码。请注意,在某些环境中定义的函数(例如交互式 Python shell)不会公开其源代码。如果是这种情况,您应该在 .py 源文件中定义它们。如果您确定代码与图形兼容,请使用 @tf.autograph.do_not_convert 包装调用。原始错误:无法获取源代码...

我试图添加以下代码,但它不起作用。colab中gast的版本已经是0.2.2了。

!pip install gast==0.2.2

我还发现,如果删除以下代码,则不会出现警告。

os.chdir('train')

模型仍然可以训练。我不知道我是否可以忽略警告。

有谁知道为什么会出现警告?

4

0 回答 0