python - TPU 上的 RaggedTensor
问题描述
我正在尝试使用将RaggedTensortf.keras.layers.Input
作为输入( )作为输入的 TensorFlow 训练神经网络。它在 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.
。我完全理解为什么会出现此错误,我完全了解TPU 上的可用操作,特别是大多数动态操作应在编译时确定以在 TPU 上运行。但我想不出我怎么能用 TPU 来使用那些参差不齐的张量......
任何想法将不胜感激:)
PS:自从 2020 年 7 月的这个答案以来,我还没有看到 TensorFlow 团队关于 TPU 上 RaggedTensors 的太多消息,但我可能已经错过了很多关于它的消息……如果我指向 git 线程对我来说已经很棒了可以调查更多。
解决方案
推荐阅读
- algorithm - 在 O(nlogn+mlogm) 中获得折扣的最大人数
- java - 使用 ./gradlew 运行任务 ':app:compileJava' 执行失败
- python - 从 .mtx 文件创建列表列表
- excel - Excel 365 工作表数组公式返回未找到的值?
- javascript - HTML 在另一个表单中提交帖子
- holoviews - 用于全息视图布局的交互式绘图中的链接轴
- python - Surface Plot With Contours - 仅在 3D 图中绘制投影轮廓/轨迹
- python - 不可能使填字游戏检查适用于所有符号
- python - IDLE Python - 如何在按下键时运行循环?
- excel - 关于制作日历但不知道如何填写日期的问题