gpt4 book ai didi

python - 如何在 TPU 的其他模型中使用 keras 模型

转载 作者:行者123 更新时间:2023-12-05 07:25:31 27 4
gpt4 key购买 nike

我正在尝试将 keras 模型转换为 google colab 中的 tpu 模型,但该模型内部有另一个模型。

看一下代码: https://colab.research.google.com/drive/1EmIrheKnrNYNNHPp0J7EBjw2WjsPXFVJ

这是 google tpu 文档中示例之一的修改版本: https://colab.research.google.com/github/tensorflow/tpu/blob/master/tools/colab/fashion_mnist.ipynb

如果 sub_model 被转换并直接使用它可以工作,但如果子模型在另一个模型内部则不起作用。我需要网络的子模型类型,因为我正在尝试训练一个内部有 2 个网络的 GAN 网络 (gan=generator+discriminator),所以如果这个测试有效,它可能也适用于 gan。

我试过几种方法:

  • 在不转换子模型的情况下将模型转换为 tpu,在这种情况下,当训练开始时会提示与子模型的输入相关的错误。
  • 将模型和子模型都转换为tpu,在这种情况下,转换“父”模型时会提示错误,异常仅在末尾显示“层”。
  • 仅将子模型转换为 tpu,在这种情况下不会提示错误,但 tpu 不会加速训练,而且速度非常慢,就像根本没有转换为 tpu 一样。
  • 无论是否使用固定批量大小,结果都相同,模型不起作用。

有什么想法吗?非常感谢。

最佳答案

首先在 tpu 上分割成部分只使用子模型。然后放一些简单的东西而不是子模型,并在 TPU 中使用该模型。如果这不起作用,请创建一些非常简单的东西,其中包括与您确定正在工作的模型相似的结构,然后逐步添加东西以收敛您想要在 TPU 中使用的复杂模型。

我正在为这些事情而苦苦挣扎。我在一开始使用 MNIST 所做的是训练模型并获得外部系数,自己重写 relu dense dropout 和 NN 矩阵并使用 numpy 运行模型,然后使用 cupy 然后使用 pyopencl 然后我用我自己的原始 cuda C 和替换函数opencl 的功能使我可以更深入、更简单地在某些东西不起作用时找出问题所在。最后我写了我的遗传选择性训练算法并学到了很多东西。

最重要的是,它让我有机会尝试一些疯狂的想法来训练、建模、操纵和理解 NN 咖啡。

我认为问题是 TF - Keras 等级别太高。优化器 - 求解器,未知数太多。甚至神经网络也不受控制。 GAN 是有问题的,因为训练它不会每次都收敛,大部分时间需要几天的时间来训练。就算练。你不知道它是如何收敛的。大多数技巧 - 保护您免受梯度消失的技术没有数学支持,但它们的效果非常惊人。 (?!?)

** 逐步深入和复杂化。遵循您尽可能多地理解的练习**这将花费一些时间和精力,但我认为您将受益匪浅。

关于python - 如何在 TPU 的其他模型中使用 keras 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54739645/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com