Как преобразовать модель 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
вместо. И так далее.