Keras TPU.编译失败:检测到不支持的操作 [英] Keras TPU. Compilation failure: Detected unsupported operations

查看:261
本文介绍了Keras TPU.编译失败:检测到不支持的操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用Google Colab TPU运行我的keras UNet模型,我遇到了UpSampling2D这个问题.有解决方案或解决方法吗?

I try to run my keras UNet model using Google Colab TPU and I faced this problem with UpSampling2D. Any solutions or workaround?

要运行的代码:

import os
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import UpSampling2D

model = Sequential()
model.add(UpSampling2D((2, 2), input_shape=(16, 16, 1)))
model.compile(optimizer=tf.train.RMSPropOptimizer(learning_rate=0.01), 
              loss='binary_crossentropy', metrics=['acc'])

TPU_WORKER = 'grpc://' + os.environ['COLAB_TPU_ADDR']
tf.logging.set_verbosity(tf.logging.INFO)


model = tf.contrib.tpu.keras_to_tpu_model(
    model,strategy=tf.contrib.tpu.TPUDistributionStrategy(
        tf.contrib.cluster_resolver.TPUClusterResolver(TPU_WORKER)))

X = np.zeros((1024, 16, 16, 1))
Y = np.zeros((1024, 32, 32, 1))

model.fit(X, Y, batch_size=1024)

错误:

RuntimeError:编译失败:编译失败:检测到 尝试编译图形时不支持的操作 XLA_TPU_JIT上的cluster_3_5095732716396540171 []:ResizeNearestNeighbor (没有为XLA_TPU_JIT注册的"ResizeNearestNeighbor" OpKernel 与节点{{node tpu_140211339657168/up_sampling2d_1/ResizeNearestNeighbor}} = ResizeNearestNeighbor [T = DT_FLOAT,align_corners = false, _device ="/device:TPU_REPLICATED_CORE"](infeed-train_1:1,tpu_140211339657168/up_sampling2d_1/mul) .已注册:device ='CPU'; [DT_DOUBLE]中的T 设备='CPU'; [DT_FLOAT]中的T 设备='CPU'; [DT_BFLOAT16]中的T 设备='CPU'; [DT_HALF]中的T 设备='CPU'; [DT_INT8]中的T 设备='CPU'; [DT_UINT8]中的T 设备='CPU'; [DT_INT16]中的T 设备='CPU'; [DT_UINT16]中的T 设备='CPU'; [DT_INT32]中的T 设备='CPU'; [DT_INT64]中的T ){{node tpu_140211339657168/up_sampling2d_1/ResizeNearestNeighbor}}

RuntimeError: Compilation failed: Compilation failure: Detected unsupported operations when trying to compile graph cluster_3_5095732716396540171[] on XLA_TPU_JIT: ResizeNearestNeighbor (No registered 'ResizeNearestNeighbor' OpKernel for XLA_TPU_JIT devices compatible with node {{node tpu_140211339657168/up_sampling2d_1/ResizeNearestNeighbor}} = ResizeNearestNeighbor[T=DT_FLOAT, align_corners=false, _device="/device:TPU_REPLICATED_CORE"](infeed-train_1:1, tpu_140211339657168/up_sampling2d_1/mul) . Registered: device='CPU'; T in [DT_DOUBLE] device='CPU'; T in [DT_FLOAT] device='CPU'; T in [DT_BFLOAT16] device='CPU'; T in [DT_HALF] device='CPU'; T in [DT_INT8] device='CPU'; T in [DT_UINT8] device='CPU'; T in [DT_INT16] device='CPU'; T in [DT_UINT16] device='CPU'; T in [DT_INT32] device='CPU'; T in [DT_INT64] ){{node tpu_140211339657168/up_sampling2d_1/ResizeNearestNeighbor}}

推荐答案

从该错误看来,您的Tensorflow后端(ResizeNearestNeighbor)图中针对Keras的操作之一当前与TPU不兼容.目前有少量Tensorflow操作不适用于TPU(云TPU常见问题解答).

From the error it looks like one of the operations in your Tensorflow backend (ResizeNearestNeighbor) graph for Keras is currently not compatible with TPUs. There are a small number of Tensorflow ops that are currently not available for TPUs (Cloud TPU FAQs).

您可以在此处查阅与TPU兼容的Tensorflow操作的当前列表. .您还可以使用Tensorboard查看 TPU兼容性图.

You can check out the current list of TPU compatible Tensorflow ops here. You can also use Tensorboard to see TPU Compatibility Graphs.

作为一种解决方法,您可以尝试结合使用与TPU兼容的Tensorflow op,以复制ResizeNearestNeighbor的行为.特别是,您可能对 ResizeBilinear 感兴趣. Op,它与TPU兼容.

As a workaround, you can try combine the TPU compatible Tensorflow ops to replicate the behavior of ResizeNearestNeighbor. In particular, you may be interested in the ResizeBilinear Op, which is TPU compatible.

这篇关于Keras TPU.编译失败:检测到不支持的操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆