问题描述
我正在尝试使用 TensorFlow 训练神经网络,该网络将 RaggedTensor 作为输入 (tf.keras.layers.Input
)。它在 cpu 和 GPU 上运行良好,但我真的很难让它在 TPU 上运行。我想知道你们中的一些人是否设法让它工作(不一定要寻找直接的解决方案,虽然它会很棒,一些工具提示已经很棒了!)。到目前为止,错误消息已经足够明确,我可以继续,但我现在正在苦苦思索如何走得更远。
到目前为止我做了什么:
- 我正在使用
tf.data.Dataset
从 TF_Records 读取数据,但我需要将其显式转换为 DistributedDataset 以禁用 prefecting。
strategy.experimental_distribute_dataset(
dataset,tf.distribute.Inputoptions(
experimental_prefetch_to_device=False
)
)
- 我得到了
Compilation failure: Detected unsupported operations when trying to compile graph ... on XLA_TPU_JIT: RaggedTensorToTensor
,它可以通过允许软设备放置来(某种程度上)修复:
tf.config.set_soft_device_placement(True)
- 我现在被
Compilation failure: Input 1 to node '.../RaggedReduceSum/RaggedReduce/RaggedSplitsToSegmentIds/Repeat/SequenceMask/Range' with op Range must be a compile-time constant.
困住了。我完全理解为什么会出现此错误,我完全了解 available ops on TPU,尤其是大多数动态操作应在编译时确定以在 TPU 上运行。但我想不出我怎么能在 TPU 上使用那些参差不齐的张量……
任何想法将不胜感激:)
PS:自 2020 年 7 月 this answer 以来,我没有看到 TensorFlow 团队在 TPU 上的 RaggedTensors 上有多少新闻,但我可能错过了很多关于它的信息......指向 git如果我可以进行更多调查,线程对我来说已经很棒了。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)