Как преобразовать модель Keras в модель ТПУ

Я пытаюсь преобразовать свою модель Keras в облачной консоли Google в модель TPU. К сожалению, я получаю сообщение об ошибке, как показано ниже. Мой минимальный пример следующий:

import keras
from keras.models import Sequential
from keras.layers import Dense, Activation
import tensorflow as tf
import os
model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Dense(32))
model.add(Activation('relu'))
model.compile(optimizer='rmsprop', loss='mse')
tpu_model = tf.contrib.tpu.keras_to_tpu_model(
    model,
    strategy=tf.contrib.tpu.TPUDistributionStrategy(
         tf.contrib.cluster_resolver.TPUClusterResolver(TPU_WORKER)))

Мой вывод:

Using TensorFlow backend.
Traceback (most recent call last):
     File "cloud_python4.py", line 11, in <module>
     tpu_model = tf.contrib.tpu.keras_to_tpu_model(AttributeError: module 'tensorflow.contrib.tpu' has no attribute 'keras_to_tpu_model'

Метод keras_to_tpu_model кажется экспериментальным, как указано на веб-сайте tenorflow. Это было недавно удалено? Если так, как я могу перейти к использованию TPU для оценки моей модели Keras? Если метод keras_to_tpu_model все еще доступен, почему я не могу вызвать его?

1 ответ

Я предполагаю, что вы определили себя TPU_WORKER, как показано ниже

import os
TPU_WORKER = ‘grpc://’ + os.environ[‘COLAB_TPU_ADDR’]

Вместо того, чтобы преобразовывать вашу модель в TPU, создайте стратегию распространения. Это метод, с помощью которого партия будет распределена по восьми TPU и как будут рассчитаны потери от каждого из них.

resolver = tf.contrib.cluster_resolver.TPUClusterResolver(TPU_WORKER)
tf.contrib.distribute.initialize_tpu_system(resolver)
strategy = tf.contrib.distribute.TPUStrategy(resolver)

С помощью стратегии постройте и скомпилируйте свою модель. Это должно хорошо работать для регрессии.

with strategy.scope():
  model = Sequential() 
  model.add(Dense(32, input_dim=784))
  model.add(Dense(32))
  model.add(Activation('relu'))
  model.compile(optimizer='rmsprop', loss='mse')

Импортные керасы из тензорфлоу. Это потому что tf.contrib.tpu.keras_to_tpu_model( ) 'требуется модель Tenorsflow версии, а не версия Keras.

Например, используйте from tensorflow.keras.layers import Dense, Activation вместо. И так далее.

Другие вопросы по тегам