3 回答

TA貢獻1871條經驗 獲得超8個贊
最后,在 Tensorflow 2.1.0 中添加了對 TPU 的支持(截至 2020 年 1 月 8 日)。從這里的發行說明https://github.com/tensorflow/tensorflow/releases/tag/v2.1.0:
對 Keras .compile、.fit、.evaluate 和 .predict 的實驗性支持適用于 Cloud TPU、Cloud TPU,適用于所有類型的 Keras 模型(順序、功能和子類模型)。
該教程可在此處獲得:https ://www.tensorflow.org/guide/tpu
為了完整起見,我將在此處添加演練:
轉到 Google Colab 并在此處創建一個新的 Python 3 Notebook:https ://colab.research.google.com/
在工具欄中,單擊運行時/更改運行時類型,然后在硬件加速器下選擇“TPU”。
將以下代碼復制并粘貼到筆記本中,然后單擊運行單元(播放按鈕)。
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
import os
import tensorflow_datasets as tfds
# Distribution strategies
resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='grpc://' + os.environ['COLAB_TPU_ADDR'])
tf.config.experimental_connect_to_cluster(resolver)
tf.tpu.experimental.initialize_tpu_system(resolver)
# MNIST model
def create_model():
return tf.keras.Sequential(
[tf.keras.layers.Conv2D(32, 3, activation='relu', input_shape=(28, 28, 1)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10)])
# Input datasets
def get_dataset(batch_size=200):
datasets, info = tfds.load(name='mnist', with_info=True, as_supervised=True,
try_gcs=True)
mnist_train, mnist_test = datasets['train'], datasets['test']
def scale(image, label):
image = tf.cast(image, tf.float32)
image /= 255.0
return image, label
train_dataset = mnist_train.map(scale).shuffle(10000).batch(batch_size)
test_dataset = mnist_test.map(scale).batch(batch_size)
return train_dataset, test_dataset
# Create and train a model
strategy = tf.distribute.experimental.TPUStrategy(resolver)
with strategy.scope():
model = create_model()
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['sparse_categorical_accuracy'])
train_dataset, test_dataset = get_dataset()
model.fit(train_dataset,
epochs=5,
validation_data=test_dataset,steps_per_epoch=50)
請注意,當我按原樣運行 tensorflow 教程中的代碼時,會出現以下錯誤。我已經通過在 model.fit() 中添加 steps_per_epoch 參數來糾正這個問題
ValueError:無法從數據中推斷出步數,請傳遞 steps_per_epoch 參數。

TA貢獻1825條經驗 獲得超4個贊
首先,教程中給出的代碼與 2.x 不兼容
在colab中需要選擇runtime作為TPU才能在TPU中執行代碼
對于錯誤
AttributeError:模塊“張量流”沒有屬性“會話”
您需要
tf.compat.v1.Session()
按tf.session
已棄用的方式使用。代替
tf.contrib.cluster_resolver
請使用tf.distribute.cluster_resolver
請參考 Tensorflow Addon-repo將代碼從 1.x 轉換為 2.x 兼容。
添加回答
舉報