3 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
最后,在 Tensorflow 2.1.0 中添加了對(duì) TPU 的支持(截至 2020 年 1 月 8 日)。從這里的發(fā)行說明https://github.com/tensorflow/tensorflow/releases/tag/v2.1.0:
對(duì) Keras .compile、.fit、.evaluate 和 .predict 的實(shí)驗(yàn)性支持適用于 Cloud TPU、Cloud TPU,適用于所有類型的 Keras 模型(順序、功能和子類模型)。
該教程可在此處獲得:https ://www.tensorflow.org/guide/tpu
為了完整起見,我將在此處添加演練:
轉(zhuǎn)到 Google Colab 并在此處創(chuàng)建一個(gè)新的 Python 3 Notebook:https ://colab.research.google.com/
在工具欄中,單擊運(yùn)行時(shí)/更改運(yùn)行時(shí)類型,然后在硬件加速器下選擇“TPU”。
將以下代碼復(fù)制并粘貼到筆記本中,然后單擊運(yùn)行單元(播放按鈕)。
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)
請(qǐng)注意,當(dāng)我按原樣運(yùn)行 tensorflow 教程中的代碼時(shí),會(huì)出現(xiàn)以下錯(cuò)誤。我已經(jīng)通過在 model.fit() 中添加 steps_per_epoch 參數(shù)來糾正這個(gè)問題
ValueError:無法從數(shù)據(jù)中推斷出步數(shù),請(qǐng)傳遞 steps_per_epoch 參數(shù)。

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