如何在云 TPU 上使用 Tensorflow Hub 模型?
How to use Tensorflow Hub models on cloud TPU?
我正在尝试使用来自 Kaggle 上的 tensorflow hub 的模型。
像这样:
m = tf.keras.Sequential([
hub.KerasLayer("https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4", output_shape=[1280],
trainable=False), # Can be True, see below.
tf.keras.layers.Dense(num_classes, activation='softmax')
])
m.build([None, 224, 224, 3]) # Batch input shape.
它在 GPU 上运行良好,但是一旦我切换到带有 TF 记录的 TPU,我就会收到以下错误:
InvalidArgumentError: Unsuccessful TensorSliceReader constructor: Failed to get matching files on /tmp/tfhub_modules/87fb99f72aec02d017e12c0a3d86c5c182ec22ca/variables/variables: Unimplemented: File system scheme '[local]' not implemented (file: '/tmp/tfhub_modules/87fb99f72aec02d017e12c0a3d86c5c182ec22ca/variables/variables')
然而,设置和 tfrecords 数据集都是正确的,因为它可以将预训练模型切换到相同模型的 keras 应用程序(例如,上面使用 mobilenet keras 应用程序)。
我试过缓存但没有成功,在遵循本指南时有什么我必须注意的吗:
https://www.tensorflow.org/hub/caching
提前致谢!
发生失败是因为 TPU 正在尝试从它无权访问的 /tmp/
加载 TFHub 模型。您应该能够通过以下方式使其正常工作:
with strategy.scope():
load_locally = tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
m = tf.keras.Sequential([
hub.KerasLayer(
"https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4",
output_shape=[1280],
load_options=load_locally,
trainable=False), # Can be True, see below.
tf.keras.layers.Dense(num_classes, activation='softmax')
])
我正在尝试使用来自 Kaggle 上的 tensorflow hub 的模型。 像这样:
m = tf.keras.Sequential([
hub.KerasLayer("https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4", output_shape=[1280],
trainable=False), # Can be True, see below.
tf.keras.layers.Dense(num_classes, activation='softmax')
])
m.build([None, 224, 224, 3]) # Batch input shape.
它在 GPU 上运行良好,但是一旦我切换到带有 TF 记录的 TPU,我就会收到以下错误:
InvalidArgumentError: Unsuccessful TensorSliceReader constructor: Failed to get matching files on /tmp/tfhub_modules/87fb99f72aec02d017e12c0a3d86c5c182ec22ca/variables/variables: Unimplemented: File system scheme '[local]' not implemented (file: '/tmp/tfhub_modules/87fb99f72aec02d017e12c0a3d86c5c182ec22ca/variables/variables')
然而,设置和 tfrecords 数据集都是正确的,因为它可以将预训练模型切换到相同模型的 keras 应用程序(例如,上面使用 mobilenet keras 应用程序)。
我试过缓存但没有成功,在遵循本指南时有什么我必须注意的吗: https://www.tensorflow.org/hub/caching
提前致谢!
发生失败是因为 TPU 正在尝试从它无权访问的 /tmp/
加载 TFHub 模型。您应该能够通过以下方式使其正常工作:
with strategy.scope():
load_locally = tf.saved_model.LoadOptions(experimental_io_device='/job:localhost')
m = tf.keras.Sequential([
hub.KerasLayer(
"https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4",
output_shape=[1280],
load_options=load_locally,
trainable=False), # Can be True, see below.
tf.keras.layers.Dense(num_classes, activation='softmax')
])