Keras TPU。编译失败:检测到不支持的操作

Vic*_*nko 5 keras tensorflow google-colaboratory google-cloud-tpu

我尝试使用Google Colab TPU运行我的keras UNet模型,而我却遇到了这个问题UpSampling2D。任何解决方案或解决方法?

要运行的代码:

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)
Run Code Online (Sandbox Code Playgroud)

错误:

[DT_INT16]设备中的T =“ CPU”;[DT_UINT16]设备中的T =“ CPU”;[DT_INT32]设备中的T =“ CPU”;[DT_INT64]中的T)){{node tpu_140211339657168 / up_sampling2d_1 / ResizeNearestNeighbor}}

小智 2

从错误来看,ResizeNearestNeighborKeras 的 Tensorflow 后端 () 图中的操作之一当前与 TPU 不兼容。目前有少量 Tensorflow 操作不可用于 TPU(云 TPU 常见问题解答)。

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

作为解决方法,您可以尝试结合 TPU 兼容的 Tensorflow 操作来复制ResizeNearestNeighbor. 特别是,您可能对ResizeBilinear Op 感兴趣,它与 TPU 兼容。