google-colaboratory - 如何使 TensorFlow SimpleRNN 静态以在 Colab TPU 上进行训练?
问题描述
从 TPU 常见问题解答中阅读以下内容:https ://cloud.google.com/tpu/docs/faq
我可以在 Compute Engine 上训练循环神经网络 (RNN) 吗?在某些配置中,tf.static_rnn() 和 tf.dynamic_rnn() 与当前的 TPU 执行引擎兼容。更一般地说,TPU 支持 tf.while_loop() 和 TensorArray,它们用于实现 tf.dynamic_rnn()。TPU 不支持诸如 CuDNN 之类的专用工具包,因为它们包含特定于 GPU 的代码。在 TPU 上使用 tf.while_loop() 确实需要指定循环迭代次数的上限,以便 TPU 执行引擎可以静态确定内存使用情况。
如何使我的 SimpleRNN 静态或有效以在 Colab TPU 上运行?
Colab TPU 代码
import tensorflow as tf
import os
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, SimpleRNN
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)
print("All devices: ", tf.config.list_logical_devices('TPU'))
strategy = tf.distribute.TPUStrategy(resolver)
with strategy.scope():
model = Sequential()
model.add(SimpleRNN(units=32, input_shape=(1,step), activation="relu"))
model.add(Dense(16, activation="relu"))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='rmsprop')
model.fit(X,y, epochs=50, batch_size=16, verbose=0)
解决方案
推荐阅读
- javascript - 将文件作为 JSON 上传到 Python 网络服务器
- javascript - 用 mySql 结果刷新 div
- c - 如何在 sscanf 中使用 set scanset 读取 0-9 等数字
- java - 迭代缓存时,Ignite 消耗所有内存并因 OutOfMemory 失败
- c# - 如何对所有文件进行 VScode .net 核心调试,而不仅仅是选定的文件
- python - pandas.DataFrame 列中值组合的可能性
- android - 两天之间难以从 Sqlite 数据库中获取数据
- google-sheets - 如何将多行应用于下拉菜单-Google-Spreadsheet 的条件选择?
- python - 如何使用 Python 连接到 Oracle hyperion (HFM)?
- javascript - 单引号 (') 后的原子红色突出显示