这是我的代码
random = tf.random.Generator.from_seed(42)
random = random.normal(shape=(2,2))
但是我得到了这个错误:
tensorflow.python.framework.errors_impl.NotFoundError: No registered 'RngReadAndSkip'
OpKernel for 'GPU' devices compatible with node {{node RngReadAndSkip}}. Registered: device='CPU'
发生这种情况是因为一些 TF/Keras 高级方法没有在 tensorflow-metal 中实现。您可以尝试这个解决方法:
with tf.device('/cpu:0'):
... # your code which need RngReadAndSkip low-level method here
接下来你可以正常做其他事情(使用 GPU)。
希望,Apple 有一天会修复它(还有他们的其他大量错误,lmao)
正如在另一个问题中回答的那样,但是我花了很长时间才得到一个我认为值得在这里分享的解决方案。
如 apple developer webpage 所建议,RngReadAndSkip 在 tensorflow-metal==0.5.1 的 GPU 上注册
我从 tensorflow-metal 0.5 升级到 tensorflow-metal 0.5.1,现在可以用了。
此外,我按照 apple 提供的说明按照表格对齐版本。
按照 apple 提供的说明,我得到了更高的 tensor flow-macos 和 tensorflow-metal 版本,我不得不降级到表中列出的版本。
我也弄乱了 python 版本,从 3.10 到 3.8,但不确定它做了什么。
希望对您有所帮助。